Red de conocimiento informático - Problemas con los teléfonos móviles - ¿Cómo programar las funciones API de Windows?

¿Cómo programar las funciones API de Windows?

API es una interfaz de programación de aplicaciones, por lo que a nivel de aplicación

lo que se ocupa directamente del hardware es el WINDOWS DDK (kit de desarrollo de controladores de dispositivos)

que se ocupa del hardware.

Para obtener más información, consulte CSDN:

Por ejemplo: /article/80266.shtm

Programa API VxD

VxD proporciona programas API en modo V86 y en modo protegido que permiten que las aplicaciones y otro software que se ejecuta en una máquina virtual accedan a la funcionalidad VxD. Para que estos procedimientos opcionales sean válidos, VxD debe definirlos como argumentos para la macro Declare_Virtual_Device; si estos procedimientos no están definidos, VMM asumirá que VxD no tiene procedimientos API.

Las aplicaciones u otro software que se ejecuta en una máquina virtual pueden obtener la entrada de un programa API de máquina virtual específico configurando el registro BX en el identificador VxD y llamando a la función de obtención de dirección de entrada del dispositivo (función INT 2FH 1684H) La dirección que VMM devolverá para que la aplicación pueda llamar indirectamente al programa API.

Cuando la aplicación llama a la dirección de entrada, el VMM guardará el registro de la aplicación y llamará al programa API VxD correspondiente. El programa guardará el identificador de la VM actual en el registro BX y guardará la dirección de la. Estructura Client_Reg_Struc al registro EBP.

Los programas API deben detectar el valor del registro del cliente (usando la estructura Client_Reg_Struc) para determinar qué llamada API se está ejecutando.

Normalmente, la mayoría de los programas API utilizan el registro AH para especificar el número de función principal, el registro AL para especificar el número de función secundaria y otros registros de clientes para especificar parámetros adicionales. El programa API devuelve el valor modificando el registro del cliente.

El siguiente ejemplo proporciona un procedimiento almacenado API: VSAMPLED_API_Get_Version:

BeginProc VSAMPLED_API_Get_Version

movzx eax , [ebp.Client_AX] ;Tome el número de función

o eax, eax

jnz Undefinido

Get_Version:

mov [ebp.Client_AX], 030AH.Client_AX], 030AH ;Devuelve el valor en el registro del cliente AX

y [ebp.Client_Flags], NO CF_Mask; borre la bandera del feed

ret

Indefinido:

o [ebp.Client_Flags], CF_Mask ;Establecer el indicador de alimentación

ret

EndProc VSAMPLED_API_Get_Version