DLL Win32

DLL Win32
Información sobre la plantilla
260px
Biblioteca de vínculos dinámicos.

DLL Win32. Biblioteca de funciones que se puede llamar por una aplicación en tiempo de ejecución

Generalidades

La aplicación y funciones dentro de la DLL no están obligados hasta el programa de aplicación se ejecuta. En el entorno WIN32 DLL están siendo utilizados para propósitos más a continuación, en el entorno de 16 bits. servidores OLE, los filtros ISAPI, e incluso algunos programas CGI se implementan como DLL.

Normalmente las funciones en un archivo DLL son para un fin determinado (acceso a internet, gráfica, la comunicación del puerto serie). También puede ser una colección de funciones requeridas por una aplicación y sólo específicamente a la citada solicitud. Esta es la única convención, si usted está escribiendo un archivo DLL que se puede poner lo que quieras en funciones de la misma.

Si usted va a escribir y distribuir un archivo DLL, no es necesario registrar su nombre ni obtener una ID de nadie. Usted puede nombrar como quieras, pero por favor, intente lo hacen único. Si se llama a la DLL "KERNEL.DLL" tendrá problemas con él (KERNEL es un Microsoft Windows DLL utilizado para realizar operativos kernelfunctions sistema).

Una aplicación puede enlazar a un archivo DLL en dos formas:

  • Tiempo de carga de Enlace
  • El enlace de llamadas

Tiempo de carga de enlace de carga el archivo DLL cuando una aplicación que usa se carga para su ejecución. Windows carga el archivo DLL de la aplicación. El enlace con la llamada, el archivo DLL se carga cuando es necesario. Si nunca se necesita la aplicación nunca será cargado. Carga Visual Basic DLL cuando el formulario que contiene la instrucción Declare se carga.

Si una aplicación VB lugares la función DLL declarar en un módulo o en un formulario que se carga cuando se carga la aplicación, a continuación, el archivo DLL será atado en el momento de aplicación de la carga. Si declaran se coloca en un formulario que se carga dinámicamente por la aplicación Visual Basic, a continuación, el archivo DLL se carga cuando se carga el formulario.

Una última nota sobre la carga del archivo DLL, Windows localizar un archivo DLL en el siguiente orden:

En la memoria, un archivo DLL, una vez cargado, es global para todos los de Windows hasta que se descarga.

  • En el directorio donde se cargó la aplicación
  • En el directorio de Windows
  • En el directorio windows \ system
  • En los directorios especificados en el PATH DOS

Para escribir un archivo DLL

A partir de hoy, la mayoría de DLL están escritas en C. También es posible escribir un archivo DLL en Pascal / Delphi, lenguaje ensamblador o BASIC. (Visual Basic no se puede utilizar para escribir una DLL de verdad. La DLL de la VB crea son contenedores OLE que tienen una extensión .

DLL Ellos no son del archivo DLL como se describe en este articulo.) Para escribir un archivo DLL de 32 bits se necesita un compilador capaz de crear DLL de Windows de 32 bits. Los dos compiladores de C más populares que pueden hacer esto son:

Microsoft Visual C + + Versión 4.0 + Borland C + + para Windows Versión 5.0 +

Si usted no tiene un compilador, se necesita uno para escribir una DLL. Además del compilador, se necesitan conocimientos de C y la API de Win32. NOTA: C es el lenguaje que se utiliza para escribir un archivo DLL, no en C + +. C + + es una extensión orientada a objetos de C. Si usted tiene un compilador C + +, C puede manejar muy bien. También puede escribir no exportedfunctions como objetos C + +, pero las funciones que están llamados a las aplicaciones de Windows deben ser las funciones de C, no C + + funciones o métodos.

Requisitos DLL

Un archivo DLL de Windows de 32 bits no requiere ninguna función especial. Si desea inicializar el archivo DLL cuando se carga, puede tener una función denominada DllMain y su inicialización, pero no es necesario. Windows llama a la función DllMain de un archivo DLL en cuatro casos:

Cuando un proceso se concede la DLL Cuando un hilo concede la DLL Cuando un proceso se separa el archivo DLL Cuando un thrad separa el archivo DLL Una función básica DllMain podría tener el siguiente aspecto:

BOOL WINAPI DllMain(HINSTANCE hInstance,DWORD fwdReason, LPVOID lpvReserved) {

switch(fwdReason) { case DLL_PROCESS_ATTACH: break; case DLL_THREAD_ATTACH: break; case DLL_PROCESS_DETACH: break; case DLL_THREAD_DETACH: break; } return(TRUE); // The initialization was successful, a FALSE will abort // the DLL attach }

Si necesita para llevar a cabo una initializaton DLL, consulte la Referencia de la API de Win32 para obtener más detalles.

El único requisito otras de las funciones en un archivo DLL es que las funciones que se puede llamar desde fuera de la DLL, debe ser declarada "WINAPI". Si no los declaran esta manera, usted no será capaz de llamada.

Usted también necesitará un archivo DEF especial para un archivo DLL. A continuación se presenta una muestra DEF.

LIBRARY &el nombre de tu DLL va aqui>

EXPORTS &el nombre de una funcion exportada>

el nombre de otra funcion exportada

Eso es todo. Después de compilación y enlace, puede comenzar a probar el archivo DLL.

Para hacer en un archivo DLL

Casi todo está permitido en un archivo DLL. Cuando una aplicación llama a una función DLL, el DLL se ejecuta como una extensión del proceso de la aplicación. En realidad, es cargado en las solicitudes de espacio de memoria local. Cualquier archivo que se abre se abre el proceso, cualquier memoria asignada se asigna a montones local o global del proceso. Hemos de tener esto en cuenta y se le multa.

Algunas de las cosas que usted puede ser que desee hacer en un archivo DLL son:

  • Realiza la función GDI llama a pintar la pantalla.
  • Asignar memoria global de Windows Realizar / S de archivos
  • De búsqueda de Windows tablas internas
  • Realizar que el puerto de E / S
  • Otra llamada de API

Todas estas cosas son posibles, lo más importante a recordar es escribir el archivo DLL lo más limpio posible. Si asigna un recurso, y no es necesario para evitar que, sin que antes de regresar de su función de DLL. Recuerde siempre, una DLL puede causar todo tipo de problemas en Windows y no puede mostrar hasta que el archivo DLL ha sido descargado.

También es necesario tener en cuenta que las variables externas WIN32 DLL son externos sólo a la instancia de la DLL. Si dos procesos utilizan la misma DLL, que cada uno recibe una copia privada de las variables externas. Menciono esto porque esto es una diferencia importante entre los de 32 bits y 16 bits DLL. Usted no puede utilizar las variables externas DLL para compartir información entre los procesos. Debe utilizar la API de Win32 para compartir objetos de memoria.

También quiero advertir sobre una inconsistencia entre Visual Basic y C. En C, un tipo int es de 32-bits de longitud. Esto es compatible con Win32. En VB, y entero es de 16-bits de longitud. Si utiliza un argumento int en el archivo DLL, debe declarar el parámetro como Long en VB.

Fuente de ejemplo DLL

El código fuente de DLL puede encontrarse en casi cualquier sitio FTP de Internet que tratan con la programación de Windows, así como otros foros en línea de servicios. El problema con la mayoría de esta fuente es que la DLL se escribió con un propósito. Usted tiene que recorrer cientos de líneas de código sólo para tener una idea de lo que usted necesita para un archivo DLL simple.

Para obtener más información sobre cómo escribir un archivo

La mayoría de buenos libros de programación en C para Windows incluirá un capítulo o dos en la escritura de un archivo DLL.

Desde que escribí un archivo DLL es simplemente escribir un programa de Windows, tendrá acceso a la documentación de la API de Windows. Usted también querrá informacion en la escritura de programas que utilizan GDI, núcleo y otra parte de Windows.

Fuente

Enlace Interno

Enlace Externo