Porady: Użyj winmdidl.exe i midlrt.exe, aby utworzyć pliki .h z metadanych systemu Windows

Winmdidl.exe i midlrt.exe umożliwiają interakcję na poziomie COM między natywnym kodem C++ a składnikami środowisko wykonawcze systemu Windows. Plik Winmdidl.exe przyjmuje jako dane wejściowe pliku winmd zawierającego metadane składnika środowisko wykonawcze systemu Windows i wyprowadza plik IDL. Plik IDL midlrt.exe konwertuje na pliki nagłówkowe, które może wykorzystywać kod C++. Oba narzędzia są uruchamiane w wierszu polecenia.

Te narzędzia są używane w dwóch głównych scenariuszach:

  • Tworzenie niestandardowych plików IDL i nagłówków, dzięki czemu aplikacja języka C++ napisana przy użyciu biblioteki szablonów środowisko wykonawcze systemu Windows (WRL) może korzystać z niestandardowego składnika środowisko wykonawcze systemu Windows.

  • Generowanie plików proxy i wycinków dla typów zdarzeń zdefiniowanych przez użytkownika w składniku środowisko wykonawcze systemu Windows. Aby uzyskać więcej informacji, zobacz Niestandardowe zdarzenia i metody dostępu zdarzeń w składnikach środowisko wykonawcze systemu Windows.

Te narzędzia są wymagane tylko do analizowania niestandardowych plików winmd. Pliki .idl i .h dla składników systemu operacyjnego Windows są już generowane. Domyślnie w systemie Windows 8.1 znajdują się one w \Program Files (x86)\Windows Kits\8.1\Include\winrt\.

Lokalizacja narzędzi

Domyślnie w systemie [Windows 8.1 winmdidl.exe i midlrt.exe znajdują się w folderze C:\Program Files (x86)\Windows Kits\8.1\. Wersje narzędzi są również dostępne w folderach \bin\x86\ i \bin\x64\.

Argumenty wiersza polecenia winmdidl

Winmdidl.exe [/nologo] [/suppressversioncheck] [/time] [/outdir:dir] [/banner:file] [/utf8] Winmdfile

/nologo
Uniemożliwia wyświetlanie konsoli komunikatu o prawach autorskich winmdidl i numeru wersji.

/suppressversioncheck
Nie używany.

/Czas
Wyświetla łączny czas wykonywania w danych wyjściowych konsoli.

/outdir:dir
Określa katalog wyjściowy. Jeśli ścieżka zawiera spacje, użyj cudzysłowów. Domyślny katalog wyjściowy to <drive>:\Users\<username>\AppData\Local\VirtualStore\Program Files (x86)\Microsoft Visual Studio 12.0\.

/banner:file
Określa plik zawierający niestandardowy tekst, który ma poprzedzać domyślny komunikat o prawach autorskich i numer wersji winmdidl w górnej części wygenerowanego pliku idl. Jeśli ścieżka zawiera spacje, użyj cudzysłowów.

/utf8
Powoduje sformatowanie pliku jako UTF-8.

Winmdfile
Nazwa pliku winmd do analizy. Jeśli ścieżka zawiera spacje, użyj cudzysłowów.

Argumenty wiersza polecenia midlrt

Zobacz Składniki MIDLRT i środowisko wykonawcze systemu Windows.

Przykłady

Poniższy przykład przedstawia polecenie winmdidl w wierszu polecenia programu Visual Studio x86. Określa katalog wyjściowy i plik zawierający specjalny tekst transparentu, który ma zostać dodany do wygenerowanego pliku idl.

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"

W następnym przykładzie pokazano ekran konsoli z winmdidl, który wskazuje, że operacja zakończyła się pomyślnie.

Generowanie c:\users\giraffe\documents\\Test_for_winmdidl.idl

Następnie aplikacja midlrt jest uruchamiana w wygenerowanych plikach IDL. Zwróć uwagę, że argument metadata_dir jest określony po nazwie pliku idl. Ścieżka \WinMetadata\ jest wymagana — jest to lokalizacja pliku 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"

Uwagi

Plik wyjściowy z operacji winmdidl ma taką samą nazwę jak plik wejściowy, ale ma rozszerzenie nazwy pliku idl.

Jeśli tworzysz składnik środowisko wykonawcze systemu Windows, do którego będzie uzyskiwany dostęp z listy WRL, możesz określić winmdidl.exe i midlrt.exe do uruchomienia jako kroki po kompilacji, aby pliki idl i h były generowane na każdej kompilacji. Aby zapoznać się z przykładem, zobacz Podnoszenie zdarzeń w składnikach środowisko wykonawcze systemu Windows.