You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.15 11:18:03