共用方式為


應用程式驗證程式 - 停止代碼 - 其他

下列停止代碼包含在這組測試中。

TerminateThread 危險呼叫。

可能的原因

如果執行緒 (執行緒識別碼為 parameter1,) 使用 TerminateThread 明確終止,就會產生此停止。此函式非常危險,因為它會根據 MSDN) 引進資料損毀和死結 (。

應用程式驗證器所顯示的資訊
  • 參數 1 -   Terminatethread 呼叫端的執行緒識別碼。
  • 參數 2 -   未使用。
  • 參數 3 -   未使用。
  • 參數 4 -   未使用。

其他資訊
  • 測試層: 危險
  • 停止識別碼: TERMINATE_THREAD_CALL
  • 停止程式碼: 100NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

低記憶體狀況的潛在堆疊溢位。

可能的原因

如果執行緒的初始堆疊認可大小如此一來,如果堆疊無法擴充,就會在低記憶體狀況中引發堆疊溢位,就會產生此停止。

應用程式驗證器所顯示的資訊
  • 參數 1 -   未使用。
  • 參數 2 -   未使用。
  • 參數 3 -   未使用。
  • 參數 4 -   未使用。

其他資訊
  • 測試層: 危險
  • 停止識別碼: STACK_OVERFLOW
  • 停止程式碼: 100NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

在多個執行緒仍在執行時呼叫 ExitProcess。

可能的原因

如果執行緒在有數個執行緒執行時呼叫 ExitProcess,就會產生此停止。 在這種情況下,會針對每個執行緒呼叫內部 TerminateThread,這可以建立死結或資料損毀。

應用程式驗證器所顯示的資訊
  • 參數 1 -   執行中的執行緒數目。
  • 參數 2 -   未使用。
  • 參數 3 -   未使用。
  • 參數 4 -   未使用。

其他資訊
  • 測試層: 危險
  • 停止識別碼: INVALID_EXIT_PROCESS_CALL
  • 停止程式碼: 100NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

LoadLibrary 會在 DllMain 期間呼叫。

可能的原因

如果 DllMain 內的程式碼呼叫 LoadLibrary 或 FreeLibary,就會產生此停止。 這是 MSDN 禁止的行為。

應用程式驗證器所顯示的資訊
  • 參數 1 -   Dll 名稱 (使用 du 傾印) 。
  • 參數 2 -   Dll 基底位址。
  • 參數 3 -   未使用。
  • 參數 4 -   未使用。

其他資訊
  • 測試層: 危險
  • 停止識別碼: INVALID_LOAD_LIBRARY_CALL
  • 停止程式碼: 100NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

FreeLibrary 會在 DllMain 期間呼叫。

可能的原因

如果 DllMain 內的程式碼呼叫 LoadLibrary 或 FreeLibary,就會產生此停止。 這是 MSDN 禁止的行為。

應用程式驗證器所顯示的資訊
  • 參數 1 -   Dll 名稱 (使用 du 傾印) 。
  • 參數 2 -   Dll 基底位址。
  • 參數 3 -   未使用。
  • 參數 4 -   未使用。

其他資訊
  • 測試層: 危險
  • 停止識別碼: INVALID_FREE_LIBRARY_CALL
  • 停止程式碼: 100NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

使用 MinimumWorkingSetSize = 0xFFFFFFFF呼叫 SetProcessWorkingSetSize。

可能的原因

請使用 MinimumWorkingSetSize = (SIZE_T) -1。

應用程式驗證器顯示的資訊
  • 參數 1 -   未使用。
  • 參數 2 -   未使用。
  • 參數 3 -   未使用。
  • 參數 4 -   未使用。

其他資訊
  • 測試層: 危險
  • 停止識別碼: INVALID_MINIMUM_PROCESS_WORKING_SIZE
  • 停止程式碼: 100NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄到檔案: 是的
  • 建立回溯: 是的

使用 MaximumWorkingSetSize = 0xFFFFFFFF呼叫 SetProcessWorkingSetSize。

可能的原因

請使用 MaximumWorkingSetSize = (SIZE_T) -1。

應用程式驗證器顯示的資訊
  • 參數 1 -   未使用。
  • 參數 2 -   未使用。
  • 參數 3 -   未使用。
  • 參數 4 -   未使用。

其他資訊
  • 測試層: 危險
  • 停止識別碼: INVALID_MAXIMUM_PROCESS_WORKING_SIZE
  • 停止程式碼: 100NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄到檔案: 是的
  • 建立回溯: 是的

使用 MinimumWorkingSetSize = 0xFFFFFFFF 呼叫 SetProcessWorkingSetSizeEx。

可能的原因

請使用 MinimumWorkingSetSize = (SIZE_T) -1。

應用程式驗證器顯示的資訊
  • 參數 1 -   未使用。
  • 參數 2 -   未使用。
  • 參數 3 -   未使用。
  • 參數 4 -   未使用。

其他資訊
  • 測試層: 危險
  • 停止識別碼: INVALID_MINIMUM_PROCESS_WORKING_SIZE_EX
  • 停止程式碼: 100NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄到檔案: 是的
  • 建立回溯: 是的

使用 MaximumWorkingSetSize = 0xFFFFFFFF 呼叫 SetProcessWorkingSetSizeEx。

可能的原因

請使用 MaximumWorkingSetSize = (SIZE_T) -1。

應用程式驗證器顯示的資訊
  • 參數 1 -   未使用。
  • 參數 2 -   未使用。
  • 參數 3 -   未使用。
  • 參數 4 -   未使用。

其他資訊
  • 測試層: 危險
  • 停止識別碼: INVALID_MAXIMUM_PROCESS_WORKING_SIZE_EX
  • 停止程式碼: 100NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄到檔案: 是的
  • 建立回溯: 是的

執行緒無法擁有重要區段。

可能的原因

如果執行緒 (執行緒識別碼為 parameter1,) 終止、暫停或處於狀態, (背景工作執行緒完成工作專案) 無法保存重要區段,就會產生此停止。 目前的執行緒是原因。 若要偵錯此停止,請使用下列偵錯工具命令:$ kb - 以取得目前的堆疊追蹤。 如果目前的執行緒是重要區段的擁有者,則可能呼叫 ExitThread。 目前的執行緒應該已釋放重要區段,然後再結束。 如果目前的執行緒呼叫 TerminateThread 或 SuspendThread,則不應該對持有重要區段的執行緒執行此動作。 $ !cs -s parameter2 - 傾印此重要區段的相關資訊。 $ ln 參數2 - 顯示重要區段位址附近的符號。 這應該有助於識別外泄的重要區段。 $ dps 參數4 - 傾印此重要區段初始化的堆疊追蹤。

應用程式驗證器顯示的資訊
  • 參數 1 -   Thread ID。
  • 參數 2 -   Critical 區段位址。
  • 參數 3 -   Critical 區段偵錯資訊位址。
  • 參數 4 -   Critical 區段初始化堆疊追蹤。

其他資訊
  • 測試層: 鎖
  • 停止識別碼: EXIT_THREAD_OWNS_LOCK
  • 停止程式碼: 200NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄到檔案: 是的
  • 建立回溯: 是的

卸載包含作用中關鍵區段的 DLL。

可能的原因

如果 DLL 具有包含重要區段且 DLL 已卸載但尚未刪除重要區段的全域變數,就會產生此停止。 若要偵錯此停止,請使用下列偵錯工具命令:$ du parameter3 - 傾印提示 DLL 的名稱。 $ .reload dllname 或 .reload dllname = parameter4 - 重載該 DLL 的符號。 $ !cs -s parameter1 - 傾印此重要區段的相關資訊。 $ ln parameter1 - 顯示重要區段位址附近的符號。 這應該有助於識別外泄的重要區段。 $ dps parameter2 - 傾印此重要區段初始化的堆疊追蹤。

應用程式驗證器顯示的資訊
  • 參數 1 -   Critical 區段位址。
  • 參數 2 -   Critical 區段初始化堆疊追蹤。
  • 參數 3 -   DLL 名稱位址。
  • 參數 4 -   DLL 基底位址。

其他資訊
  • 測試層: 鎖
  • 停止識別碼: LOCK_IN_UNLOADED_DLL
  • 停止程式碼: 200NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄到檔案: 是的
  • 建立回溯: 是的

釋放包含作用中關鍵區段的堆積區塊。

可能的原因

如果堆積配置包含重要區段,則會產生此停止,配置會釋放,而且尚未刪除重要區段。 若要偵錯此停止,請使用下列偵錯工具命令:$ !cs -s parameter1 - 傾印此重要區段的相關資訊。 $ ln parameter1 - 顯示重要區段位址附近的符號。 這應該有助於識別外泄的重要區段。 $ dps parameter2 - 傾印此重要區段初始化的堆疊追蹤。 $ parameter3 和 parameter4 可能有助於瞭解此堆積區塊的配置位置, (配置的大小可能很重要) 。

應用程式驗證器顯示的資訊
  • 參數 1 -   Critical 區段位址。
  • 參數 2 -   Critical 區段初始化堆疊追蹤。
  • 參數 3 -   Heap 區塊位址。
  • 參數 4 -   Heap 區塊大小。

其他資訊
  • 測試層: 鎖
  • 停止識別碼: LOCK_IN_FREED_HEAP
  • 停止程式碼: 200NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄到檔案: 是的
  • 建立回溯: 是的

雙重初始化或損毀的重要區段。

可能的原因

如果重要區段已初始化一次以上,通常會產生此停止。 在此情況下,parameter3 和 parameter4 是這兩個初始化的堆疊追蹤位址。 有時候,如果重大區段或其偵錯資訊結構已損毀,就可以停止此動作。 在此第二個案例中,parameter3 和 parameter4 可能無效且無用。 若要偵錯此停止:$ !cs -s -d parameter2 - 傾印此重要區段的相關資訊。 $ ln parameter1 - 顯示重要區段位址附近的符號。 如果這是全域變數,這可能有助於識別關鍵區段。 $ dps parameter3 和 dps parameter4 - 識別初始化此重要區段的兩個程式碼路徑。

應用程式驗證器顯示的資訊
  • 參數 1 -   Critical 區段位址。
  • 參數 2 -   使用中清單中找到的偵錯資訊結構的位址。
  • 參數 3 -   第一次初始化堆疊追蹤。
  • 參數 4 -   第二個初始化堆疊追蹤。

其他資訊
  • 測試層: 鎖
  • 停止識別碼: LOCK_DOUBLE_INITIALIZE
  • 停止程式碼: 200NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄到檔案: 是的
  • 建立回溯: 是的

包含作用中關鍵區段的可用記憶體。

可能的原因

如果釋放包含重要區段的記憶體,但尚未使用 DeleteCriticalSection 刪除重要區段,就會產生此停止。 若要偵錯此停止,請使用下列偵錯工具命令:$ !cs -s -d parameter2 - 傾印此重要區段的相關資訊。 $ dps 參數3 - 識別初始化此重要區段的程式碼路徑。 在大部分情況下,鎖定驗證器會偵測堆積配置、DLL 範圍、虛擬記憶體配置或 MapViewOfFile 對應記憶體範圍中立即流失的重要區段,並在這些情況下發出不同停止的問題。 因此,此驗證程式停止的案例很少。 鎖定必須位於核心模式程式碼釋放的記憶體範圍,或由 VirtualFreeEx 之類的 API 釋放跨進程。 如果先前的停止 (例如,LOCK_IN_FREED_HEAP或LOCK_IN_UNLOADED_DLL) 在偵錯工具主控台中按下 'g' 繼續,通常會遇到此停止。

應用程式驗證器顯示的資訊
  • 參數 1 -   Critical 區段位址。
  • 參數 2 -   Critical 區段偵錯資訊位址。
  • 參數 3 -   Critical 區段初始化堆疊追蹤。
  • 參數 4 -   未使用。

其他資訊
  • 測試層: 鎖
  • 停止識別碼: LOCK_IN_FREED_MEMORY
  • 停止程式碼: 200NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄到檔案: 是的
  • 建立回溯: 是的

損毀的重要區段。

可能的原因

如果重要區段的 DebugInfo 欄位指向釋放的記憶體,就會產生此停止。 通常會在作用中關鍵區段清單中找到另一個有效的 DebugInfo 結構。 如果沒有損毀,兩個指標應該相同。 若要偵錯此停止,請使用下列偵錯工具命令:$ !cs -s -d parameter3 - 根據使用中清單中找到之偵錯資訊結構的目前內容傾印資訊, (此結構很少損毀,因此通常此資訊值得信任) 。 $ !cs -s parameter1 - 根據重要區段結構的目前內容傾印此重要區段的資訊, (結構已損毀,因此有時此資訊不值得信任) 。 $ dps 參數4 - 識別初始化此重要區段的程式碼路徑。 在 address parameter1 傾印重要區段,並尋找損毀模式。 使用 ntdll.dl 的良好符號,您可以使用下列命令:$ dt ntdll!_RTL_CRITICAL_SECTION LOCK_ADDRESS $ dt ntdll!_RTL_CRITICAL_SECTION_DEBUG DEBUG_ADDRESS

應用程式驗證器顯示的資訊
  • 參數 1 -   Critical 區段位址。
  • 參數 2 -   這個重要區段的偵錯資訊位址無效。
  • 參數 3 -   使用中清單中找到的偵錯資訊位址。
  • 參數 4 -   初始化堆疊追蹤。

其他資訊
  • 測試層: 鎖
  • 停止識別碼: LOCK_CORRUPTED
  • 停止程式碼: 200NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

不正確重要區段擁有者執行緒。

可能的原因

如果目前內容中的擁有者執行緒識別碼無效,就會產生此停止。 若要偵錯此停止:$ !cs -s parameter1 - 傾印此重要區段的相關資訊。 $ ln parameter1 - 顯示重要區段位址附近的符號。 這應該有助於識別重要區段。

應用程式驗證器所顯示的資訊
  • 參數 1 -   Critical 區段位址。
  • 參數 2 -   擁有線程。
  • 參數 3 -   預期的擁有線程。
  • 參數 4 -   Critical 區段偵錯資訊位址。

其他資訊
  • 測試層: 鎖
  • 停止識別碼: LOCK_INVALID_OWNER
  • 停止程式碼: 200NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

不正確嚴重區段遞迴計數。

可能的原因

如果重大區段結構的遞迴計數位段在目前內容中無效,就會產生此停止。 若要偵錯此停止:$ !cs -s parameter1 - 傾印此重要區段的相關資訊。 $ ln parameter1 - 顯示重要區段位址附近的符號。 這應該有助於識別重要區段。

應用程式驗證器所顯示的資訊
  • 參數 1 -   Critical 區段位址。
  • 參數 2 -   Recursion 計數。
  • 參數 3 -   預期的遞迴計數。
  • 參數 4 -   Critical 區段偵錯資訊位址。

其他資訊
  • 測試層: 鎖
  • 停止識別碼: LOCK_INVALID_RECURSION_COUNT
  • 停止程式碼: 200NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

刪除具有無效鎖定計數的重要區段。

可能的原因

如果刪除重要區段,或重大區段未初始化,就會產生這個停止點。 若要偵錯此停止:$ !cs -s parameter1 - 傾印此重要區段的相關資訊。 如果擁有線程為 0,則重要區段尚未初始化。 $ ln parameter1 - 顯示重要區段位址附近的符號。 這應該有助於識別重要區段。

應用程式驗證器所顯示的資訊
  • 參數 1 -   Critical 區段位址。
  • 參數 2 -   Lock count。
  • 參數 3 -   預期的鎖定計數。
  • 參數 4 -   擁有線程。

其他資訊
  • 測試層: 鎖
  • 停止識別碼: LOCK_INVALID_LOCK_COUNT
  • 停止程式碼: 200NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

重大區段過度發行或損毀。

可能的原因

如果重大區段的發行次數超過目前線程取得的次數,就會產生此停止。 若要偵錯此停止:$ !cs -s parameter1 - 傾印此重要區段的相關資訊。 $ !cs -s -d parameter4 - 傾印有關此重要區段的資訊。 $ ln parameter1 - 顯示重要區段位址附近的符號。 這應該有助於識別重要區段。

應用程式驗證器所顯示的資訊
  • 參數 1 -   Critical 區段位址。
  • 參數 2 -   Lock count。
  • 參數 3 -   預期的鎖定計數。
  • 參數 4 -   Critical 區段偵錯資訊位址。

其他資訊
  • 測試層: 鎖
  • 停止識別碼: LOCK_OVER_RELEASED
  • 停止程式碼: 200NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

重大區段未初始化。

可能的原因

如果使用重要區段而不初始化,或在刪除該區段之後,就會產生此停止。 若要偵錯此停止:$ ln parameter1 - 顯示重要區段位址附近的符號。 這應該有助於識別重要區段。

應用程式驗證器所顯示的資訊
  • 參數 1 -   Critical 區段位址。
  • 參數 2 -   Critical 區段偵錯資訊位址。
  • 參數 3 -   未使用。
  • 參數 4 -   未使用。

其他資訊
  • 測試層: 鎖
  • 停止識別碼: LOCK_NOT_INITIALIZED
  • 停止程式碼: 200NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄到檔案: 是的
  • 建立回溯: 是的

重要區段已初始化。

可能的原因

如果目前線程重新初始化重要區段,就會產生此停止。 若要偵錯此停止:$ !cs -s parameter1 或 !cs -s -d parameter2 - 傾印此重要區段的相關資訊。 $ ln parameter1 - 顯示重要區段位址附近的符號。 如果這是全域變數,這可能有助於識別關鍵區段。 $ dps 參數3 - 識別此重要區段第一次初始化的程式碼路徑。 $ kb - 顯示目前的堆疊追蹤,也就是重新初始化此重要區段。

應用程式驗證器顯示的資訊
  • 參數 1 -   Critical 區段位址。
  • 參數 2 -   Critical 區段偵錯資訊位址。
  • 參數 3 -   第一次初始化堆疊追蹤。 如果非 Null,請使用 dps 來傾印
  • 參數 4 -   未使用。

其他資訊
  • 測試層: 鎖
  • 停止識別碼: LOCK_ALREADY_INITIALIZED
  • 停止程式碼: 200NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄到檔案: 是的
  • 建立回溯: 是的

釋放包含作用中關鍵區段的虛擬記憶體。

可能的原因

如果目前的執行緒在包含作用中關鍵區段的記憶體區塊上呼叫 VirtualFree,就會產生此停止。 如果釋放此記憶體,應用程式應該先在此重要區段上呼叫 DeleteCriticalSection。 $ kb - 顯示目前堆疊追蹤,也就是呼叫 VirtualFree。 可能是呼叫 VirtualFree 的 DLL。 $ !cs -s parameter1 - 傾印此重要區段的相關資訊。 $ dps parameter2 - 識別此重要區段初始化的程式碼路徑。

應用程式驗證器顯示的資訊
  • 參數 1 -   Critical 區段位址。
  • 參數 2 -   Critical 區段初始化堆疊追蹤。
  • 參數 3 -   Memory 區塊位址。
  • 參數 4 -   記憶體區塊大小。

其他資訊
  • 測試層: 鎖
  • 停止識別碼: LOCK_IN_FREED_VMEM
  • 停止程式碼: 200NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄到檔案: 是的
  • 建立回溯: 是的

取消對應包含作用中關鍵區段的記憶體區域。

可能的原因

如果目前的執行緒在包含作用中關鍵區段的記憶體區塊上呼叫 UnmapViewOfFile,就會產生此停止。 如果取消對應此記憶體,應用程式應該先在此重要區段上呼叫 DeleteCriticalSection。 $ kb - 顯示目前的堆疊追蹤,也就是呼叫 UnmapViewOfFile 。 可能是呼叫 UnmapViewOfFile 的 DLL。 $ !cs -s parameter1 - 傾印此重要區段的相關資訊。 $ dps parameter2 - 識別此重要區段初始化的程式碼路徑。

應用程式驗證器顯示的資訊
  • 參數 1 -   Critical 區段位址。
  • 參數 2 -   Critical 區段初始化堆疊追蹤。
  • 參數 3 -   Memory 區塊位址。
  • 參數 4 -   記憶體區塊大小。

其他資訊
  • 測試層: 鎖
  • 停止識別碼: LOCK_IN_UNMAPPED_MEM
  • 停止程式碼: 200NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄到檔案: 是的
  • 建立回溯: 是的

目前的執行緒不會擁有任何重要區段。

可能的原因

如果目前的執行緒呼叫 LeaveCriticalSection,但根據內部驗證器簿記,它不會擁有任何重要區段,就會產生此停止。 如果 parameter2 為零,可能是目前線程中的 Bug。 它會嘗試保留未輸入的重要區段,或呼叫 LeaveCriticalSection 比針對相同重要區段呼叫 LeaveCriticalSection 還要多一次。 如果 parameter2 不是零 (它是負整數,) 內部驗證器資料結構可能已損毀。

應用程式驗證器顯示的資訊
  • 參數 1 -   Critical 區段位址。
  • 參數 2 -   目前線程所擁有的重要區段數目。
  • 參數 3 -   未使用
  • 參數 4 -   未使用

其他資訊
  • 測試層: 鎖
  • 停止識別碼: THREAD_NOT_LOCK_OWNER
  • 停止程式碼: 200NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄到檔案: 是的
  • 建立回溯: 是的

使用另一個 DLL 私用的重要區段。

可能的原因

如果目前的執行緒嘗試使用位於另一個 DLL 內的私用鎖定,就會產生此停止。 例如,a.dll嘗試輸入定義于ntdll.dll內的重要區段。 私人鎖定無法跨 DLL 使用。

應用程式驗證器所顯示的資訊
  • 參數 1 -   Critical 區段位址。
  • 參數 2 -   未使用。
  • 參數 3 -   未使用
  • 參數 4 -   未使用

其他資訊
  • 測試層: 鎖
  • 停止識別碼: LOCK_PRI加值稅E
  • 停止程式碼: 200NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

SRW 鎖定未初始化。

可能的原因

如果執行緒嘗試使用 SRW 鎖定 (Param1) 未初始化,就會產生此停止。 $ kb - 取得目前的堆疊追蹤。 這是使用 SRW 鎖定的位置。 使用 InitializeSRWLock 之前,應該先初始化 SRW 鎖定。

應用程式驗證器所顯示的資訊
  • 參數 1 -   SRW 鎖定
  • 參數 2 -   未使用
  • 參數 3 -   未使用
  • 參數 4 -   未使用

其他資訊
  • 測試層: SRWLock
  • 停止識別碼: NOT_INITIALIZED
  • 停止程式碼: 250NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

SRW 鎖定已經初始化。

可能的原因

如果 SRW 鎖定 (Param1) 重新初始化,就會產生此停止。 如果其他執行緒正主動使用 SRW 鎖定,重新初始化鎖定會導致應用程式無法預期的行為,包括停止回應和當機。 如果 SRW 鎖定已靜態初始化,初始化堆疊追蹤可能會顯示取得。 $ kb - 取得目前的堆疊追蹤。 這是重新初始化 SRW 鎖定的位置。 $ dps Param3 - 取得 SRW 鎖定初始化堆疊追蹤。 如果鎖定已靜態初始化,此堆疊追蹤可能會顯示取得。

應用程式驗證器所顯示的資訊
  • 參數 1 -   SRW 鎖定
  • 參數 2 -   初始化 SRW 鎖定之執行緒的 ThreadId。
  • 參數 3 -   初始化堆疊追蹤的位址。 使用 dps < 位址 > 來查看 SRW 鎖定已初始化的位置。
  • 參數 4 -   未使用

其他資訊
  • 測試層: SRWLock
  • 停止識別碼: ALREADY_INITIALIZED
  • 停止程式碼: 250NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

SRW 鎖定上的不相符Acquire-Release。

可能的原因

如果 SRW 鎖定 (Param1) 發行時發生錯誤的發行 API,就會產生此停止。 如果已取得用於共用存取的 SRW 鎖定,且正使用獨佔發行 API 釋放,或取得 SRW 鎖定以進行獨佔存取,且正在使用共用發行 API 發行。 這可能會導致應用程式無法預期的行為,包括停止回應和當機。 $ kb - 取得目前的堆疊追蹤。 這是使用錯誤的 API 釋放 SRW 鎖定的位置。 $ dps Param3 - 取得 SRW 鎖定取得堆疊追蹤。

應用程式驗證器所顯示的資訊
  • 參數 1 -   SRW 鎖定
  • 參數 2 -   取得 SRW 鎖定之執行緒的 ThreadId。
  • 參數 3 -   取得堆疊追蹤的位址。 使用 dps < 位址 > 來查看取得 SRW 鎖定的位置。
  • 參數 4 -   未使用

其他資訊
  • 測試層: SRWLock
  • 停止識別碼: MISMATCHED_ACQUIRE_RELEASE
  • 停止程式碼: 250NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

SRW 鎖定是以遞迴方式由相同的執行緒取得。

可能的原因

如果相同執行緒以遞迴方式取得 SRW 鎖定 (Param1) ,就會產生此停止。 這會導致死結,執行緒會無限期封鎖。 以獨佔模式遞迴擷取 SRW 鎖定會導致死結。 在共用模式中遞迴擷取 SRW 鎖定會導致當執行緒等候獨佔存取時發生死結。 請考慮下列範例:- 執行緒 A 會以共用模式取得 SRW 鎖定 - 執行緒 B 嘗試以獨佔模式學習 SRW 鎖定並等候 - 執行緒 A 會嘗試以遞迴方式取得共用模式中的 SRW 鎖定。 只要在此案例 B) 中沒有獨佔等候程式 (,這就會成功。 由於 SRW 鎖定沒有寫入器耗盡,執行緒 A 會線上程 B 後等候。現在,執行緒 B 正在等候執行緒 A,正在等待中的執行緒 B 造成迴圈等候,因而造成死結。 $ kb - 取得目前的堆疊追蹤。 這是以遞迴方式取得 SRW 鎖定的位置。 $ dps Param2 - 取得第一個取得的堆疊追蹤。

應用程式驗證器所顯示的資訊
  • 參數 1 -   SRW 鎖定
  • 參數 2 -   第一個取得堆疊追蹤的位址。 使用 dps < 位址 > 來查看取得 SRW 鎖定的位置。
  • 參數 3 -   未使用
  • 參數 4 -   未使用

其他資訊
  • 測試層: SRWLock
  • 停止識別碼: RECURSIVE_ACQUIRE
  • 停止程式碼: 250NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

即將結束或終止的執行緒擁有 SRW 鎖定。

可能的原因

如果執行緒 (Param2) 擁有 SRW 鎖定 (Param1) 即將結束或終止,就會產生此停止。 這會導致孤立的 SRW 鎖定,而嘗試取得此鎖定的執行緒將會無限期封鎖。 $ kb - 取得目前的堆疊追蹤。 這是執行緒結束或正在終止的位置。 $ dps Param3 - 取得 SRW 鎖定取得堆疊追蹤。

應用程式驗證器所顯示的資訊
  • 參數 1 -   SRW 鎖定
  • 參數 2 -   ThreadId 正在結束或終止的執行緒。
  • 參數 3 -   取得堆疊追蹤的位址。 使用 dps < 位址 > 來查看取得 SRW 鎖定的位置。
  • 參數 4 -   未使用

其他資訊
  • 測試層: SRWLock
  • 停止識別碼: EXIT_THREAD_OWNS_LOCK
  • 停止程式碼: 250NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

此執行緒未取得要釋放的 SRW 鎖定。

可能的原因

如果執行緒 (Param2) 未取得鎖定的執行緒釋放 srW 鎖定 (Param1) ,就會產生此停止。 這代表難以正確且可能導致應用程式無法預測行為的不良程式設計做法。 $ kb - 取得目前的堆疊追蹤。 這是執行緒釋放其未取得的 SRW 鎖定的位置。 $ dps Param4 - 取得 SRW 鎖定取得堆疊追蹤。

應用程式驗證器所顯示的資訊
  • 參數 1 -   SRW 鎖定
  • 參數 2 -   Current ThreadId。
  • 參數 3 -   取得 SRW 鎖定之執行緒的 ThreadId。
  • 參數 4 -   取得堆疊追蹤的位址。 使用 dps < 位址 > 來查看取得 SRW 鎖定的位置。

其他資訊
  • 測試層: SRWLock
  • 停止識別碼: INVALID_OWNER
  • 停止程式碼: 250NAN
  • 嚴重性: 警告
  • 一次性錯誤: 
  • 錯誤報表: 沒有
  • 記錄檔: 是的
  • 建立回溯: 是的

正在釋放的記憶體包含作用中的 SRW 鎖定。

可能的原因

如果釋放的記憶體位址 (Param1) 包含仍在使用中的 SRW 鎖定,就會產生此停止。 這可能會導致應用程式無法預期的行為,包括當機和停止回應。 $ kb - 取得目前的堆疊追蹤。 這是正在釋放包含作用中 SRW 鎖定的記憶體的位置。 $ dps Param4 - 取得 SRW 鎖定取得堆疊追蹤。

應用程式驗證器所顯示的資訊
  • 參數 1 -   SRW 鎖定
  • 參數 2 -   釋放記憶體的位址。
  • 參數 3 -   取得 SRW 鎖定之執行緒的 ThreadId。
  • 參數 4 -   取得堆疊追蹤的位址。 使用 dps < 位址 > 來查看取得 SRW 鎖定的位置。

其他資訊
  • 測試層: SRWLock
  • 停止識別碼: IN_FREED_MEMORY
  • 停止程式碼: 250NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

要卸載的 DLL 包含作用中的 SRW 鎖定。

可能的原因

如果卸載的 DLL (Param2) 包含仍在使用中的 SRW 鎖定 (Param1) ,就會產生此停止。 這可能會導致應用程式無法預期的行為,包括當機和停止回應。 $ kb - 取得目前的堆疊追蹤。 這是要卸載包含作用中 SRW 鎖定的 DLL 的位置。 $ du Param2 - 尋找要卸載之 DLL 的名稱。 $ dps Param4 - 取得 SRW 鎖定取得堆疊追蹤。

應用程式驗證器所顯示的資訊
  • 參數 1 -   SRW 鎖定
  • 參數 2 -   要卸載之 DLL 名稱的位址。 使用 du < address > 來查看名稱。
  • 參數 3 -   取得 SRW 鎖定之執行緒的 ThreadId。
  • 參數 4 -   取得堆疊追蹤的位址。 使用 dps < 位址 > 來查看取得 SRW 鎖定的位置。

其他資訊
  • 測試層: SRWLock
  • 停止識別碼: IN_UNLOADED_DLL
  • 停止程式碼: 250NAN
  • 嚴重性: 警告
  • 一次性錯誤: 
  • 錯誤報表: 沒有
  • 記錄檔: 是的
  • 建立回溯: 是的

目前堆疊追蹤的控制碼例外狀況無效。

可能的原因

如果堆疊頂端的函式傳遞無效控制碼給系統常式,就會產生此停止。 通常簡單的 kb 命令會顯示傳遞 (控制碼的值必須是其中一個參數,通常是第一個) 。 如果值為 null,則這顯然是錯誤的。 如果值看起來沒問題,您需要使用 !htrace 偵錯工具擴充功能來取得與這個控制碼值相關的作業歷程記錄。 在大部分情況下,必須在關閉之後使用控制碼值。

應用程式驗證器所顯示的資訊
  • 參數 1 -   Exception 程式碼。
  • 參數 2 -   Exception 記錄。 使用 .exr 來顯示它。
  • 參數 3 -   CoNtext 記錄。 使用 .cxr 來顯示它。
  • 參數 4 -   未使用。

其他資訊
  • 測試層: 處理
  • 停止識別碼: INVALID_HANDLE
  • 停止程式碼: 300NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

用於目前堆疊追蹤的 TLS 索引無效。

可能的原因

如果堆疊頂端的函式將不正確 TLS 索引傳遞至 TLS 系統常式,就會產生此停止。 通常簡單的 kb 命令會顯示錯誤。 這裡的一般 Bug 是假設 TLS 索引的特定值,而不是呼叫 TlsAlloc。 這可能是因為認為您一律會得到值 N,因此不需要呼叫 TlsAlloc 或更頻繁地因為未初始化的變數而發生。

應用程式驗證器所顯示的資訊
  • 參數 1 -   不正確 TLS 索引。
  • 參數 2 -   索引的預期下半部。
  • 參數 3 -   未使用。
  • 參數 4 -   未使用。

其他資訊
  • 測試層: 處理
  • 停止識別碼: INVALID_TLS_VALUE
  • 停止程式碼: 300NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

WaitForMultipleObjects 呼叫的參數無效。

可能的原因

如果堆疊頂端名為 WaitForMultipleObjects 的函式作為控制碼陣列的位址,則會產生這個停止點。 簡單的 kb 命令會顯示呼叫此 API 的函式不正確。

應用程式驗證器所顯示的資訊
  • 參數 1 -   物件控制碼向量的位址。
  • 參數 2 -   控制碼數目。
  • 參數 3 -   未使用。
  • 參數 4 -   未使用。

其他資訊
  • 測試層: 處理
  • 停止識別碼: INCORRECT_WAIT_CALL
  • 停止程式碼: 300NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

傳遞為參數的 Null 控制碼。 必須使用有效的控制碼。

可能的原因

如果堆疊頂端的函式傳遞 Null 控制碼給系統常式,就會產生這個停止。

應用程式驗證器所顯示的資訊
  • 參數 1 -   未使用。
  • 參數 2 -   未使用。
  • 參數 3 -   未使用。
  • 參數 4 -   未使用。

其他資訊
  • 測試層: 處理
  • 停止識別碼: Null_HANDLE
  • 停止程式碼: 300NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

等候 DllMain 中的執行緒控制碼。

可能的原因

如果目前線程目前在目前進程載入其中一個 DLL 的 DllMain 函式內執行程式碼,而且它會呼叫 WaitForSingleObject 或 WaitForMultipleObjects 在相同進程中等候執行緒控制碼,就會產生此停止。 這很可能會導致死結,因為除非該第二個執行緒結束,否則執行緒控制碼不會收到訊號。 當第二個執行緒呼叫 ExitThread 時,它會嘗試取得 DLL 載入器鎖定,然後針對目前進程中的所有 DLL 呼叫 DllMain (DLL_THREAD_DETACH) 。 但載入器鎖定是由第一個執行緒所擁有, (線上程控制碼上等候的執行緒) ,因此這兩個執行緒將會死結。

應用程式驗證器所顯示的資訊
  • 參數 1 -   Thread 控制碼。
  • 參數 2 -   未使用。
  • 參數 3 -   未使用。
  • 參數 4 -   未使用。

其他資訊
  • 測試層: 處理
  • 停止識別碼: WAIT_IN_DLLMAIN
  • 停止程式碼: 300NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

控制碼的物件類型不正確。

可能的原因

如果目前的執行緒呼叫具有不正確物件類型之物件的控制碼的 API,就會產生這個停止。 例如,以號志控制碼作為參數呼叫 SetEvent 將會產生此停止。 若要偵錯此停止:$ kb - 顯示目前的堆疊追蹤。 提示可能是呼叫 verifier.dll 的 DLL;$ du parameter2 - 顯示控制碼的實際類型。 控制碼值為 parameter1。 在上述範例中,這會顯示:號志。 $ du parameter3 - 顯示 API 預期的物件類型。 在上述範例中,此名稱會是:Event。 $ !htrace parameter1 可能很有説明,因為它會顯示此控制碼上最近開啟/關閉作業的堆疊追蹤。

應用程式驗證器顯示的資訊
  • 參數 1 -   Handle 值。
  • 參數 2 -   物件類型名稱。 使用 du 來顯示
  • 參數 3 -   預期的物件類型名稱。 使用 du 來顯示
  • 參數 4 -   未使用。

其他資訊
  • 測試層: 處理
  • 停止識別碼: INCORRECT_OBJECT_TYPE
  • 停止程式碼: 300NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄到檔案: 是的
  • 建立回溯: 是的

卸載未釋放之配置 TLS 索引的 DLL。

可能的原因

如果在釋放該 TLS 索引之前卸載配置 TLS 索引的 DLL,就會產生此停止。 若要偵錯此停止:$ du parameter3 - 顯示提示 DLL 的名稱;$ .reload xxx.dll=parameter4 - 視需要重載提示 DLL (符號) 。 xxx.dll是上一個步驟中顯示的 DLL 名稱;$ u parameter2 - 反組譯配置 TLS 的程式碼。 這應該指向配置 TLS 但忘記在卸載 DLL 之前釋放的函式。

應用程式驗證器顯示的資訊
  • 參數 1 -   TLS 索引
  • 參數 2 -   配置此 TLS 索引的程式碼位址。
  • 參數 3 -   DLL 名稱位址。 使用 du 傾印。
  • 參數 4 -   DLL 基底位址。

其他資訊
  • 測試層: Tls
  • 停止識別碼: TLS_LEAK
  • 停止程式碼: 350NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄到檔案: 是的
  • 建立回溯: 是的

損毀的驗證器 TLS 結構。

可能的原因

如果用來儲存執行緒之 TLS 位置狀態的內部驗證器結構已損毀,就會產生此停止。 這可能是因為程式中發生一些隨機損毀。

應用程式驗證器顯示的資訊
  • 參數 1 -   TEB 位址。
  • 參數 2 -   預期的 TEB 位址。
  • 參數 3 -   Thread ID。
  • 參數 4 -   預期的執行緒識別碼。

其他資訊
  • 測試層: Tls
  • 停止識別碼: CORRUPTED_TLS
  • 停止程式碼: 350NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄到檔案: 是的
  • 建立回溯: 是的

使用不正確 TLS 索引。

可能的原因

如果使用不正確 TLS 索引,就會產生此停止。 在大部分情況下,這是因為呼叫 TlsFree 時,程式碼仍在使用此索引。 以下是執行緒集區執行緒的範例。 T1:Dll 載入和 TlsAlloc T1:佇列回呼 T1:略過等候/取消回呼 T1:TlsFree T2:回呼執行並呼叫 TlsSetValue T1:Dll 卸載

應用程式驗證器顯示的資訊
  • 參數 1 -   TLS 索引
  • 參數 2 -   未使用。
  • 參數 3 -   未使用。
  • 參數 4 -   未使用。

其他資訊
  • 測試層: Tls
  • 停止識別碼: INVALID_TLS_INDEX
  • 停止程式碼: 350NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄到檔案: 是的
  • 建立回溯: 是的

釋放大小無效或起始位址的虛擬記憶體區塊。

可能的原因

如果應用程式驗證程式偵測到 VirtualFree 或 DLL 卸載,且記憶體配置不正確起始位址或大小,就會產生此停止。 在 DLL 卸載的情況下,這可能表示載入 DLL 清單內的記憶體損毀。 若要偵錯此停止,請查看目前的堆疊追蹤,以及即將釋放的記憶體位址和大小,並嘗試判斷其不正確原因。

應用程式驗證器顯示的資訊
  • 參數 1 -   配置基底位址。
  • 參數 2 -   記憶體區域大小。
  • 參數 3 -   未使用。
  • 參數 4 -   未使用。

其他資訊
  • 測試層: 記憶
  • 停止識別碼: INVALID_FREEMEM
  • 停止程式碼: 600NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

虛擬配置呼叫不正確。

可能的原因

如果應用程式驗證器偵測到 VirtualAlloc 呼叫,且記憶體配置不正確起始位址或大小,就會產生此停止。 若要偵錯此停止,請查看目前的堆疊追蹤 (kb) ,以及即將配置的記憶體位址和大小,並嘗試判斷它們不正確原因。

應用程式驗證器所顯示的資訊
  • 參數 1 -   配置基底位址的指標。
  • 參數 2 -   記憶體區域大小的指標。
  • 參數 3 -   未使用
  • 參數 4 -   未使用

其他資訊
  • 測試層: 記憶
  • 停止識別碼: INVALID_ALLOCMEM
  • 停止程式碼: 600NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

地圖檢視呼叫不正確。

可能的原因

如果應用程式驗證器偵測到 MapViewOfFile 呼叫,且具有不正確基底位址或對應大小,就會產生此停止。 若要偵錯此停止,請查看目前的堆疊追蹤 (kb) ,以及即將對應的記憶體位址和大小,並嘗試判斷它們不正確原因。

應用程式驗證器所顯示的資訊
  • 參數 1 -   對應基底位址的指標。
  • 參數 2 -   檢視大小的指標。
  • 參數 3 -   未使用。
  • 參數 4 -   未使用。

其他資訊
  • 測試層: 記憶
  • 停止識別碼: INVALID_MAPVIEW
  • 停止程式碼: 600NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

探查不正確位址。

可能的原因

如果應用程式驗證程式偵測到具有無效位址的 IsBadXXXPtr 呼叫, (例如核心模式位址,而不是一般使用者模式位址,而不是一般使用者模式位址,) 來探查記憶體緩衝區。 若要偵錯此停止,請查看目前的堆疊追蹤 (kb) ,並嘗試判斷 IsBadXXXPtr 函式的呼叫端最終位址不正確原因。 許多時候,位址是純假的,例如未初始化的指標。 MSDN 程式庫列出應用程式不應該使用 IsBadXXXPtr API 的幾個原因:在先占式多工環境中,其他執行緒可能會變更進程對所測試記憶體的存取權。 取消參考可能不正確指標可能會停用其他執行緒中的堆疊擴充。 當堆疊擴充已停用時,執行緒會耗盡其堆疊,導致父進程立即終止,沒有快顯視窗或診斷資訊。 進程中的執行緒預期會合作,如此一來,一個執行緒就不會釋放另一個所需的記憶體。 使用此函式並不會否定執行此動作的需求。 如果未這麼做,應用程式可能會以無法預期的方式失敗。 由於所有這些原因,我們建議您永遠不要使用這些 API。

應用程式驗證器所顯示的資訊
  • 參數 1 -   Start address。
  • 參數 2 -   記憶體區塊大小。
  • 參數 3 -   不正確位址。
  • 參數 4 -   未使用。

其他資訊
  • 測試層: 記憶
  • 停止識別碼: PROBE_INVALID_ADDRESS
  • 停止程式碼: 600NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

探查可用記憶體。

可能的原因

如果應用程式驗證器偵測到可用記憶體配置的 IsBadXXXPtr 呼叫,就會產生此停止。 這是非常錯誤的,因為在某些情況下,此記憶體已針對其他配置重複使用。 由於目前的程式碼路徑 (kb) 沒有該記憶體,因此最終可能會損毀其他人的記憶體,並產生混亂的影響。 若要偵錯此停止,請查看目前的堆疊追蹤 (kb) ,並嘗試判斷 IsBadXXXPtr 函式呼叫端為何最後會探查可用記憶體。 位址可能是純假 (例如未初始化的指標) 或可能已釋放記憶體。 如果記憶體已由其中一個 VirtualFree 或 UnmapViewOfFile API 釋放,'!avrf -vs -a parameter3' 將會搜尋已配置/釋放該位址的程式碼路徑堆疊追蹤記錄,並在可用時顯示這些堆疊追蹤。 這可能會顯示釋放此記憶體的堆疊追蹤。 通常,記憶體是已釋放的堆積配置。 若要檢查該可能性,'!avrf -hp -a parameter3' 會搜尋程式碼路徑的堆疊追蹤記錄,這些路徑會配置/釋出該位址給堆積,並在可用時顯示這些堆疊追蹤。 MSDN 程式庫列出應用程式不應該使用 IsBadXXXPtr API 的幾個原因:在先占式多工環境中,其他執行緒可能會變更進程對所測試記憶體的存取權。 取消參考可能不正確指標可能會停用其他執行緒中的堆疊擴充。 當堆疊擴充已停用時,執行緒會耗盡其堆疊,導致父進程立即終止,沒有快顯視窗或診斷資訊。 進程中的執行緒預期會合作,如此一來,一個執行緒就不會釋放另一個所需的記憶體。 使用此函式並不會否定執行此動作的需求。 如果未這麼做,應用程式可能會以無法預期的方式失敗。 由於所有這些原因,我們建議您永遠不要使用這些 API。

應用程式驗證器所顯示的資訊
  • 參數 1 -   Start address。
  • 參數 2 -   記憶體區塊大小。
  • 參數 3 -   可用記憶體頁面的位址。
  • 參數 4 -   未使用。

其他資訊
  • 測試層: 記憶
  • 停止識別碼: PROBE_FREE_MEM
  • 停止程式碼: 600NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

探查防護頁面。

可能的原因

如果應用程式驗證器偵測到包含至少一個GUARD_PAGE的記憶體配置 IsBadXXXPtr 呼叫,就會產生此停止。 這是非常錯誤的,因為此GUARD_PAGE可能是執行緒目前堆疊的結尾。 如 MSDN 程式庫中所述:取值可能不正確指標可能會停用其他執行緒中的堆疊擴充。 當堆疊展開已停用時,執行緒耗盡其堆疊,會導致父進程立即終止,且沒有快顯視窗或診斷資訊。 若要偵錯此停止偵錯,請查看目前的堆疊追蹤 (kb) ,並嘗試判斷 IsBadXXXPtr 函式呼叫者為何最終會探查GUARD_PAGE。 MSDN 程式庫列出應用程式不應該使用 IsBadXXXPtr API 的幾個原因:在先占式多工環境中,其他執行緒可能會變更進程對所測試記憶體的存取權。 取值可能不正確指標可能會停用其他執行緒中的堆疊擴充。 當堆疊展開已停用時,執行緒耗盡其堆疊,會導致父進程立即終止,且沒有快顯視窗或診斷資訊。 進程中的執行緒預期會合作,如此一來,一個執行緒就不會釋放另一個所需的記憶體。 使用此函式並不會否定執行這項作業的需求。 如果未這麼做,應用程式可能會以無法預期的方式失敗。 由於上述所有原因,建議您永遠不要使用這些 API。

應用程式驗證器顯示的資訊
  • 參數 1 -   Start address。
  • 參數 2 -   記憶體區塊大小。
  • 參數 3 -   防護頁面的位址。
  • 參數 4 -   未使用。

其他資訊
  • 測試層: 記憶
  • 停止識別碼: PROBE_GUARD_PAGE
  • 停止程式碼: 600NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄到檔案: 是的
  • 建立回溯: 是的

探查 Null 位址。

可能的原因

如果應用程式驗證器偵測到具有 Null 位址的 IsBadXXXPtr 呼叫,就會產生此停止。 若要偵錯此停止,請查看目前的堆疊追蹤 (kb) ,並嘗試判斷 IsBadXXXPtr 函式呼叫端為何最後會使用 Null 位址。 這通常是未檢查其中一個記憶體配置函式之傳回值的某人的正負號。 例如,下列程式碼不正確:int main (void) { PVOID p; p = malloc (1024) ;使用 p) (;傳回 0;} void 使用 (PVOID p) { if (IsBadReadPtr (p) ) { return; } // // p is safe to use here. } 此程式碼應重新撰寫如下:int main (void) { PVOID p; p = malloc (1024) ; if (Null == p) ) { return -1; }使用 p) (;傳回 0;} void 使用 (PVOID p) { // // p 是在這裡安全的。 } MSDN 程式庫列出應用程式不應該使用 IsBadXXXPtr API 的幾個原因:在先占式多工環境中,可能會讓其他執行緒變更對所測試記憶體的存取權。 取值可能不正確指標可能會停用其他執行緒中的堆疊擴充。 當堆疊展開已停用時,執行緒耗盡其堆疊,會導致父進程立即終止,且沒有快顯視窗或診斷資訊。 進程中的執行緒預期會合作,如此一來,一個執行緒就不會釋放另一個所需的記憶體。 使用此函式並不會否定執行這項作業的需求。 如果未這麼做,應用程式可能會以無法預期的方式失敗。 由於上述所有原因,建議您永遠不要使用這些 API。

應用程式驗證器顯示的資訊
  • 參數 1 -   未使用。
  • 參數 2 -   未使用。
  • 參數 3 -   未使用。
  • 參數 4 -   未使用。

其他資訊
  • 測試層: 記憶
  • 停止識別碼: PROBE_Null
  • 停止程式碼: 600NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄到檔案: 是的
  • 建立回溯: 是的

探查具有無效起始位址或大小的記憶體區塊。

可能的原因

如果應用程式驗證程式偵測到具有無效起始位址的 IsBadXXXPtr 呼叫, (例如核心模式位址,而不是一般使用者模式位址,) 或探查記憶體緩衝區的大小無效,就會產生此停止。 若要偵錯此停止,請查看目前的堆疊追蹤 (kb) ,並嘗試判斷 IsBadXXXPtr 函式的呼叫端為何最後會有不正確位址或大小。 許多時候,位址或大小都是純假的,例如未初始化的變數。 MSDN 程式庫列出應用程式不應該使用 IsBadXXXPtr API 的幾個原因:在先占式多工環境中,其他執行緒可能會變更進程對所測試記憶體的存取權。 取值可能不正確指標可能會停用其他執行緒中的堆疊擴充。 當堆疊展開已停用時,執行緒耗盡其堆疊,會導致父進程立即終止,且沒有快顯視窗或診斷資訊。 進程中的執行緒預期會合作,如此一來,一個執行緒就不會釋放另一個所需的記憶體。 使用此函式並不會否定執行這項作業的需求。 如果未這麼做,應用程式可能會以無法預期的方式失敗。 由於上述所有原因,建議您永遠不要使用這些 API。

應用程式驗證器顯示的資訊
  • 參數 1 -   Start address。
  • 參數 2 -   記憶體區塊大小。
  • 參數 3 -   未使用。
  • 參數 4 -   未使用。

其他資訊
  • 測試層: 記憶
  • 停止識別碼: PROBE_INVALID_START_OR_SIZE
  • 停止程式碼: 600NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄到檔案: 是的
  • 建立回溯: 是的

卸載大小無效或起始位址的 DLL。

可能的原因

如果應用程式驗證器偵測到 DLL 卸載時,會產生此停止,其起始位址或 DLL 記憶體範圍的大小無效。 這可能表示內部ntdll.dll載入 DLL 清單內的記憶體損毀。

應用程式驗證器顯示的資訊
  • 參數 1 -   DLL 記憶體基底位址。
  • 參數 2 -   DLL 記憶體範圍大小。
  • 參數 3 -   DLL 名稱位址。 使用 du 傾印。
  • 參數 4 -   未使用。

其他資訊
  • 測試層: 記憶
  • 停止識別碼: INVALID_DLL_RANGE
  • 停止程式碼: 600NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄到檔案: 是的
  • 建立回溯: 是的

釋放目前線程堆疊位址範圍內的記憶體區塊。

可能的原因

如果應用程式驗證程式偵測到實際屬於目前線程堆疊 (!) 記憶體區塊的 VirtualFree,就會產生此停止。 若要偵錯此停止,請查看目前的堆疊追蹤 (kb) ,並嘗試瞭解呼叫 VirtualFree 的函式為何認為記憶體區塊已動態配置或對應,但實際上是從堆疊配置記憶體。

應用程式驗證器所顯示的資訊
  • 參數 1 -   配置基底位址。
  • 參數 2 -   記憶體區域大小。
  • 參數 3 -   Stack 低限制位址。
  • 參數 4 -   Stack 高限制位址。

其他資訊
  • 測試層: 記憶
  • 停止識別碼: FREE_THREAD_STACK_MEMORY
  • 停止程式碼: 600NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

VirtualFree 作業的 FreeType 參數不正確。

可能的原因

如果應用程式驗證程式偵測到具有 FreeType 參數值不正確之 VirtualFree,就會產生此停止。 此參數唯一可接受的兩個值是MEM_DECOMMIT和MEM_RELEASE。 如果使用這兩個以外的任何其他值呼叫 VirtualFree,VirtualFree 將無法釋放記憶體。 若要偵錯此停止,請查看目前的堆疊追蹤 (kb) :VirtualFree 的呼叫端可能是原因。

應用程式驗證器所顯示的資訊
  • 參數 1 -   應用程式所使用的值不正確。
  • 參數 2 -   預期的正確值 1。
  • 參數 3 -   預期的正確值 2。
  • 參數 4 -   未使用。

其他資訊
  • 測試層: 記憶
  • 停止識別碼: INVALID_FREE_TYPE
  • 停止程式碼: 600NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

嘗試釋放已釋放的虛擬記憶體區塊。

可能的原因

如果應用程式驗證程式偵測到已免費位址的 VirtualFree,就會產生此停止。 若要偵錯此停止,請查看目前的堆疊追蹤 (kb) ,並嘗試判斷記憶體已釋放的原因,但應用程式正嘗試再次釋放它。 '!avrf -vs -a parameter1' 會搜尋已配置/釋放該位址之程式碼路徑的堆疊追蹤記錄,並在可用時顯示這些堆疊追蹤。 這可能會顯示釋放此記憶體的堆疊追蹤。

應用程式驗證器所顯示的資訊
  • 參數 1 -   Memory block address。
  • 參數 2 -   未使用。
  • 參數 3 -   未使用。
  • 參數 4 -   未使用。

其他資訊
  • 測試層: 記憶
  • 停止識別碼: MEM_ALREADY_FREE
  • 停止程式碼: 600NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

VirtualFree (MEM_RELEASE) 作業的 Size 參數不正確。

可能的原因

如果應用程式驗證器偵測到具有 dwSize 參數非零值的 VirtualFree (MEM_RELEASE) ,就會產生此停止。 使用 MEM_RELEASE 時,此參數的唯一可接受的值為 0。 如果使用 0 以外的任何其他值呼叫 VirtualFree,VirtualFree 將無法釋放記憶體。 若要偵錯此停止,請查看目前的堆疊追蹤 (kb) :VirtualFree 的呼叫端可能是原因。

應用程式驗證器所顯示的資訊
  • 參數 1 -   應用程式所使用的大小不正確。
  • 參數 2 -   預期的正確大小 (0) 。
  • 參數 3 -   未使用。
  • 參數 4 -   未使用。

其他資訊
  • 測試層: 記憶
  • 停止識別碼: INVALID_FREE_SIZE
  • 停止程式碼: 600NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

DLL 進入點常式中引發未預期的例外狀況。

可能的原因

如果 DLL 的進入點 (DllMain) 函式引發例外狀況,就會產生這個停止點。 其中一個錯誤範例是:如果 DllMain (DLL_PROCESS_ATTACH) 引發例外狀況,Windows DLL 載入器將會: - 攔截並隱藏例外狀況;- 卸載 DLL 而不呼叫其 DllMain (DLL_PROCESS_DETACH) 。 因此,在許多情況下,DLL 已配置一些資源,然後引發例外狀況,而且無法在 DllMain (DLL_PROCESS_DETACH) 上釋放這些資源。 若要偵錯此停止:$ du parameter1 - 顯示 DLL 名稱;$ .exr parameter2 - 顯示例外狀況資訊;$ .cxr 參數3 後面接著 kb - 顯示例外狀況引發時間的例外狀況內容資訊和堆疊追蹤;$ parameter4 是內部驗證器結構的位址,對大部分的驗證者使用者沒有任何重要性。

應用程式驗證器所顯示的資訊
  • 參數 1 -   DLL 名稱 (使用 du 來傾印) 。
  • 參數 2 -   Exception 記錄。 使用 .exr 來顯示它。
  • 參數 3 -   CoNtext 記錄。 使用 .cxr 來顯示它。
  • 參數 4 -   Verifier dll 描述元

其他資訊
  • 測試層: 記憶
  • 停止識別碼: DLL_UNEXPECTED_EXCEPTION
  • 停止程式碼: 600NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

執行緒函式中引發非預期的例外狀況。

可能的原因

如果執行緒函式引發例外狀況,就會產生此停止。 這是錯誤的,因為整個進程將會終止。 若要偵錯此停止:$ parameter1 對例外狀況類型可能很重要。 例如,例外狀況代碼 C0000005 表示存取違規;$ .exr parameter2 - 顯示例外狀況資訊;$ .cxr 參數3 後面接著 kb - 顯示例外狀況內容資訊;

應用程式驗證器顯示的資訊
  • 參數 1 -   Exception 程式碼。
  • 參數 2 -   Exception 記錄。 使用 .exr 來顯示它。
  • 參數 3 -   CoNtext record。 使用 .cxr 來顯示它。
  • 參數 4 -   未使用。

其他資訊
  • 測試層: 記憶
  • 停止識別碼: THREAD_UNEXPECTED_EXCEPTION
  • 停止程式碼: 600NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄到檔案: 是的
  • 建立回溯: 是的

探查記憶體時引發非預期的例外狀況。

可能的原因

如果我們在 IsBadXXXPtr 呼叫期間收到例外狀況,就會產生此停止。 這表示我們正在探查的記憶體緩衝區實際上不會有呼叫端所假設的保護,或記憶體已釋放等等。如需為何不建議使用 IsBadXXXPtr API 的更多範例,請參閱上述有關其他停止程式碼 (PROBE_INVALID_ADDRESS、PROBE_FREE_MEM、PROBE_GUARD_PAGE、PROBE_Null PROBE_INVALID_START_OR_SIZE) 的討論。 若要偵錯此停止:$ parameter1 通常是 C0000005,這表示存取違規;$ .exr parameter2 - 顯示例外狀況資訊;$ .cxr 參數3 後面接著 kb - 在引發例外狀況時顯示例外狀況內容資訊和堆疊追蹤;

應用程式驗證器顯示的資訊
  • 參數 1 -   Exception 程式碼。
  • 參數 2 -   Exception 記錄。 使用 .exr 來顯示它。
  • 參數 3 -   CoNtext record。 使用 .cxr 來顯示它。
  • 參數 4 -   未使用

其他資訊
  • 測試層: 記憶
  • 停止識別碼: PROBE_UNEXPECTED_EXCEPTION
  • 停止程式碼: 600NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄到檔案: 是的
  • 建立回溯: 是的

嘗試重設 Null 位址。

可能的原因

如果應用程式驗證器偵測到具有 Null 第一個參數的 VirtualFree (MEM_RESET) 呼叫,就會產生此停止。 MEM_RESET應該只用于已配置的記憶體,因此在此情況下,Null 不是有效的第一個參數。

應用程式驗證器顯示的資訊
  • 參數 1 -   未使用。
  • 參數 2 -   未使用。
  • 參數 3 -   未使用。
  • 參數 4 -   未使用。

其他資訊
  • 測試層: 記憶
  • 停止識別碼: INVALID_MEM_RESET
  • 停止程式碼: 600NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄到檔案: 是的
  • 建立回溯: 是的

釋放目前線程堆疊位址範圍內的堆積記憶體區塊。

可能的原因

如果應用程式驗證程式偵測到 HeapFree,就會針對實際屬於目前線程堆疊的記憶體區塊產生此停止 (!) 。 若要偵錯此停止偵錯,請查看目前的堆疊追蹤 (kb) ,並嘗試瞭解呼叫 HeapFree 的函式為何認為記憶體區塊是動態配置或對應,但實際上是從堆疊配置記憶體。

應用程式驗證器顯示的資訊
  • 參數 1 -   配置基底位址。
  • 參數 2 -   記憶體區域大小。
  • 參數 3 -   Stack 低限制位址。
  • 參數 4 -   Stack 高限制位址。

其他資訊
  • 測試層: 記憶
  • 停止識別碼: FREE_THREAD_STACK_MEMORY_AS_HEAP
  • 停止程式碼: 600NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄到檔案: 是的
  • 建立回溯: 是的

取消對應目前線程堆疊位址範圍內的記憶體區域。

可能的原因

如果應用程式驗證程式偵測到 UnmapViewOfFile,則會針對實際屬於目前線程堆疊 (!) 的記憶體區塊,產生此停止。 若要偵錯此停止偵錯,請查看目前的堆疊追蹤 (kb) ,並嘗試瞭解呼叫 UnmapViewOfFile 的函式為何認為記憶體區塊是動態配置或對應,但實際上是從堆疊配置記憶體。

應用程式驗證器顯示的資訊
  • 參數 1 -   配置基底位址。
  • 參數 2 -   記憶體區域大小。
  • 參數 3 -   Stack 低限制位址。
  • 參數 4 -   Stack 高限制位址。

其他資訊
  • 測試層: 記憶
  • 停止識別碼: FREE_THREAD_STACK_MEMORY_AS_MAP
  • 停止程式碼: 600NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄到檔案: 是的
  • 建立回溯: 是的

不正確的RTL_RESOURCE位址。

可能的原因

如果應用程式嘗試使用 Null 或其他不正確的位址 (,例如核心模式位址) 做為有效物件的位址,就會產生此停止。 RtlInitializeResource (Null) 是不正確的 API 呼叫,會觸發這種驗證器停止。 param1 是所使用的不正確位址,而提示字元位於堆疊追蹤上, (以 kb) 顯示。

應用程式驗證器顯示的資訊
  • 參數 1 -   Address。
  • 參數 2 -   未使用。
  • 參數 3 -   未使用。
  • 參數 4 -   未使用。

其他資訊
  • 測試層: 記憶
  • 停止識別碼: INVALID_RESOURCE_ADDRESS
  • 停止程式碼: 600NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄到檔案: 是的
  • 建立回溯: 是的

不正確重要區段位址。

可能的原因

如果應用程式嘗試使用 Null 或其他不正確的位址 (,例如核心模式位址) 做為有效物件的位址,就會產生此停止。 EnterCriticalSection (Null) 是不正確的 API 呼叫,會觸發這類驗證程式停止。 param1 是所使用的不正確位址,而提示字元位於堆疊追蹤上, (以 kb) 顯示。

應用程式驗證器顯示的資訊
  • 參數 1 -   Address。
  • 參數 2 -   未使用。
  • 參數 3 -   未使用。
  • 參數 4 -   未使用。

其他資訊
  • 測試層: 記憶
  • 停止識別碼: INVALID_CRITSECT_ADDRESS
  • 停止程式碼: 600NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄到檔案: 是的
  • 建立回溯: 是的

嘗試在非可執行記憶體中執行程式碼。

可能的原因

如果應用程式嘗試從非可執行檔或可用位址執行程式碼,就會產生此停止。 若要偵錯此停止:$ u parameter2 - 取消組譯程式碼 $ .exr parameter3 - 以顯示例外狀況資訊;$ .cxr 參數4,後面接著 kb - 顯示例外狀況引發時間的例外狀況內容資訊和堆疊追蹤。

應用程式驗證器顯示的資訊
  • 參數 1 -   正在存取的位址。
  • 參數 2 -   執行無效存取的程式碼。
  • 參數 3 -   Exception 記錄。 使用 .exr 來顯示它。
  • 參數 4 -   CoNtext record。 使用 .cxr 來顯示它。

其他資訊
  • 測試層: 記憶
  • 停止識別碼: THREAD_UNEXPECTED_EXCEPTION_CODE
  • 停止程式碼: 600NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄到檔案: 是的
  • 建立回溯: 是的

初始化輸出緩衝區時引發非預期的例外狀況。

可能的原因

如果我們在初始化指定為 Win32 或 CRT API 輸出參數的緩衝區時收到例外狀況,就會產生此停止。 這通常表示指定的輸出緩衝區大小不正確。 若要偵錯此停止:$ .exr 參數3 - 顯示例外狀況資訊;$ .cxr 參數4 後面接著 kb - 在引發例外狀況時顯示例外狀況內容資訊和堆疊追蹤。

應用程式驗證器顯示的資訊
  • 參數 1 -   Buffer 起始位址。
  • 參數 2 -   Buffer size。
  • 參數 3 -   Exception 記錄。 使用 .exr 來顯示它。
  • 參數 4 -   CoNtext record。 使用 .cxr 來顯示它。

其他資訊
  • 測試層: 記憶
  • 停止識別碼: OUTBUFF_UNEXPECTED_EXCEPTION
  • 停止程式碼: 600NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄到檔案: 是的
  • 建立回溯: 是的

嘗試尋找堆積區塊大小時發生意外的例外狀況。

可能的原因

如果我們在針對正在釋放的堆積區塊呼叫 HeapSize 時收到例外狀況,就會產生此停止。 這通常表示指定的堆積區塊位址不正確,或堆積損毀。 若要偵錯此停止:$ .exr 參數3 - 顯示例外狀況記錄;$ .cxr 參數4 後面接著 kb - 在引發例外狀況時顯示例外狀況內容資訊和堆疊追蹤。

應用程式驗證器顯示的資訊
  • 參數 1 -   正在釋放堆積區塊的位址。
  • 參數 2 -   Heap 控制碼。
  • 參數 3 -   Exception 記錄。 使用 .exr 來顯示它。
  • 參數 4 -   CoNtext record。 使用 .cxr 來顯示它。

其他資訊
  • 測試層: 記憶
  • 停止識別碼: SIZE_HEAP_UNEXPECTED_EXCEPTION
  • 停止程式碼: 600NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄到檔案: 是的
  • 建立回溯: 是的

釋放具有無效起始位址的記憶體區塊。

可能的原因

如果程式使用 lpAddress 參數呼叫 VirtualFree (MEM_RELEASE) ,但不是保留頁面區域時 VirtualAlloc 或 VirtualAllocEx 函式所傳回的基底位址,就會產生此停止。若要偵錯此停止:$ kb - 顯示目前的堆疊追蹤,也就是呼叫 VirtualFree。 可能是呼叫 VirtualFree 的 DLL。

應用程式驗證器顯示的資訊
  • 參數 1 -   正在釋放記憶體區塊的位址。
  • 參數 2 -   預期的正確記憶體區塊位址。
  • 參數 3 -   未使用。
  • 參數 4 -   未使用。

其他資訊
  • 測試層: 記憶
  • 停止識別碼: INVALID_FREEMEM_START_ADDRESS
  • 停止程式碼: 600NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

取消對應具有無效起始位址的記憶體區塊。

可能的原因

如果程式使用 lpBaseAddress 參數呼叫 UnmapViewOfFile,而這個參數與先前呼叫 MapViewOfFile 或 MapViewOfFileEx 函式所傳回的值不同,就會產生這個停止點。 若要偵錯此停止:$ kb - 顯示目前的堆疊追蹤,也就是呼叫 UnmapViewOfFile。 可能是呼叫 UnmapViewOfFile 的 DLL。

應用程式驗證器所顯示的資訊
  • 參數 1 -   未對應的記憶體區塊位址。
  • 參數 2 -   預期的正確記憶體區塊位址。
  • 參數 3 -   未使用。
  • 參數 4 -   未使用。

其他資訊
  • 測試層: 記憶
  • 停止識別碼: INVALID_UNMAPVIEW_START_ADDRESS
  • 停止程式碼: 600NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

執行緒集區回呼函式中引發未預期的例外狀況。

可能的原因

如果執行緒緩衝處理執行緒中的回呼函式引發例外狀況,就會產生此停止。 若要對這個停止進行偵錯:$ parameter1 對例外狀況的類型可能很重要。 例如例外狀況代碼 C0000005 表示存取違規。 $ .exr parameter2 - 顯示例外狀況資訊。 $ .cxr 參數3 後面接著 kb - 以顯示例外狀況內容資訊。

應用程式驗證器所顯示的資訊
  • 參數 1 -   Exception 程式碼
  • 參數 2 -   Exception 記錄。 使用 .exr 來顯示它
  • 參數 3 -   CoNtext 記錄。 使用 .cxr 來顯示它
  • 參數 4 -   未使用

其他資訊
  • 測試層: 記憶
  • 停止識別碼: THREADPOOL_UNEXPECTED_EXCEPTION
  • 停止程式碼: 600NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

非可執行記憶體中的程式碼

可能的原因

如果應用程式嘗試從非可執行檔或可用位址執行程式碼,就會產生此停止。 若要偵錯此停止:$ u parameter2 - 取消編譯 culprit 程式碼 $ .exr parameter3 - 顯示例外狀況資訊 $ .cxr 參數4,後面接著 kb - 顯示例外狀況內容資訊和引發例外狀況的時間堆疊追蹤。

應用程式驗證器所顯示的資訊
  • 參數 1 -   正在存取的位址
  • 參數 2 -   執行無效存取的程式碼
  • 參數 3 -   Exception 記錄。 使用 .exr 來顯示它。
  • 參數 4 -   CoNtext 記錄。 使用 .cxr 來顯示它。

其他資訊
  • 測試層: 記憶
  • 停止識別碼: THREADPOOL_UNEXPECTED_EXCEPTION_CODE
  • 停止程式碼: 600NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

建立可執行堆積。

可能的原因

如果應用程式正在建立可執行堆積,就會產生此停止。 這樣可能有安全性風險。

應用程式驗證器所顯示的資訊
  • 參數 1 -   未使用。
  • 參數 2 -   未使用。
  • 參數 3 -   未使用。
  • 參數 4 -   未使用。

其他資訊
  • 測試層: 記憶
  • 停止識別碼: EXECUTABLE_HEAP
  • 停止程式碼: 600NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

配置可執行記憶體。

可能的原因

如果應用程式佈建可執行記憶體,就會產生此停止。 這樣可能有安全性風險。

應用程式驗證器所顯示的資訊
  • 參數 1 -   呼叫端指定的頁面保護。
  • 參數 2 -   未使用。
  • 參數 3 -   未使用。
  • 參數 4 -   未使用。

其他資訊
  • 測試層: 記憶
  • 停止識別碼: EXECUTABLE_MEMORY
  • 停止程式碼: 600NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

嘗試在非可執行記憶體中執行程式碼, (第一次有機會) 。

可能的原因

如果應用程式嘗試從非可執行檔或可用位址執行程式碼,就會產生此停止。 若要偵錯此停止:$ u parameter2 - 取消編譯 culprit 程式碼 $ .exr parameter3 - 以顯示例外狀況資訊;$ .cxr 參數4 後面接著 kb - 顯示例外狀況引發時間的例外狀況內容資訊和堆疊追蹤。

應用程式驗證器所顯示的資訊
  • 參數 1 -   正在存取的位址。
  • 參數 2 -   執行無效存取的程式碼。
  • 參數 3 -   Exception 記錄。 使用 .exr 來顯示它。
  • 參數 4 -   CoNtext 記錄。 使用 .cxr 來顯示它。

其他資訊
  • 測試層: 異常
  • 停止識別碼: FIRST_CHANCE_ACCESS_VIOLATION_CODE
  • 停止程式碼: 650NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

此執行緒緩衝處理執行緒的優先順序已變更。

可能的原因

如果執行緒優先順序在傳回執行緒集區時變更,就會產生此停止。

應用程式驗證器所顯示的資訊
  • 格式: -   執行緒集區執行緒 (%x) 執行回呼 (%p) 具有已改變的執行緒優先順序 (%i - > %i)
  • 參數 1 -   Callback 函式。
  • 參數 2 -   CoNtext。
  • 參數 3 -   Threadpool 物件配置堆疊追蹤,使用 dps 來傾印它。
  • 參數 4 -   Current Priority。

其他資訊
  • 測試層: Threadpool
  • 停止識別碼: INCONSISTENT_PRIORITY
  • 停止程式碼: 700NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

此執行緒集區執行緒的親和性已變更。

可能的原因

如果執行緒親和性在傳回執行緒集區時變更,就會產生此停止。

應用程式驗證器所顯示的資訊
  • 格式: -   threadpool 執行緒 (%x) 執行回呼 (%p) 具有已改變的執行緒親和性遮罩 (%p - > %p)
  • 參數 1 -   Callback 函式。
  • 參數 2 -   CoNtext。
  • 參數 3 -   Threadpool 物件配置堆疊追蹤,使用 dps 來傾印它。
  • 參數 4 -   Current affinity。

其他資訊
  • 測試層: Threadpool
  • 停止識別碼: INCONSISTENT_AFFINITY_MASK
  • 停止程式碼: 700NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

目前線程之 msg 集區中未處理的 msg。

可能的原因

如果當這個執行緒緩衝集區執行緒傳回集區時,保留為未處理的訊息,就會產生此停止。 它很危險,因為它會在完全不同的內容中處理。 請使用 !avrf -tp < Param4 > 來查看張貼至此執行緒的訊息。

應用程式驗證器所顯示的資訊
  • 格式: -   threadpool 執行緒 (%x) 執行回呼 (%p) 具有未完成的視窗訊息 (%x: %x)
  • 參數 1 -   Callback 函式。
  • 參數 2 -   CoNtext。
  • 參數 3 -   Threadpool 物件配置堆疊追蹤,使用 dps 來傾印它。
  • 參數 4 -   Threadpool 執行緒識別碼。請使用 !avrf -tp < threadid > 來查看張貼至此執行緒的訊息。

其他資訊
  • 測試層: Threadpool
  • 停止識別碼: ORPHANED_THREAD_MESSAGE
  • 停止程式碼: 700NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

未封閉的視窗屬於目前線程。

可能的原因

當這個執行緒緩衝集區執行緒傳回集區時,如果有任何視窗保持運作,就會產生此停止。

應用程式驗證器所顯示的資訊
  • 格式: -   執行緒集區執行緒 (%x) 執行回呼 (%p) 具有有效的 hwnd (%x: %s) 可能會接收訊息
  • 參數 1 -   Callback 函式。
  • 參數 2 -   CoNtext。
  • 參數 3 -   Threadpool 物件配置堆疊追蹤,使用 dps 來傾印它。
  • 參數 4 -   Threadpool 執行緒識別碼。

其他資訊
  • 測試層: Threadpool
  • 停止識別碼: ORPHANED_THREAD_WINDOW
  • 停止程式碼: 700NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

執行緒緩衝執行緒上的 ExitThread () 。

可能的原因

如果線上程緩衝執行緒上呼叫 ExitThread,就會產生此停止。禁止它,因為它會使系統不穩定。 這會導致資源流失、凍結或 AV。

應用程式驗證器所顯示的資訊
  • 參數 1 -   Callback 函式。
  • 參數 2 -   CoNtext。
  • 參數 3 -   Threadpool 物件配置堆疊追蹤,使用 dps 來傾印它。
  • 參數 4 -   未使用。

其他資訊
  • 測試層: Threadpool
  • 停止識別碼: ILLEGAL_THREAD_EXIT
  • 停止程式碼: 700NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

當執行緒傳回執行緒緩衝處理執行緒時,執行緒處於模擬狀態。

可能的原因

如果回呼函式變更執行緒權杖來模擬其他使用者,並忘記重設它,然後再將它傳回至執行緒緩衝集區,就會產生此停止。

應用程式驗證器所顯示的資訊
  • 參數 1 -   Callback 函式。
  • 參數 2 -   CoNtext。
  • 參數 3 -   Threadpool 物件配置堆疊追蹤,使用 dps 來傾印它。
  • 參數 4 -   未使用。

其他資訊
  • 測試層: Threadpool
  • 停止識別碼: THREAD_IN_IMPERSONATION
  • 停止程式碼: 700NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

呼叫需要持續性執行緒的函式。

可能的原因

某些 Microsoft Windows API 必須在專用或持續性執行緒內呼叫。 線上程集區中,您通常應該避免使用需要持續性執行緒的執行緒本機儲存體和佇列非同步呼叫,例如 RegNotifyChangeKeyValue 函式。 不過,這類函式可以使用 QueueUserWorkItem 搭配 WT_EXECUTEINPERSISTENTTHREAD 選項,將這類函式排入持續性背景工作執行緒。 偵錯工具中的 kb 會顯示呼叫端。

應用程式驗證器所顯示的資訊
  • 參數 1 -   Callback 函式。
  • 參數 2 -   CoNtext。
  • 參數 3 -   Threadpool 物件配置堆疊追蹤,使用 dps 來傾印它。
  • 參數 4 -   未使用。

其他資訊
  • 測試層: Threadpool
  • 停止識別碼: PERSISTED_THREAD_NEEDED
  • 停止程式碼: 700NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

執行緒處於已變更的交易狀態。

可能的原因

如果回呼函式忘記關閉或重設目前的交易控制碼,就會產生此停止。

應用程式驗證器所顯示的資訊
  • 參數 1 -   Callback 函式。
  • 參數 2 -   CoNtext。
  • 參數 3 -   Threadpool 物件配置堆疊追蹤,使用 dps 來傾印它。
  • 參數 4 -   Transaction Handle。

其他資訊
  • 測試層: Threadpool
  • 停止識別碼: DIRTY_TRANSACTION_CONTEXT
  • 停止程式碼: 700NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

此執行緒緩衝處理狀態具有不平衡的 CoInit 和 CoUnInit 呼叫。

可能的原因

如果回呼函式呼叫 CoInit 和 CoUnInit 不平衡,就會產生此停止。

應用程式驗證器所顯示的資訊
  • 參數 1 -   Callback 函式。
  • 參數 2 -   CoNtext。
  • 參數 3 -   Threadpool 物件配置堆疊追蹤,使用 dps 來傾印它。
  • 參數 4 -   平衡通話計數。

其他資訊
  • 測試層: Threadpool
  • 停止識別碼: DIRTY_COM_STATE
  • 停止程式碼: 700NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

計時器物件的參數不一致。 建立計時器時,WT_EXECUTEONLYONCE指定期間應該是 0

可能的原因

如果計時器設定為只發出WT_EXECUTEONLYONCE旗標的訊號時,計時器不是零的期間,就會產生此停止

應用程式驗證器所顯示的資訊
  • 參數 1 指定的 -   Period。
  • 參數 2 指定的 -   Flags。
  • 參數 3 -   未使用。
  • 參數 4 -   未使用。

其他資訊
  • 測試層: Threadpool
  • 停止識別碼: INCONSISTENT_TIMER_PARAMS
  • 停止程式碼: 700NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄到檔案: 是的
  • 建立回溯: 是的

載入器鎖定已由回呼內的執行緒集區執行緒持有。

可能的原因

如果載入器鎖定保留在回呼內,而且線上程傳回至執行緒集區時不會釋放,就會產生此停止。

應用程式驗證器顯示的資訊
  • 參數 1 -   Callback 函式。
  • 參數 2 -   CoNtext。
  • 參數 3 -   Threadpool 物件配置堆疊追蹤,使用 dps 來傾印它。
  • 參數 4 -   未使用。

其他資訊
  • 測試層: Threadpool
  • 停止識別碼: LOADER_LOCK_HELD
  • 停止程式碼: 700NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄到檔案: 是的
  • 建立回溯: 是的

慣用的語言是由回呼內的執行緒集區執行緒所設定。

可能的原因

如果在回呼中設定慣用語言,而且線上程傳回至 threadpool 時不會清除,就會產生此停止。

應用程式驗證器顯示的資訊
  • 參數 1 -   Callback 函式。
  • 參數 2 -   CoNtext。
  • 參數 3 -   Threadpool 物件配置堆疊追蹤,使用 dps 來傾印它。
  • 參數 4 -   未使用。

其他資訊
  • 測試層: Threadpool
  • 停止識別碼: PREFERRED_LANGUAGES_SET
  • 停止程式碼: 700NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄到檔案: 是的
  • 建立回溯: 是的

背景優先順序是由回呼內的執行緒集區執行緒所設定。

可能的原因

如果在回呼內設定背景優先順序,而且線上程傳回至執行緒集區時不會停用,就會產生此停止。

應用程式驗證器顯示的資訊
  • 參數 1 -   Callback 函式。
  • 參數 2 -   CoNtext。
  • 參數 3 -   Threadpool 物件配置堆疊追蹤,使用 dps 來傾印它。
  • 參數 4 -   未使用。

其他資訊
  • 測試層: Threadpool
  • 停止識別碼: BACKGROUND_PRIORITY_SET
  • 停止程式碼: 700NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄到檔案: 是的
  • 建立回溯: 是的

Threadpool 執行緒上的 TerminateThread () 。

可能的原因

如果在 threadpool 執行緒上呼叫 TerminateThread,就會產生此停止。 這是禁止的,因為它會使系統不穩定。 這會導致資源流失、凍結或 AV。

應用程式驗證器顯示的資訊
  • 參數 1 -   未使用。
  • 參數 2 -   未使用。
  • 參數 3 -   未使用。
  • 參數 4 -   未使用。

其他資訊
  • 測試層: Threadpool
  • 停止識別碼: ILLEGAL_THREAD_TERMINATION
  • 停止程式碼: 700NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄到檔案: 是的
  • 建立回溯: 是的

非同步 I/O 作業擱置時,堆疊已回溯。

可能的原因

如果應用程式發出使用堆疊變數且尚未等候 I/O 完成的 I/O 作業,因而導致堆疊損毀,就會產生此停止。 若要偵錯此停止:$ dps 參數4,以在發出 I/O 時顯示堆疊追蹤。 Parameter1 表示堆疊型位址和 parameter3 發出 I/O 的執行緒。

應用程式驗證器顯示的資訊
  • 參數 1 -   I/O 中使用的堆疊變數位址。
  • 參數 2 -   目前的堆疊指標。
  • 參數 3 -   發出 I/O 的原始執行緒。
  • 參數 4 -   發出 I/O 時的堆疊追蹤。

其他資訊
  • 測試層: Io
  • 停止識別碼: ASYNCIO_STACK_UNWIND
  • 停止程式碼: 800NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄到檔案: 是的
  • 建立回溯: 是的

當非同步 I/O 作業擱置時,堆疊已損毀。

可能的原因

如果應用程式發出使用堆疊變數且尚未等候 I/O 完成的 I/O 作業,因而導致堆疊損毀,就會產生此停止。 若要偵錯此停止:$ dps 參數4,以在發出 I/O 時顯示堆疊追蹤。 Parameter1 表示堆疊型位址和 parameter3 發出 I/O 的執行緒。

應用程式驗證器所顯示的資訊
  • 參數 1 -   I/O 中使用的堆疊變數位址。
  • 參數 2 -   目前的堆疊指標。
  • 參數 3 -   發出 I/O 的原始執行緒。
  • 參數 4 -   發出 I/O 時的堆疊追蹤。

其他資訊
  • 測試層: Io
  • 停止識別碼: ASYNCIO_CORRUPTED_STACK
  • 停止程式碼: 800NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

在擱置的 I/O 作業中使用釋放的位址。

可能的原因

如果應用程式發出 I/O 作業,並在 I/O 完成之前釋放 I/O 中使用的記憶體,因而導致記憶體損毀等,就會產生此停止。若要偵錯此停止:$ dps 參數4,以在發出 I/O 時顯示堆疊追蹤。 Parameter1 表示 I/O 中使用的位址。 Parameter2 指出要釋放的位址,以及發出 I/O 的執行緒參數3。

應用程式驗證器所顯示的資訊
  • 參數 1 -   I/O 中使用的位址。
  • 參數 2 -   正在釋放的位址。
  • 參數 3 -   發出 I/O 的原始執行緒。
  • 參數 4 -   發出 I/O 時的堆疊追蹤。

其他資訊
  • 測試層: Io
  • 停止識別碼: FREED_ADDRESS_IN_PENDINGIO
  • 停止程式碼: 800NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

I/O 狀態欄塊 (重迭) 在相關聯的 I/O 要求仍在擱置時重複使用。

可能的原因

如果應用程式重複使用 I/O 狀態欄塊 (重迭) ,而使用該 I/O 狀態欄塊的 I/O 狀態欄塊 (重迭) 仍然擱置,就會產生此停止。 若要偵錯此停止:$ dps 參數3,以在發出原始 I/O 時顯示堆疊追蹤。 Parameter1 指出 I/O 和 parameter2 發出 I/O 的執行緒中使用的位址。

應用程式驗證器所顯示的資訊
  • 參數 1 -   I/O 狀態欄塊的位址 (重迭) 。
  • 參數 2 -   發出 I/O 的原始執行緒。
  • 參數 3 -   發出 I/O 時的堆疊追蹤。
  • 參數 4 -   未使用。

其他資訊
  • 測試層: Io
  • 停止識別碼: REUSED_IOSTATUS_BLOCK
  • 停止程式碼: 800NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

在 CreateFile 上使用不支援的旗標,FILE_ATTRIBUTE_NOT_CONTENT_INDEXED

可能的原因

舊版的 MSDN 錯誤記載了 CreateFile 作為支援FILE_ATTRIBUTE_NOT_CONTENT_INDEXED。 如果此旗標是想要使用其他 API 函式來設定,例如 SetFileAttributes。 $ ln Parameter1 以尋找 CreateFile 的呼叫端。

應用程式驗證器所顯示的資訊
  • 格式: -   使用旗標 %08x %08x %08x %08x %08x 撰寫 %hs%ws 時建立檔案
  • 參數 1 -   Return Address。
  • 參數 2 -   未使用。
  • 參數 3 -   未使用。
  • 參數 4 -   未使用。

其他資訊
  • 測試層: Io
  • 停止識別碼: USING_BAD_CREATEFILE_FLAG
  • 停止程式碼: 800NAN
  • 嚴重性: 警告
  • 一次性錯誤: 
  • 錯誤報表: 沒有
  • 記錄檔: 是的
  • 建立回溯: 是的

堆積配置已外泄。

可能的原因

如果擁有資源時動態卸載配置的擁有者 dll,就會產生此停止。

應用程式驗證器所顯示的資訊
  • 參數 1 -   洩漏配置的位址。 執行 !heap -p -a < 位址 > 以取得配置的其他資訊。
  • 參數 2 -   配置堆疊追蹤的位址。 執行 dps < 位址 > 以檢視配置堆疊。
  • 參數 3 -   擁有者 dll 名稱的位址。 執行 du < 位址 > 以讀取 dll 名稱。
  • 參數 4 -   擁有者 dll 的基底。 執行 .reload < dll_name > = < 位址 > 來重載擁有者 dll。 使用 'lm' 取得已載入和卸載模組的詳細資訊。

其他資訊
  • 測試層: 洩漏
  • 停止識別碼: 分配
  • 停止程式碼: 900NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

HANDLE 已外泄。

可能的原因

如果擁有資源時動態卸載控制碼的擁有者 dll,就會產生此停止。 若要偵錯此停止:請執行 !htrace parameter1 以取得控制碼的其他資訊。

應用程式驗證器所顯示的資訊
  • 參數 1 -   外泄控制碼的值。 執行 !htrace < 控制碼 > ,以在啟用控制碼追蹤時取得控制碼的其他資訊。
  • 參數 2 -   配置堆疊追蹤的位址。 執行 dps < 位址 > 以檢視配置堆疊。
  • 參數 3 -   擁有者 dll 名稱的位址。 執行 du < 位址 > 以讀取 dll 名稱。
  • 參數 4 -   擁有者 dll 的基底。 執行 .reload < dll_name > = < 位址 > 來重載擁有者 dll。 使用 'lm' 取得已載入和卸載模組的詳細資訊。

其他資訊
  • 測試層: 洩漏
  • 停止識別碼: 處理
  • 停止程式碼: 900NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

HKEY 已外泄。

可能的原因

如果擁有資源時動態卸載登錄機碼的擁有者 dll,就會產生此停止。

應用程式驗證器所顯示的資訊
  • 參數 1 -   外泄 HKEY 的值。
  • 參數 2 -   配置堆疊追蹤的位址。 執行 dps < 位址 > 以檢視配置堆疊。
  • 參數 3 -   擁有者 dll 名稱的位址。 執行 du < 位址 > 以讀取 dll 名稱。
  • 參數 4 -   擁有者 dll 的基底。 執行 .reload < dll_name > = < 位址 > 來重載擁有者 dll。 使用 'lm' 取得已載入和卸載模組的詳細資訊。

其他資訊
  • 測試層: 洩漏
  • 停止識別碼: 註冊 表
  • 停止程式碼: 900NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

虛擬保留已外泄。

可能的原因

如果擁有資源時動態卸載虛擬保留的擁有者 dll,就會產生此停止。

應用程式驗證器所顯示的資訊
  • 參數 1 -   流失的保留位址。
  • 參數 2 -   配置堆疊追蹤的位址。 執行 dps < 位址 > 以檢視配置堆疊。
  • 參數 3 -   擁有者 dll 名稱的位址。 執行 du < 位址 > 以讀取 dll 名稱。
  • 參數 4 -   擁有者 dll 的基底。 執行 .reload < dll_name > = < 位址 > 來重載擁有者 dll。 使用 'lm' 取得已載入和卸載模組的詳細資訊。

其他資訊
  • 測試層: 洩漏
  • 停止識別碼: VIRTUAL_RESER加值稅ION
  • 停止程式碼: 900NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

BSTR 已外泄。

可能的原因

如果擁有資源時動態卸載 SysString 的擁有者 dll,就會產生此停止。

應用程式驗證器所顯示的資訊
  • 參數 1 -   外泄 BSTR 的位址。 執行 !heap -p -a < 位址 > 以取得配置的其他資訊。
  • 參數 2 -   配置堆疊追蹤的位址。 執行 dps < 位址 > 以檢視配置堆疊。
  • 參數 3 -   擁有者 dll 名稱的位址。 執行 du < 位址 > 以讀取 dll 名稱。
  • 參數 4 -   擁有者 dll 的基底。 執行 .reload < dll_name > = < 位址 > 來重載擁有者 dll。 使用 'lm' 取得已載入和卸載模組的詳細資訊。

其他資訊
  • 測試層: 洩漏
  • 停止識別碼: SYSSTRING
  • 停止程式碼: 900NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

電源通知未取消註冊。

可能的原因

如果 dll 已註冊電源通知且動態卸載而不註冊,就會產生此停止。

應用程式驗證器所顯示的資訊
  • 參數 1 -   電源通知註冊的位址。
  • 參數 2 -   位址至註冊堆疊追蹤。 執行 dps < 位址 > 以檢視配置堆疊。
  • 參數 3 -   擁有者 dll 名稱的位址。 執行 du < 位址 > 以讀取 dll 名稱。
  • 參數 4 -   擁有者 dll 的基底。 執行 .reload < dll_name > = < 位址 > 來重載擁有者 dll。 使用 'lm' 取得已載入和卸載模組的詳細資訊。

其他資訊
  • 測試層: 洩漏
  • 停止識別碼: POWER_NOTIFICATION
  • 停止程式碼: 900NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

COM 配置已外泄。

可能的原因

如果擁有資源時動態卸載 COM 配置的擁有者 dll,就會產生此停止。

應用程式驗證器所顯示的資訊
  • 參數 1 -   已外泄 COM 配置的位址。 執行 !heap -p -a < 位址 > 以取得配置的其他資訊。
  • 參數 2 -   配置堆疊追蹤的位址。 執行 dps < 位址 > 以檢視配置堆疊。
  • 參數 3 -   擁有者 dll 名稱的位址。 執行 du < 位址 > 以讀取 dll 名稱。
  • 參數 4 -   擁有者 dll 的基底。 執行 .reload < dll_name > = < 位址 > 來重載擁有者 dll。 使用 'lm' 取得已載入和卸載模組的詳細資訊。

其他資訊
  • 測試層: 洩漏
  • 停止識別碼: COM_ALLOCATION
  • 停止程式碼: 900NAN
  • 嚴重性: 錯誤
  • 一次性錯誤: 
  • 錯誤報表: 打破
  • 記錄檔: 是的
  • 建立回溯: 是的

另請參閱

應用程式驗證器 - 停止代碼和定義

應用程式驗證器 - 概觀

應用程式驗證器 - 功能

應用程式驗證器 - 測試應用程式

應用程式驗證器 - 應用程式驗證器內的測試

應用程式驗證器 - 對應用程式驗證器停止進行偵錯

應用程式驗證器 - 常見問題