调用NtAllocateVirtualMemory返回STATUS_INVALID_PARAMETER失败的问题求助
调用NtAllocateVirtualMemory返回STATUS_INVALID_PARAMETER失败的问题求助
嘿各位大佬,最近我在折腾Windows NT的API,想多熟悉下它们的用法和底层逻辑,结果调用NtAllocateVirtualMemory的时候直接踩坑了——API返回了STATUS_INVALID_PARAMETER错误,试了好多次都没搞定,来求帮忙排查下问题!
我写的代码是这样的:
int main() { char* myBuffer = NULL; long allocationSize = 1024; pNtAllocateVirtualMemory ntVirtualAlloc = (pNtAllocateVirtualMemory)GetProcAddress(GetModuleHandleA("ntdll"), "NtAllocateVirtualMemory"); NTSTATUS st = ntVirtualAlloc(GetCurrentProcess(), &(PVOID)myBuffer, 0, &allocationSize, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE); printf("%d", st); }
运行后这个API就失败了,返回的NTSTATUS是STATUS_INVALID_PARAMETER。之后我特意仔细核对了函数的原型:
__kernel_entry NTSYSCALLAPI NTSTATUS NtAllocateVirtualMemory( [in] HANDLE ProcessHandle, [in, out] PVOID *BaseAddress, ...
我反复对比了自己传的参数,但还是没找出哪里不对,有没有大佬能帮我看看问题出在哪呀?
备注:内容来源于stack exchange,提问作者EfM
相关产品推荐
相关产品推荐

