ファイル名のリストを取得するために MFT を列挙しようとしています。
このコードは、Win32 プロジェクトで使用すると機能します。
MFT_ENUM_DATA med;
med.StartFileReferenceNumber = 0;
med.LowUsn = 0;
med.HighUsn = ujd.NextUsn;
BYTE pData[sizeof(DWORDLONG) + 0x10000];
DWORD cb;
while (DeviceIoControl(handleToVolume, FSCTL_ENUM_USN_DATA, &med, sizeof(med),
pData, sizeof(pData), &cb, NULL) != FALSE) {
//do the processing
}
しかし、C++/CLI で同じコードを使用すると、DeviceIoControl
falseGetLastError
が返され、ERROR_INVALID_FUNCTION が返されます。同じコードを C# に変換すると、機能します。
何が起こっているのですか?