我正在尝试阅读 NTFS 更改日志,但我注意到我能找到的所有示例代码在 Windows 10 上都失败了,即使它在 Windows 7 上也能运行。
例如,Microsoft 自己的示例Walking a Buffer of Change Journal Records可在 Windows 7 上运行,但是当我在 Windows 10 上运行相同的代码时,当我使用 FSCTL_READ_USN_JOURNAL 调用 DeviceIoControl 时,我收到错误 87(参数不正确)(请注意,前面的调用到 DeviceIoControl 与 FSCTL_QUERY_USN_JOURNAL 成功完成并返回有效数据。)。
我什至将 EXE 编译并在 Windows 7 上运行并将其复制到 Windows 10 机器,但它仍然失败,所以我相信 Windows 10 可能对参数验证或类似的东西更严格?
我以管理员身份运行代码,所以这不是问题。
我找不到对此问题的任何其他引用,但是如果我采用其他人的示例代码并尝试在 Windows 10 上运行它,我会遇到同样的问题。
编辑:
代码本身:
#include <Windows.h>
#include <WinIoCtl.h>
#include <stdio.h>
#define BUF_LEN 4096
void main()
{
HANDLE hVol;
CHAR Buffer[BUF_LEN];
USN_JOURNAL_DATA JournalData;
READ_USN_JOURNAL_DATA ReadData = {0, 0xFFFFFFFF, FALSE, 0, 0};
PUSN_RECORD …Run Code Online (Sandbox Code Playgroud)