相关文章推荐
有腹肌的火腿肠  ·  enumProcessModules ...·  6 月前    · 
有腹肌的火腿肠  ·  CharUpperA ...·  6 月前    · 
有腹肌的火腿肠  ·  SetWindowsHookExA ...·  6 月前    · 
有腹肌的火腿肠  ·  GetProcessVersion ...·  6 月前    · 
包含快照集中 th32ProcessID 中指定的進程的所有模組。 若要列舉模組,請參閱 Module32First 。 如果函式因 ERROR_BAD_LENGTH 而失敗,請重試函式,直到函式成功為止。 64 位 Windows: 在 32 位進程中使用此旗標包含 th32ProcessID 中所指定進程的 32 位模組,而在 64 位進程中使用它則包含 64 位模組。 若要從 64 位進程包含 th32ProcessID 中指定的進程 32 位模組,請使用 TH32CS_SNAPMODULE32 旗標。

[in] th32ProcessID

要包含在快照集之進程的進程識別碼。 此參數可以是零,表示目前的進程。 指定 TH32CS_SNAPHEAPLIST TH32CS_SNAPMODULE TH32CS_SNAPMODULE32 TH32CS_SNAPALL 值時,會使用此參數。 否則會忽略它,而且所有進程都會包含在快照集內。

如果指定的進程是閒置進程或其中一個 CSRSS 進程,則此函式會失敗,而且最後一個錯誤碼 會ERROR_ACCESS_DENIED ,因為其存取限制會防止使用者層級的程式碼開啟它們。

如果指定的進程是 64 位進程,而呼叫端是 32 位進程,則此函式會失敗,而且最後一個錯誤碼 會ERROR_PARTIAL_COPY ( 299) 。

如果函式成功,它會傳回指定快照集的開啟控制碼。

如果函式失敗,它會傳回 INVALID_HANDLE_VALUE 。 若要取得擴充的錯誤資訊,請呼叫 GetLastError 。 可能的錯誤碼包括 ERROR_BAD_LENGTH

此函式所擷取的快照集會由其他工具說明函式檢查,以提供其結果。 快照集的存取權是唯讀的。 快照集控制碼可作為物件控制碼,而且受限於與它有效的進程和執行緒相同的規則。

若要列舉所有進程的堆積或模組狀態,請指定 TH32CS_SNAPALL 並將 th32ProcessID 設定為零。 然後,針對快照集中的每個額外進程,再次呼叫 CreateToolhelp32Snapshot ,並指定其進程識別碼和 TH32CS_SNAPHEAPLIST TH32_SNAPMODULE 值。

擷取包含目前進程以外進程的堆積和模組的快照集時, CreateToolhelp32Snapshot 函式可能會失敗,或基於各種原因傳回不正確的資訊。 例如,如果目標進程中的載入器資料表已損毀或未初始化,或模組清單在函式呼叫期間因載入或卸載 DLL 而變更,則函式可能會失敗, 並出現ERROR_BAD_LENGTH 或其他錯誤碼。 請確定目標進程未處於暫停狀態,並再次嘗試呼叫函式。 如果使用 TH32CS_SNAPMODULE TH32CS_SNAPMODULE32 呼叫函式 時,ERROR_BAD_LENGTH失敗,請再次呼叫函式,直到函式成功為止。

TH32CS_SNAPMODULE TH32CS_SNAPMODULE32 旗標不會擷取以 LOAD_LIBRARY_AS_DATAFILE 或類似旗標載入之模組的控制碼。 如需詳細資訊,請參閱 LoadLibraryEx

若要終結快照集,請使用 CloseHandle 函式

請注意,您可以使用 QueryFullProcessImageName 函式,從 32 位進程擷取 32 位和 64 位進程的可執行檔映射完整名稱。

如需範例,請參閱 擷取快照集和檢視程式