Función LoadLibraryExA (libloaderapi.h)

Carga el módulo especificado en el espacio de direcciones del proceso de llamada. El módulo especificado puede hacer que se carguen otros módulos.

Sintaxis

HMODULE LoadLibraryExA(
  [in] LPCSTR lpLibFileName,
       HANDLE hFile,
  [in] DWORD  dwFlags
);

Parámetros

[in] lpLibFileName

Cadena que especifica el nombre de archivo del módulo que se va a cargar. Este nombre no está relacionado con el nombre almacenado en un módulo de biblioteca, tal y como especifica la palabra clave LIBRARY en el archivo module-definition (.def).

El módulo puede ser un módulo de biblioteca (un archivo .dll) o un módulo ejecutable (un archivo .exe). Si el módulo especificado es un módulo ejecutable, no se cargan las importaciones estáticas; en su lugar, el módulo se carga como si se especificara DONT_RESOLVE_DLL_REFERENCES . Consulte el parámetro dwFlags para obtener más información.

Si la cadena especifica un nombre de módulo sin una ruta de acceso y se omite la extensión de nombre de archivo, la función anexa la extensión de biblioteca predeterminada ".DLL" al nombre del módulo. Para evitar que la función anexe ".DLL" al nombre del módulo, incluya un carácter de punto final (.) en la cadena de nombre del módulo.

Si la cadena especifica una ruta de acceso completa, la función solo busca esa ruta de acceso para el módulo. Al especificar una ruta de acceso, asegúrese de usar barras diagonales inversas (\), no barras diagonales (/). Para obtener más información sobre las rutas de acceso, vea Asignar nombres a archivos, rutas de acceso y espacios de nombres.

Si la cadena especifica un nombre de módulo sin una ruta de acceso y más de un módulo cargado tiene el mismo nombre base y extensión, la función devuelve un identificador al módulo que se cargó primero.

Si la cadena especifica un nombre de módulo sin una ruta de acceso y un módulo del mismo nombre aún no se ha cargado, o si la cadena especifica un nombre de módulo con una ruta de acceso relativa, la función busca el módulo especificado. La función también busca módulos si la carga del módulo especificado hace que el sistema cargue otros módulos asociados (es decir, si el módulo tiene dependencias). Los directorios que se buscan y el orden en el que se buscan dependen de la ruta de acceso especificada y del parámetro dwFlags . Para obtener más información, vea la sección Comentarios.

Si la función no encuentra el módulo o una de sus dependencias, se produce un error en la función.

hFile

Este parámetro se reserva para uso futuro. Debe ser NULL.

[in] dwFlags

Acción que se realizará al cargar el módulo. Si no se especifican marcas, el comportamiento de esta función es idéntico al de la función LoadLibrary . Este parámetro puede ser uno de los valores siguientes.

Valor Significado
DONT_RESOLVE_DLL_REFERENCES
0x00000001
Si se usa este valor y el módulo ejecutable es un archivo DLL, el sistema no llama a DllMain para la inicialización y finalización de procesos y subprocesos. Además, el sistema no carga módulos ejecutables adicionales a los que hace referencia el módulo especificado.
Nota No utilice este valor; solo se proporciona para la compatibilidad con versiones anteriores. Si planea acceder solo a datos o recursos en el archivo DLL, use LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE o LOAD_LIBRARY_AS_IMAGE_RESOURCE o ambos. De lo contrario, cargue la biblioteca como un módulo DLL o ejecutable mediante la función LoadLibrary .
 
LOAD_IGNORE_CODE_AUTHZ_LEVEL
0x00000010
Si se usa este valor, el sistema no comprueba las reglas de AppLocker ni aplica directivas de restricción de software para el archivo DLL. Esta acción solo se aplica al archivo DLL que se carga y no a sus dependencias. Este valor se recomienda para su uso en programas de instalación que deben ejecutar archivos DLL extraídos durante la instalación.

Windows Server 2008 R2 y Windows 7: En los sistemas con KB2532445 instalados, el autor de la llamada debe ejecutarse como "LocalSystem" o "TrustedInstaller"; de lo contrario, el sistema omite esta marca. Para obtener más información, vea "Puede eludir las reglas de AppLocker mediante una macro de Office en un equipo que ejecuta Windows 7 o Windows Server 2008 R2" en la Base de conocimiento ayuda y soporte técnico en https://support.microsoft.com/kb/2532445.

