Vorgehensweise: Verwenden von „winmdidl.exe“ und „midlrt.exe“ zum Erstellen von H-Dateien aus Windows-Metadaten
"Winmdidl.exe" und "midlrt.exe" aktivieren Interaktionen auf COM-Ebene zwischen systemeigenem C++-Code und Komponenten für Windows-Runtime. "Winmdidl.exe" verwendet als Eingabe eine WINMD-Datei, die Metadaten für eine Komponente für Windows-Runtime enthält, und gibt eine IDL-Datei aus. "Midlrt.exe" konvertiert diese IDL-Datei in Headerdateien, die der C++-Code verarbeiten kann. Beide Tools werden an der Befehlszeile ausgeführt.
Sie verwenden diese Tools in zwei Hauptszenarien:
Erstellen von benutzerdefinierten IDL-Dateien und Headerdateien, sodass eine C++-App, die mithilfe der Vorlagenbibliothek für Windows-Runtime geschrieben wurde, eine benutzerdefinierte Komponente für Windows-Runtime verarbeiten kann
Generieren von Proxy- und Stub-Dateien für benutzerdefinierte Ereignistypen in einer Komponente für Windows-Runtime Weitere Informationen finden Sie unter Benutzerdefinierte Ereignisse und Ereignisaccessoren in Windows-Runtime Komponenten.
Diese Tools sind nur für das Analysieren von benutzerdefinierten WINMD-Dateien erforderlich. Die IDL- und H-Dateien für Komponenten des Windows-Betriebssystems sind bereits für Sie generiert. Standardmäßig befinden sie sich in Windows 8.1 unter \Programme (x86)\Windows Kits\8.1\Include\winrt\.
Speicherort der Tools
In [Windows 8.1 befinden sich winmdidl.exe und midlrt.exe standardmäßig in C:\Programme (x86)\Windows Kits\8.1\. Versionen der Tools sind auch in den Ordnern "\bin\x86\" und "\bin\x64\" verfügbar.
Winmdidl-Befehlszeilenargumente
Winmdidl.exe [/nologo] [/suppressversioncheck] [/time] [/outdir:dir] [/banner:file] [/utf8] Winmdfile
/nologo
Verhindert die Anzeige der winmdidl-Copyrightmeldung und -Versionsnummer auf der Konsole.
/suppressversioncheck
Wird nicht verwendet.
/Zeit
Zeigt die gesamte Ausführungszeit in der Konsolenausgabe an.
/outdir:dir
Gibt ein Ausgabeverzeichnis an. Wenn der Pfad Leerzeichen enthält, verwenden Sie Anführungszeichen. Das Standardausgabeverzeichnis ist <Laufwerk>:\Benutzer\<Benutzername>\AppData\Local\VirtualStore\Programme (x86)\Microsoft Visual Studio 12.0\.
/banner:file
Gibt eine Datei an, die benutzerdefinierten Text enthält, der am Anfang der generierten IDL-Datei der standardmäßigen Copyrightmeldung und winmdidl-Versionsnummer vorangestellt wird. Wenn der Pfad Leerzeichen enthält, verwenden Sie Anführungszeichen.
/utf8
Bewirkt, dass die Datei als UTF-8 formatiert wird.
Winmdfile
Der Dateiname der zu analysierenden WINMD-Datei. Wenn der Pfad Leerzeichen enthält, verwenden Sie Anführungszeichen.
Midlrt-Befehlszeilenargumente
Siehe MIDLRT- und Windows-Runtime-Komponenten.
Beispiele
Das folgende Beispiel zeigt einen winmdidl-Befehl an einer Visual Studio-x86-Eingabeaufforderung. Es wird ein Ausgabeverzeichnis und eine Datei angegeben, die speziellen Bannertext enthält, der der generierten IDL-Datei hinzugefügt wird.
C:\Program Files (x86)\Microsoft Visual Studio 12.0>winmdidl /nologo /outdir:c:\users\giraffe\documents\ /banner:c:\users\giraffe\documents\banner.txt "C:\Users\giraffe\Documents\Visual Studio 2013\Projects\Test_for_winmdidl\Debug\Test_for_winmdidl\test_for_winmdidl.winmd"
Im folgenden Beispiel wird die Konsolenanzeige von "winmdidl" gezeigt, die angibt, dass der Vorgang erfolgreich war.
Generieren von c:\users\giraffe\documents\\Test_for_winmdidl.idl
Anschließend wird "midlrt" auf der generierten IDL-Datei ausgeführt. Beachten Sie, dass das argument metadata_dir nach dem Namen der IDL-Datei angegeben wird. Der Pfad von "\WinMetadata\" ist erforderlich – es ist der Speicherort für "windows.winmd".
C:\Program Files (x86)\Microsoft Visual Studio 12.0> midlrt "c:\users\username\documents\test_for_winmdidl.idl" /metadata_dir "C:\Windows\System32\WinMetadata"
Hinweise
Die Ausgabedatei eines winmdidl-Vorgangs weist denselben Namen wie die Eingabedatei auf, hat aber die Dateierweiterung IDL.
Wenn Sie eine Komponente für Windows-Runtime entwickeln, auf die von WRL zugegriffen wird, können Sie "winmdidl.exe" und "midlrt.exe" angeben, um als Postbuildschritte ausgeführt zu werden, sodass die IDL- und H-Dateien für jedes Build erzeugt werden. Ein Beispiel finden Sie unter Auslösen von Ereignissen in Windows-Runtime Komponenten.