Share via


Procedimiento Usar winmdidl.exe y midlrt.exe para crear archivos .h desde metadatos de Windows

Winmdidl.exe y midlrt.exe permiten la interacción de nivel COM entre el código de C++ nativo y los componentes de Windows Runtime. Winmdidl.exe toma como entrada un archivo .winmd que contiene los metadatos para un componente de Windows Runtime y genera un archivo IDL. Midlrt.exe convierte ese archivo IDL en archivos de encabezado que el código de C++ puede utilizar. Ambas herramientas se ejecutan en la línea de comandos.

Estas herramientas se utilizan en dos escenarios principales:

  • Crear un archivo IDL personalizado y archivos de encabezado de modo que una aplicación de C++ escrita mediante la Biblioteca de plantillas de Windows Runtime (WRL) pueda utilizar un componente personalizado de Windows Runtime.

  • Generar archivos de proxy y código auxiliar para los tipos de eventos definidos por el usuario en un componente de Windows Runtime. Para más información, consulte Eventos personalizados y descriptores de acceso de eventos en componentes de Windows Runtime.

Estas herramientas solo son necesarias para analizar archivos .winmd personalizados. Los archivos .idl y .h para componentes del sistema operativo Windows se generan automáticamente. De forma predeterminada en Windows 8.1, se encuentran en \Archivos de programa (x86)\Windows Kits\8.1\Include\winrt\.

Ubicación de las herramientas

De forma predeterminada en Windows 8.1, winmdidl.exe y midlrt.exe se encuentran en C:\Archivos de programa (x86)\Windows Kits\8.1\. Hay otras versiones de las herramientas disponibles en las carpetas \bin\x86\ y \bin\x64\.

Argumentos de la línea de comandos de Winmdidl

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

/nologo
Impide que se muestre en la consola el mensaje de copyright y el número de versión de winmdidl.

/suppressversioncheck
No se utiliza.

/time
Muestra el tiempo de ejecución total en el resultado de la consola.

/outdir:dir
Especifica un directorio de salida. Si la ruta de acceso contiene espacios en blanco, utilice comillas. El directorio de salida predeterminado es <unidad>:\Users\<nombre de usuario>\AppData\Local\VirtualStore\Program Files (x86)\Microsoft Visual Studio 12.0\.

/banner:file
Especifica un archivo que contiene el texto personalizado que se va a anteponer al mensaje de copyright predeterminado y al número de versión de winmdidl en la parte superior del archivo .idl generado. Si la ruta de acceso contiene espacios en blanco, utilice comillas.

/utf8
Hace que el archivo tenga formato UTF-8.

Winmdfile
Nombre del archivo .winmd que se va a analizar. Si la ruta de acceso contiene espacios en blanco, utilice comillas.

Argumentos de la línea de comandos de Midlrt

Consulte MIDLRT y los componentes de Windows Runtime.

Ejemplos

En el ejemplo siguiente se muestra un comando winmdidl en un símbolo del sistema de Visual Studio x86. Especifica un directorio de salida y un archivo que contiene el texto de la pancarta especial que se va a agregar al archivo .idl generado.

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"

En el ejemplo siguiente se muestra la pantalla de la consola de winmdidl que indica que la operación se realizó correctamente.

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

A continuación, se ejecuta midlrt en el archivo IDL generado. Observe que el argumento metadata_dir se especifica después del nombre del archivo .idl. La ruta de acceso de \WinMetadata\ es obligatoria; es la ubicación de 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"

Comentarios

El archivo de salida de una operación de winmdidl tiene el mismo nombre que el archivo de entrada, pero tiene la extensión de nombre de archivo .idl.

Si va a desarrollar un componente de Windows en tiempo de ejecución al que se obtendrá acceso desde WRL, puede especificar que winmdidl.exe y midlrt.exe se ejecuten como pasos posteriores a la compilación para que se generen los archivos .idl y .h en cada compilación. Para ver un ejemplo, consulte Generación de eventos de componentes de Windows Runtime.