Función GetFileMUIInfo (winnls.h)

Recupera información relacionada con los recursos sobre un archivo.

Sintaxis

BOOL GetFileMUIInfo(
  [in]                DWORD        dwFlags,
  [in]                PCWSTR       pcwszFilePath,
  [in, out, optional] PFILEMUIINFO pFileMUIInfo,
  [in, out]           DWORD        *pcbFileMUIInfo
);

Parámetros

[in] dwFlags

Marcas que especifican la información que se va a recuperar. Se permite cualquier combinación de las marcas siguientes. El valor predeterminado de las marcas es MUI_QUERY_TYPE | MUI_QUERY_CHECKSUM.

Valor Significado
MUI_QUERY_TYPE
Recupere uno de los valores siguientes en el miembro dwFileType de FILEMUIINFO:
  • MUI_FILETYPE_NOT_LANGUAGE_NEUTRAL: el archivo de entrada especificado no tiene datos de configuración de recursos. Por lo tanto, no es un archivo LN ni un archivo de recursos específico del lenguaje. Este tipo de archivo es típico para los archivos ejecutables más antiguos. Si se especifica este tipo de archivo, la función no recuperará información útil para los otros tipos.
  • MUI_FILETYPE_LANGUAGE_NEUTRAL_MAIN. El archivo de entrada es un archivo LN.
  • MUI_FILETYPE_LANGUAGE_NEUTRAL_MUI. El archivo de entrada es un archivo de recursos específico del idioma asociado a un archivo LN.
MUI_QUERY_CHECKSUM
Recupere la suma de comprobación de recursos del archivo de entrada en el miembro pChecksum de FILEMUIINFO. Si el archivo de entrada no tiene datos de configuración de recursos, este miembro de la estructura contiene 0.
MUI_QUERY_LANGUAGE_NAME
Recupere el idioma asociado al archivo de entrada. Para un archivo de recursos específico del idioma, esta marca solicita el idioma asociado. Para un archivo LN, esta marca solicita el idioma de los recursos de reserva finales para el módulo, que puede estar en el archivo LN o en un archivo de recursos específico del lenguaje independiente al que hacen referencia los datos de configuración de recursos del archivo LN. Para obtener más información, vea la sección Comentarios.
MUI_QUERY_RESOURCE_TYPES
Recupere listas de tipos de recursos en los archivos de recursos específicos del lenguaje y los archivos LN tal como se especifican en los datos de configuración de recursos. Consulte la sección Comentarios para obtener acceso a esta información.

[in] pcwszFilePath

Puntero a una cadena terminada en null que indica la ruta de acceso al archivo. Normalmente, el archivo es un archivo LN o un archivo de recursos específico del lenguaje. Si no es uno de estos tipos, el único valor significativo que recupera la función es MUI_FILETYPE_NOT_LANGUAGE_NEUTRAL. La función solo recupera este valor si se establece la marca MUI_QUERY_RESOURCE_TYPES.

[in, out, optional] pFileMUIInfo

Puntero a un búfer que contiene información de archivo en una estructura FILEMUIINFO y, posiblemente, en los datos siguientes a esa estructura. Es posible que el búfer de información tenga que ser mucho mayor que el tamaño de la propia estructura. Según la configuración de la marca, la función puede almacenar información considerable después de la estructura, en desplazamientos recuperados en la estructura. Para obtener más información, vea la sección Comentarios.

Como alternativa, la aplicación puede establecer este parámetro en NULL si pcbFileMUIInfo está establecido en 0. En este caso, la función recupera el tamaño necesario para el búfer de información en pcbFileMUIInfo.

Nota Si el valor de pFileMUIInfo no es NULL, el miembro dwSize debe establecerse en el tamaño de la estructura FILEMUIINFO (incluido el búfer de información) y el miembro dwVersion debe establecerse en la versión actual de 0x001.
 

[in, out] pcbFileMUIInfo

Puntero al tamaño del búfer, en bytes, para la información del archivo indicada por pFileMUIInfo. Si la función se devuelve correctamente, este parámetro contiene el tamaño del búfer de información de archivo recuperado y la estructura FILEMUIINFO que lo contiene.

Como alternativa, la aplicación puede establecer este parámetro en 0 si establece NULL en pFileMUIInfo. En este caso, la función recupera el tamaño de búfer de información de archivo necesario en pcbFileMUIInfo. Para asignar la cantidad correcta de memoria, este valor debe agregarse al tamaño de la propia estructura FILEMUIINFO .