Windows Server 2008, Windows Vista, Windows Server 2003 y Windows XP: AppLocker se introdujo en Windows 7 y Windows Server 2008 R2.

LOAD_LIBRARY_AS_DATAFILE
0x00000002
Si se usa este valor, el sistema asigna el archivo al espacio de direcciones virtuales del proceso de llamada como si fuera un archivo de datos. No se hace nada para ejecutar o preparar la ejecución del archivo asignado. Por lo tanto, no puede llamar a funciones como GetModuleFileName, GetModuleHandle o GetProcAddress con este archivo DLL. El uso de este valor hace que las escrituras en memoria de solo lectura generen una infracción de acceso. Use esta marca cuando quiera cargar un archivo DLL solo para extraer mensajes o recursos de él.

Este valor se puede usar con LOAD_LIBRARY_AS_IMAGE_RESOURCE. Para obtener más información, vea la sección Comentarios.

LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE
0x00000040
De forma similar a LOAD_LIBRARY_AS_DATAFILE, excepto que el archivo DLL se abre con acceso de escritura exclusivo para el proceso de llamada. Otros procesos no pueden abrir el archivo DLL para el acceso de escritura mientras está en uso. Sin embargo, otros procesos pueden abrir el archivo DLL.

Este valor se puede usar con LOAD_LIBRARY_AS_IMAGE_RESOURCE. Para obtener más información, vea la sección Comentarios.

Windows Server 2003 y Windows XP: Este valor no se admite hasta Windows Vista.

LOAD_LIBRARY_AS_IMAGE_RESOURCE
0x00000020
Si se usa este valor, el sistema asigna el archivo al espacio de direcciones virtuales del proceso como un archivo de imagen. Sin embargo, el cargador no carga las importaciones estáticas ni realiza los demás pasos de inicialización habituales. Use esta marca cuando quiera cargar un archivo DLL solo para extraer mensajes o recursos de él.

A menos que la aplicación dependa del archivo que tenga el diseño en memoria de una imagen, este valor debe usarse con LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE o LOAD_LIBRARY_AS_DATAFILE. Para obtener más información, vea la sección Comentarios.

Windows Server 2003 y Windows XP: Este valor no se admite hasta Windows Vista.

LOAD_LIBRARY_SEARCH_APPLICATION_DIR
0x00000200
Si se usa este valor, se busca en el directorio de instalación de la aplicación el archivo DLL y sus dependencias. No se buscan directorios en la ruta de acceso de búsqueda estándar. Este valor no se puede combinar con LOAD_WITH_ALTERED_SEARCH_PATH.

Windows 7, Windows Server 2008 R2, Windows Vista y Windows Server 2008: Este valor requiere que se instale KB2533623 .

Windows Server 2003 y Windows XP: Este valor no se admite.

LOAD_LIBRARY_SEARCH_DEFAULT_DIRS
0x00001000
Este valor es una combinación de LOAD_LIBRARY_SEARCH_APPLICATION_DIR, LOAD_LIBRARY_SEARCH_SYSTEM32 y LOAD_LIBRARY_SEARCH_USER_DIRS. No se buscan directorios en la ruta de acceso de búsqueda estándar. Este valor no se puede combinar con LOAD_WITH_ALTERED_SEARCH_PATH.

Este valor representa el número máximo recomendado de directorios que una aplicación debe incluir en su ruta de búsqueda dll.

Windows 7, Windows Server 2008 R2, Windows Vista y Windows Server 2008: Este valor requiere que se instale KB2533623 .

Windows Server 2003 y Windows XP: Este valor no se admite.

LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR
0x00000100
Si se usa este valor, el directorio que contiene el archivo DLL se agrega temporalmente al principio de la lista de directorios que se buscan en las dependencias del archivo DLL. No se buscan directorios en la ruta de acceso de búsqueda estándar.

El parámetro lpFileName debe especificar una ruta de acceso completa. Este valor no se puede combinar con LOAD_WITH_ALTERED_SEARCH_PATH.

Por ejemplo, si Lib2.dll es una dependencia de C:\Dir1\Lib1.dll, cargar Lib1.dll con este valor hace que el sistema busque Lib2.dll solo en C:\Dir1. Para buscar Lib2.dll en C:\Dir1 y todos los directorios de la ruta de búsqueda dll, combine este valor con LOAD_LIBRARY_SEARCH_DEFAULT_DIRS.

