Je pensais que cela fonctionnait, mais apparemment pas. J'ai découvert que, en utilisant la commande mountvol.exe, le point de montage pour mon lecteur C: \ est:Obtenir le GUID de volume NTFS à partir de la lettre de lecteur
\\?\Volume{f993747a-5d7a-4de1-a97a-c20c1af1ba02}\
Cet ID de volume est en contradiction avec la sortie de ce code me donne:
#include "stdafx.h"
#include <stdio.h>
#include <tchar.h>
#include <ole2.h>
int _tmain(int argc, _TCHAR* argv[])
{
HANDLE h = CreateFile(L"C:", 0,
FILE_SHARE_READ, NULL,
OPEN_EXISTING, FILE_FLAG_BACKUP_SEMANTICS, NULL);
FILE_OBJECTID_BUFFER buf;
DWORD cbOut;
DeviceIoControl(h, FSCTL_CREATE_OR_GET_OBJECT_ID, NULL, 0, &buf, sizeof(buf), &cbOut, NULL);
GUID guid;
CopyMemory(&guid, &buf.ObjectId, sizeof(GUID));
WCHAR szGuid[39];
StringFromGUID2(guid, szGuid, 39);
_tprintf(_T("GUID is %ws\n"), szGuid);
CloseHandle(h);
getchar();
}
qui est similaire à un code que j'ai trouvé en ligne. Il imprime "GUID is {5FC6F114-D10D-11E4-8278-E8B1FC697FA2}" qui semble être incorrect.
Des idées?
Vérifier les valeurs de retour de '' CreateFile' et DeviceIOControl'. Le GUID que vous imprimez peut simplement être de la mémoire non initialisée. –