如果函数失败,则返回值为零。要获得扩展错误 信息,调用GetLastError。
但它并没有举例说明该功能可能如何失败。
对于单元测试,我需要可靠地创建使EnumProcesses()
失败的情况。
答案 0 :(得分:3)
与大多数函数一样,如果传递无效参数,它可能会失败。在这种情况下,这意味着比您告诉它的大小更小的PID数组或接收计数的NULL指针。这样做有点冒险,因为你不知道该函数是否使用SEH来防止这种情况或是否会崩溃。
在内部,函数必须在调用NTDLL之前分配一些内存来获取进程信息,如果内存不足,这可能导致函数失败。
您应该在辅助函数中调用EnumProcesses来抽象出内存/重试细节,这将是在需要时模拟失败的好地方。
如果你绝对需要函数本身失败,你可以用微软Detours或IAT钩子挂钩...