搜索文件到Ntfs

本文关键字:Ntfs 文件 搜索 | 更新日期: 2023-09-27 17:49:43

我是Pinvoke的新手。我想得到mft后,我找到根,当我可以访问目录。我想使用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_GET_NTFS_VOLUME_DATA的值

搜索文件到Ntfs

文档将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;
}

输出我们想要的值:

<>之前0 x00090064