C# 将文件搜索到Ntfs
我是Pinvoke的新手。我想得到mft后,我找到根时,我可以访问目录。 我想使用C# 将文件搜索到Ntfs,c#,pinvoke,C#,Pinvoke,我是Pinvoke的新手。我想得到mft后,我找到根时,我可以访问目录。 我想使用DeviceIoControl,例如下面的代码: BOOL DeviceIoControl( (HANDLE) hDevice, // handle to device FSCTL_GET_NTFS_VOLUME_DATA, // dwIoControlCode NULL, // lpInBuffer 0,
DeviceIoControl
,例如下面的代码:
BOOL DeviceIoControl(
(HANDLE) hDevice, // handle to device
FSCTL_GET_NTFS_VOLUME_DATA, // dwIoControlCode
NULL, // lpInBuffer
0, // nInBufferSize
(LPVOID) lpOutBuffer, // output buffer
(DWORD) nOutBufferSize, // size of output buffer
(LPDWORD) lpBytesReturned, // number of bytes returned
(LPOVERLAPPED) lpOverlapped // OVERLAPPED structure
);
我不知道FSCTL\u GET\u NTFS\u VOLUME\u DATA
的值是多少,它将WinIoCtl.h
列为相关的头。当我们查看宏声明时,我们会看到:
#define FSCTL_GET_NTFS_VOLUME_DATA \
CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 25, METHOD_BUFFERED, FILE_ANY_ACCESS)
这给我们留下了一点工作要做。执行此操作的惰性方法是编写程序以发出值:
#include <Windows.h>
#include <iostream>
#include <iomanip>
int main()
{
DWORD code = FSCTL_GET_NTFS_VOLUME_DATA;
std::cout << "0x" << std::hex << std::setfill('0') << std::setw(8) << code;
return 0;
}
#包括
#包括
#包括
int main()
{
DWORD代码=FSCTL\u GET\u NTFS\u VOLUME\u数据;
std::我可以给你这个号码,但我认为解释一下如何自己掌握它会更有帮助。然后你可以找到你可能需要的任何其他FSCTL代码值。
0x00090064