为什么返回错误号0xc0000024?

为什么返回错误号0xc0000024?,c,reverse-engineering,C,Reverse Engineering,我想调用NtOpensection,但返回0xc0000024错误 UNICODE_STRING ObFileName; OBJECT_ATTRIBUTES objA; HANDLE hSectionHandle = NULL; RtlInitUnicodeString(&ObFileName, L"\\??\\E:\\Myfile.dat"); InitializeObjectAttributes(&objA, &ObFileName, OBJ_CASE_INSENS

我想调用NtOpensection,但返回0xc0000024错误

UNICODE_STRING ObFileName;
OBJECT_ATTRIBUTES objA;
HANDLE hSectionHandle = NULL;

RtlInitUnicodeString(&ObFileName, L"\\??\\E:\\Myfile.dat");
InitializeObjectAttributes(&objA, &ObFileName, OBJ_CASE_INSENSITIVE, (HANDLE)NULL, (PSECURITY_DESCRIPTOR)NULL);
NTSTATUS ntStatus = _NtOpenSection(&hSectionHandle, SECTION_MAP_READ | SECTION_MAP_WRITE, &objA);

至于错误的含义,您可以检查:

|===============================|=====================================================|
|0xC0000024 |{错误类型}类型之间不匹配|
|所请求对象所需对象的状态_对象_类型|不匹配||
||操作和使用的对象类型|
||在请求中指定|
|===============================|=====================================================|

至于为什么会发生这种情况,由你来决定。确保<代码> \ \\e:\MyField.dAT“/Cord>是有效的节对象的有效名称。< /P>是C还是C++?不可能两者都有!错误的对象类型。该字符串与有效的节对象名称不完全相同,我的水晶球表明您打算使用NtCreateSection()。如何确定“\\??\\E:\\Myfile.dat”是有效节对象的有效名称?