我对 Windows Native API 很好奇。我一直在网上搜索,但未能找到从用户模式调用本机 API 函数的示例。我相信我已经基本掌握了这意味着什么——具体来说,我必须在我的程序中定义常量和原生 API 函数,并使用 GetProcAddress 在 ntdll.dll 中找到该函数,然后调用该函数。
这是正确的,任何人都可以引导我朝着正确的方向前进吗?示例代码会让我很开心,因为我绝对找不到。
我在这里遇到了这段代码(http://www.eggheadcafe.com/software/aspnet/31520494/native-application--ntc.aspx),但在我看来,它打算在内核模式下运行:
NTSTATUS ntStatus = STATUS_SUCCESS;
UNICODE_STRING szPath = {0};
OBJECT_ATTRIBUTES Attr = {0};
IO_STATUS_BLOCK IoStatusBlock = {0};
HANDLE hBeep = 0;
RtlInitUnicodeString(&szPath, L"\\??\\C:\\A.TXT");
InitializeObjectAttributes(&Attr, &szPath, 0, NULL, NULL);
ntStatus = NtCreateFile(&hBeep, GENERIC_READ, &Attr, &IoStatusBlock, NULL,
0, FILE_SHARE_READ, FILE_OPEN, 0, NULL, 0);
if (hBeep != NULL)
{
NtClose(ntStatus);
如何修改此代码以在用户模式下运行?我正在使用 c++,正如您可能已经推测到的那样。
提前致谢。