簡體   English   中英

是什么導致EnumProcesses()失敗?

[英]What may cause EnumProcesses() to fail?

文檔指出:

如果函數失敗,則返回值為零。 要獲取擴展的錯誤信息,請調用GetLastError。

但是它沒有給出任何示例說明該函數可能如何失敗。

對於單元測試,我需要可靠地創建一種使EnumProcesses()失敗的情況。

與大多數函數一樣,如果傳遞無效參數,它可能會失敗。 在這種情況下,這意味着PID數組的大小小於您告訴它的大小,或者它的接收計數為NULL指針。 故意執行此操作有點冒險,因為您不知道該函數是否使用SEH來防止此攻擊或是否會崩潰。

在內部,函數必須在調用NTDLL之前獲取一些內存,以獲取進程信息,如果沒有足夠的可用內存,這可能導致函數失敗。

無論如何,您應該在輔助函數中調用EnumProcesses來抽象出內存/重試詳細信息,這將是在需要時模擬故障的好地方。

如果您絕對需要函數本身失敗,則可以使用Microsoft Detours或IAT掛鈎之類的方法對其進行掛鈎...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM