Freigeben über


invalidVariant-MDA

Der invalidVariant-MDA (Managed Debugging Assistant, Assistent für verwaltetes Debuggen) wird aktiviert, wenn während des Aufrufs von verwaltetem Code aus systemeigenen oder nicht verwalteten Code eine ungültige VARIANT-Struktur erkannt wird.

Symptome

Unerwartetes Verhalten während des Übergangs zwischen systemeigenem und verwaltetem Code, bei dem das Marshalling einer VARIANT-Struktur in ein Objekt erfolgt.

Ursache

Es wird eine fehlerhafte VARIANT-Struktur von systemeigenem Code an verwalteten Code übergeben. Die CLR versucht, ein Marshalling dieser VARIANT-Struktur in ein Objekt durchzuführen. Der MDA wird aktiviert, wenn die VARIANT-Struktur ungültig ist. Beispiele für ungültige VARIANT-Strukturen sind eine VARIANT-Struktur mit VARTYPE VT_EMPTY | VT_BYREF oder eine VARIANT-Struktur mit VARTYPE VT_VARIANT.

Lösung

Der systemeigene oder nicht verwaltete Code, der die VARIANT-Struktur übergibt, muss sicherstellen, dass die VARIANT-Struktur richtig formatiert und initialisiert ist.

Auswirkungen auf die Laufzeit

Der MDA hat keine Auswirkungen auf das Verhalten der CLR.

Output

Eine Meldung des MDA, dass die CLR die Übergabe einer ungültigen VARIANT-Struktur an verwalteten Code durch ein nicht verwaltetes Modul erkannt hat.

Konfiguration

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

Siehe auch

Referenz

MarshalAsAttribute

Konzepte

Diagnostizieren von Fehlern mit Assistenten für verwaltetes Debuggen

Interop-Marshalling

Weitere Ressourcen

Interoperabilität