共用方式為


invalidVariant MDA

從機器碼或 Unmanaged 程式碼對 Mananged 程式碼進行呼叫,而遭遇到無效的 VARIANT 結構時,invalidVariant Managed 偵錯助理 (MDA) 就會啟動。

症狀

在機器碼和 Managed 程式碼之間進行轉換,而牽涉到 VARIANT 到物件的封送處理 (Marshaling) 時,便會發生未預期的行為。

原因

機器碼傳遞不正確的 VARIANT 結構至 Managed 程式碼。 執行階段會嘗試將這個 VARIANT 封送處理至物件,並在 VARIANT 無效時啟動這個 MDA。 無效 VARIANT 的範例,包括具有 VARTYPE VT_EMPTY | VT_BYREF 的 VARIANT,或是具有 VARTYPE VT_VARIANT 的 VARIANT

解決方式

傳遞 VARIANT 的機器碼或 Unmananged 程式碼,必須確定 VARIANT 組成和初始化正確。

對執行階段的影響

這個 MDA 對執行階段的行為沒有任何影響。

Output

MDA 訊息,表示執行階段已偵測到 Unmanaged 模組將無效的 VARIANT 傳遞至 Managed 程式碼。

組態

<mdaConfig>
  <assistants>
    <invalidVariant />
  </assistants>
</mdaConfig>

請參閱

參考

MarshalAsAttribute

概念

診斷 Managed 偵錯助理的錯誤

Interop 封送處理

其他資源

互通性