Windows 7, Windows Server 2008 R2, Windows Vista y Windows Server 2008: Este valor requiere que se instale KB2533623 .

Windows Server 2003 y Windows XP: Este valor no se admite.

LOAD_LIBRARY_SEARCH_SYSTEM32
0x00000800
Si se usa este valor, se busca en %windows%\system32 el archivo DLL y sus dependencias. No se buscan directorios en la ruta de acceso de búsqueda estándar. Este valor no se puede combinar con LOAD_WITH_ALTERED_SEARCH_PATH.

Windows 7, Windows Server 2008 R2, Windows Vista y Windows Server 2008: Este valor requiere que se instale KB2533623 .

Windows Server 2003 y Windows XP: Este valor no se admite.

LOAD_LIBRARY_SEARCH_USER_DIRS
0x00000400
Si se usa este valor, se buscan los directorios agregados mediante AddDllDirectory o la función SetDllDirectory para el archivo DLL y sus dependencias. Si se ha agregado más de un directorio, no se especifica el orden en que se buscan los directorios. No se buscan directorios en la ruta de acceso de búsqueda estándar. Este valor no se puede combinar con LOAD_WITH_ALTERED_SEARCH_PATH.

Windows 7, Windows Server 2008 R2, Windows Vista y Windows Server 2008: Este valor requiere que se instale KB2533623 .

Windows Server 2003 y Windows XP: Este valor no se admite.

LOAD_WITH_ALTERED_SEARCH_PATH
0x00000008
Si se usa este valor y lpFileName especifica una ruta de acceso absoluta, el sistema usa la estrategia de búsqueda de archivos alternativa descrita en la sección Comentarios para buscar módulos ejecutables asociados que el módulo especificado hace que se cargue. Si se usa este valor y lpFileName especifica una ruta de acceso relativa, el comportamiento no está definido.

Si no se usa este valor o si lpFileName no especifica una ruta de acceso, el sistema usa la estrategia de búsqueda estándar que se describe en la sección Comentarios para buscar módulos ejecutables asociados que el módulo especificado hace que se cargue.

Este valor no se puede combinar con ninguna marca de LOAD_LIBRARY_SEARCH .

LOAD_LIBRARY_REQUIRE_SIGNED_TARGET
0x00000080
Especifica que la firma digital de la imagen binaria debe estar activada en tiempo de carga.

Este valor requiere Windows 8.1, Windows 10 o posterior.

LOAD_LIBRARY_SAFE_CURRENT_DIRS
0x00002000
Si se usa este valor, solo se permite cargar un archivo DLL para su ejecución desde el directorio actual si está en un directorio de la lista carga segura.

Valor devuelto

Si la función se ejecuta correctamente, el valor devuelto es un identificador para el módulo cargado.

Si la función no se realiza correctamente, el valor devuelto es NULL. Para obtener información de error extendida, llame a GetLastError.

Comentarios

La función LoadLibraryEx es muy similar a la función LoadLibrary . Las diferencias constan de un conjunto de comportamientos opcionales que Proporciona LoadLibraryEx :

  • LoadLibraryEx puede cargar un módulo DLL sin llamar a la función DllMain del archivo DLL.
  • LoadLibraryEx puede cargar un módulo de una manera optimizada para el caso en el que nunca se ejecutará el módulo, cargando el módulo como si fuera un archivo de datos.
  • LoadLibraryEx puede encontrar módulos y sus módulos asociados mediante cualquiera de las dos estrategias de búsqueda o puede buscar en un conjunto específico del proceso de directorios.
Para seleccionar estos comportamientos opcionales, establezca el parámetro dwFlags ; Si dwFlags es cero, LoadLibraryEx se comporta de forma idéntica a LoadLibrary.

El proceso de llamada puede usar el identificador devuelto por LoadLibraryEx para identificar el módulo en llamadas a las funciones GetProcAddress, FindResource y LoadResource .

Para habilitar o deshabilitar los mensajes de error mostrados por el cargador durante las cargas dll, use la función SetErrorMode .

No es seguro llamar a LoadLibraryEx desde DllMain. Para obtener más información, vea la sección Comentarios de DllMain.