Nota El valor de este parámetro debe coincidir con el valor del miembro dwSize de FILEMUIINFO si el valor de pFileMUIInfo no es NULL.
 

Valor devuelto

Devuelve TRUE si es correcto o FALSE de lo contrario. Para obtener información de error extendida, la aplicación puede llamar a GetLastError.

Comentarios

Para la marca MUI_QUERY_LANGUAGE_NAME, esta función recupera un desplazamiento, en bytes, desde el principio de FILEMUIINFO en el miembro dwLanguageNameOffset .

A continuación se muestra el código de ejemplo que tiene acceso al nombre del idioma asociado al archivo de entrada:

LPWSTR lpszLang = reinterpret_cast<LPWSTR>(
        reinterpret_cast<BYTE*>(pFileMUIInfo) +
        pFileMUIInfo->dwLanguageNameOffset);

Para la marca MUI_QUERY_RESOURCE_TYPES, esta función recupera información del archivo de recursos específico del lenguaje en los siguientes miembros FILEMUIINFO :

  • El miembro dwTypeIDMUIOffset contiene el desplazamiento a una matriz de identificadores de recursos contenidos en el archivo de recursos específico del idioma.
  • El miembro dwTypeIDMUISize contiene el tamaño de la matriz de identificadores de recursos para el archivo de recursos específico del idioma.
  • El miembro dwTypeNameMUIOffset contiene el desplazamiento a una matriz de nombres de recursos contenidos en el archivo de recursos específico del lenguaje.
Si el archivo de entrada es un archivo LN, la función rellena todos los miembros de la estructura anteriores. Además, rellena los siguientes miembros:
  • El miembro dwTypeIDMainOffset contiene el desplazamiento a una matriz de identificadores de recursos contenidos en el archivo LN.
  • El miembro dwTypeIDMainSize contiene el tamaño de la matriz de identificadores de recursos para el archivo LN.
  • El miembro dwTypeNameMainOffset contiene el desplazamiento a una matriz de nombres de recursos contenidos en el archivo.
A continuación se muestra el código de ejemplo que tiene acceso a la matriz de identificadores de recursos en el archivo LN.
DWORD *pdwTypeID = reinterpret_cast<DWORD *>(
        reinterpret_cast<BYTE*>(pFileMUIInfo) +
        pFileMUIInfo->dwTypeIDMainOffset);

Nota Se tiene acceso a las listas de recursos específicos del lenguaje de la misma manera.
 
A continuación se muestra el código de ejemplo para acceder a la matriz de varios nombres de recursos en el archivo LN.
LPWSTR lpszNames = reinterpret_cast<LPWSTR>(
        reinterpret_cast<BYTE*>(pFileMUIInfo) +
        pFileMUIInfo->dwTypeNameMainOffset);

Nota Se tiene acceso a las listas de recursos específicos del lenguaje de la misma manera.
 
Cada uno de los ejemplos de código usa dos conversiones de reinterpretación. En primer lugar, el código se convierte en BYTE* para que la aritmética del puntero para el desplazamiento se realice en bytes. A continuación, el código convierte el puntero resultante al tipo deseado.

Otro enfoque consiste en escribir lo siguiente en lugar del código que se muestra en los ejemplos. El efecto es el mismo y la elección es estrictamente uno de los estilos.

DWORD ix = pFileMUIInfo->dwLanguageNameOffset - 
        offsetof(struct _FILEMUIINFO, abBuffer);
LPWSTR lpszLang = reinterpret_cast<LPWSTR>(&(pFileMUIInfo->abBuffer[ix]));

Firma de C#

[DllImport("Kernel32.dll", CharSet = CharSet.Auto)]
        static extern System.Boolean GetFileMUIInfo(
            System.UInt32 dwFlags,
            System.String pcwszFilePath,
            ref FILEMUIINFO pFileMUIInfo,
            ref System.UInt32 pcbFileMUIInfo
            );

Requisitos

Requisito Value
Cliente mínimo compatible Windows Vista [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado winnls.h (incluya Windows.h)
Library Kernel32.lib
Archivo DLL Kernel32.dll

Vea también

FILEMUIINFO

GetThreadUILanguage

Interfaz de usuario multilingüe

Funciones de interfaz de usuario multilingüe

SetThreadPreferredUILanguages

SetThreadUILanguage