Visual C++: El compilador de Visual C++ admite una sintaxis que permite declarar variables locales de subprocesos: _declspec(thread). Si usa esta sintaxis en un archivo DLL, no podrá cargar el archivo DLL explícitamente mediante LoadLibraryEx en versiones de Windows anteriores a Windows Vista. Si el archivo DLL se cargará explícitamente, debe usar las funciones de almacenamiento local del subproceso en lugar de _declspec(thread). Para obtener un ejemplo, vea Uso del almacenamiento local de subprocesos en una biblioteca de vínculos dinámicos.

Carga de un archivo DLL como un archivo de datos o un recurso de imagen

Los valores de LOAD_LIBRARY_AS_DATAFILE, LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE y LOAD_LIBRARY_AS_IMAGE_RESOURCE afectan al recuento de referencias por proceso y a la carga del módulo especificado. Si se especifica alguno de estos valores para el parámetro dwFlags , el cargador comprueba si el proceso ya ha cargado el módulo como un archivo DLL ejecutable. Si es así, esto significa que el módulo ya está asignado al espacio de direcciones virtuales del proceso de llamada. En este caso, LoadLibraryEx devuelve un identificador al archivo DLL e incrementa el recuento de referencias de DLL. Si el módulo DLL aún no se cargó como dll, el sistema asigna el módulo como un archivo de datos o imagen y no como un archivo DLL ejecutable. En este caso, LoadLibraryEx devuelve un identificador al archivo de imagen o datos cargados, pero no incrementa el recuento de referencias del módulo y no hace que el módulo sea visible para funciones como CreateToolhelp32Snapshot o EnumProcessModules.

Si se llama a LoadLibraryEx dos veces para el mismo archivo con LOAD_LIBRARY_AS_DATAFILE, LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE o LOAD_LIBRARY_AS_IMAGE_RESOURCE, se crean dos asignaciones independientes para el archivo.

Cuando se usa el valor de LOAD_LIBRARY_AS_IMAGE_RESOURCE , el módulo se carga como una imagen mediante la expansión de alineación de la sección portable ejecutable (PE). Las direcciones virtuales relativas (RVA) no tienen que asignarse a direcciones de disco, por lo que los recursos se pueden recuperar más rápidamente del módulo. Especificar LOAD_LIBRARY_AS_IMAGE_RESOURCE impide que otros procesos modifiquen el módulo mientras se cargan.

A menos que una aplicación dependa de características de asignación de imágenes específicas, se debe usar el valor LOAD_LIBRARY_AS_IMAGE_RESOURCE con LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE o LOAD_LIBRARY_AS_DATAFILE. Esto permite al cargador elegir si cargar el módulo como un recurso de imagen o un archivo de datos, seleccionando la opción que permita al sistema compartir páginas de forma más eficaz. Las funciones de recursos como FindResource pueden usar cualquiera de las asignaciones.

Para determinar cómo se cargó un módulo, use una de las siguientes macros para probar el identificador devuelto por LoadLibraryEx.

#define LDR_IS_DATAFILE(handle)      (((ULONG_PTR)(handle)) &  (ULONG_PTR)1)
#define LDR_IS_IMAGEMAPPING(handle)  (((ULONG_PTR)(handle)) & (ULONG_PTR)2)
#define LDR_IS_RESOURCE(handle)      (LDR_IS_IMAGEMAPPING(handle) || LDR_IS_DATAFILE(handle))

En la tabla siguiente se describen estas macros.

Macro Descripción
LDR_IS_DATAFILE(handle) Si esta macro devuelve TRUE, el módulo se cargó como un archivo de datos (LOAD_LIBRARY_AS_DATAFILE o LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE).
LDR_IS_IMAGEMAPPING(handle) Si esta macro devuelve TRUE, el módulo se cargó como un archivo de imagen (LOAD_LIBRARY_AS_IMAGE_RESOURCE).
LDR_IS_RESOURCE(handle) Si esta macro devuelve TRUE, el módulo se cargó como un archivo de datos o un archivo de imagen.
 

Use la función FreeLibrary para liberar un módulo cargado, independientemente de si el módulo ha provocado que se incremente su recuento de referencias. Si el módulo se cargó como un archivo de datos o imagen, la asignación se destruye, pero el recuento de referencias no se reduce. De lo contrario, el recuento de referencias de DLL se reduce. Por lo tanto, es seguro llamar a FreeLibrary con cualquier identificador devuelto por LoadLibraryEx.

Búsqueda de archivos DLL y dependencias

La ruta de acceso de búsqueda es el conjunto de directorios que se buscan en un archivo DLL. La función LoadLibraryEx puede buscar un archivo DLL mediante una ruta de búsqueda estándar o una ruta de búsqueda modificada, o bien puede usar una ruta de búsqueda específica del proceso establecida con las funciones SetDefaultDllDirectories y AddDllDirectory . Para obtener una lista de directorios y el orden en que se buscan, consulte Orden de búsqueda de la biblioteca de vínculos dinámicos.

La función LoadLibraryEx usa la ruta de acceso de búsqueda estándar en los casos siguientes:

  • El nombre de archivo se especifica sin una ruta de acceso y el nombre del archivo base no coincide con el nombre de archivo base de un módulo cargado y no se usa ninguna de las marcas de LOAD_LIBRARY_SEARCH .
  • Se especifica una ruta de acceso, pero no se usa LOAD_WITH_ALTERED_SEARCH_PATH .
  • La aplicación no ha especificado una ruta de búsqueda de DLL predeterminada para el proceso mediante SetDefaultDllDirectories.

Si lpFileName especifica una ruta de acceso relativa, toda la ruta de acceso relativa se anexa a todos los tokens de la ruta de búsqueda dll. Para cargar un módulo desde una ruta de acceso relativa sin buscar en ninguna otra ruta de acceso, use GetFullPathName para obtener una ruta de acceso no rerelative y llamar a LoadLibraryEx con la ruta de acceso norelative. Si el módulo se carga como un archivo de datos y la ruta de acceso relativa comienza por "." o "..", la ruta de acceso relativa se trata como una ruta de acceso absoluta.

Si lpFileName especifica una ruta de acceso absoluta y dwFlags se establece en LOAD_WITH_ALTERED_SEARCH_PATH, LoadLibraryEx usa la ruta de acceso de búsqueda modificada. El comportamiento no está definido cuando se establece LOAD_WITH_ALTERED_SEARCH_PATH marca y lpFileName especifica una ruta de acceso relativa.

La función SetDllDirectory se puede usar para modificar la ruta de acceso de búsqueda. Esta solución es mejor que usar SetCurrentDirectory o codificar de forma rígida la ruta de acceso completa al archivo DLL. Sin embargo, tenga en cuenta que el uso de SetDllDirectory deshabilita eficazmente el modo de búsqueda de DLL seguro mientras el directorio especificado está en la ruta de búsqueda y no es seguro para subprocesos. Si es posible, es mejor usar AddDllDirectory para modificar una ruta de búsqueda de proceso predeterminada. Para más información, vea Orden de búsqueda de las bibliotecas de vínculos dinámicos.

Una aplicación puede especificar los directorios para buscar una sola llamada a LoadLibraryEx mediante las marcas LOAD_LIBRARY_SEARCH_* . Si se especifica más de una marca de LOAD_LIBRARY_SEARCH , se buscarán en los directorios en el orden siguiente:

  • Directorio que contiene el archivo DLL (LOAD_LIBRARY_SEARCH_DLL_LOAD_DIR). Este directorio solo se busca en las dependencias del archivo DLL que se van a cargar.
  • Directorio de aplicación (LOAD_LIBRARY_SEARCH_APPLICATION_DIR).
  • Las rutas de acceso agregadas explícitamente a la ruta de búsqueda de la aplicación con la función AddDllDirectory (LOAD_LIBRARY_SEARCH_USER_DIRS) o la función SetDllDirectory . Si se ha agregado más de una ruta de acceso, no se especifica el orden en que se buscan las rutas de acceso.
  • Directorio System32 (LOAD_LIBRARY_SEARCH_SYSTEM32).

Windows 7, Windows Server 2008 R2, Windows Vista y Windows Server 2008: Las marcas de LOAD_LIBRARY_SEARCH_ están disponibles en los sistemas que tienen instalado KB2533623 . Para determinar si las marcas están disponibles, use GetProcAddress para obtener la dirección de la función AddDllDirectory, RemoveDllDirectory o SetDefaultDllDirectories . Si GetProcAddress se realiza correctamente, las marcas de LOAD_LIBRARY_SEARCH_ se pueden usar con LoadLibraryEx.

Si la aplicación ha usado la función SetDefaultDllDirectories para establecer una ruta de búsqueda dll para el proceso y no se usa ninguna de las marcas LOAD_LIBRARY_SEARCH_* , la función LoadLibraryEx usa la ruta de búsqueda dll del proceso en lugar de la ruta de acceso de búsqueda estándar.

Si se especifica una ruta de acceso y hay un archivo de redireccionamiento asociado a la aplicación, la función LoadLibraryEx busca el módulo en el directorio de la aplicación. Si el módulo existe en el directorio de la aplicación, LoadLibraryEx omite la especificación de ruta de acceso y carga el módulo desde el directorio de la aplicación. Si el módulo no existe en el directorio de la aplicación, la función carga el módulo desde el directorio especificado. Para obtener más información, consulte Redirección de la biblioteca de vínculos dinámicos.

Si llama a LoadLibraryEx con el nombre de un ensamblado sin una especificación de ruta de acceso y el ensamblado aparece en el manifiesto compatible con el sistema, la llamada se redirige automáticamente al ensamblado en paralelo.

Comentarios de seguridad

LOAD_LIBRARY_AS_DATAFILE no impide que otros procesos modifiquen el módulo mientras se cargan. Dado que esto puede hacer que la aplicación sea menos segura, debe usar LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE en lugar de LOAD_LIBRARY_AS_DATAFILE al cargar un módulo como un archivo de datos, a menos que necesite usar específicamente LOAD_LIBRARY_AS_DATAFILE. Especificar LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE impide que otros procesos modifiquen el módulo mientras se cargan. No especifique LOAD_LIBRARY_AS_DATAFILE y LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE en la misma llamada.

No use la función SearchPath para recuperar una ruta de acceso a un archivo DLL para una llamada a LoadLibraryEx posterior. La función SearchPath usa un orden de búsqueda diferente al de LoadLibraryEx y no usa el modo de búsqueda de procesos seguros a menos que se habilite explícitamente llamando a SetSearchPathMode con BASE_SEARCH_PATH_ENABLE_SAFE_SEARCHMODE. Por lo tanto, Es probable que SearchPath busque primero el directorio de trabajo actual del usuario para el archivo DLL especificado. Si un atacante ha copiado una versión malintencionada de un archivo DLL en el directorio de trabajo actual, la ruta de acceso recuperada por SearchPath apuntará al archivo DLL malintencionado, que LoadLibraryEx cargará.

No realice suposiciones sobre la versión del sistema operativo basada en una llamada LoadLibraryEx que busque un archivo DLL. Si la aplicación se ejecuta en un entorno en el que el archivo DLL no está presente legítimamente, pero una versión malintencionada del archivo DLL se encuentra en la ruta de búsqueda, se puede cargar la versión malintencionada del archivo DLL. En su lugar, use las técnicas recomendadas que se describen en Obtención de la versión del sistema.

Para obtener una explicación general de los problemas de seguridad de dll, consulte Seguridad de la biblioteca de vínculos dinámicos.

Ejemplos

En el ejemplo de código siguiente se muestra una llamada a LoadLibraryExA.

//Load the FMAPI DLL
hLib = ::LoadLibraryEx(L"fmapi.dll", NULL, NULL);
if ( !hLib )
{
      wprintf(L"Could not load fmapi.dll, Error #%d.\n", GetLastError());
      return;
}

Para obtener un ejemplo adicional, vea Buscar texto para ver números de código de error.

Nota

El encabezado libloaderapi.h define LoadLibraryEx como alias que selecciona automáticamente la versión ANSI o Unicode de esta función en función de la definición de la constante de preprocesador UNICODE. La combinación del uso del alias neutral de codificación con código que no es neutral de codificación puede dar lugar a errores de coincidencia que dan lugar a errores de compilación o tiempo de ejecución. Para obtener más información, vea Convenciones para prototipos de función.

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado libloaderapi.h (incluye Windows.h)
Library Kernel32.lib
Archivo DLL Kernel32.dll

Vea también

DllMain

Funciones de la biblioteca de vínculos dinámicos

Orden de búsqueda de la biblioteca de vínculos dinámicos

Seguridad de la biblioteca de vínculos dinámicos

FindResource

FreeLibrary

GetProcAddress

GetSystemDirectory

GetWindowsDirectory

LoadLibrary

LoadResource

OpenFile

Vinculación dinámica en tiempo de ejecución

SearchPath

SetDllDirectory

SetErrorMode