當前位置:編程學習大全網 - 源碼下載 - linux的api函數哪裏有,C和C++怎麽調用API

linux的api函數哪裏有,C和C++怎麽調用API

API是應用程序接口, 所以在應用級

直接與硬件打交道的是WINDOWS DDK, 設備驅動開發包,

這個開發包處理硬件.

欲了解更詳細的細節, 請參考CSDN:

比如:/article/80266.shtm

VxD API過程

壹個VxD提供V86模式和保護模式API過程以允許在壹個虛擬機中運行的應用程序和其它軟件訪問該VxD的特征。如果要使這些可選的過程有效,VxD必須將它們定義為Declare_Virtual_Device宏的參數,如果沒有定義,VMM認為該VxD沒有API過程。

在壹個虛擬機中運行的應用程序或者其它軟件通過設置BX寄存器為VxD標識並調用獲取設備入口地址功能(INT 2FH 1684H功能)獲取特定的虛擬機的API過程的入口地址,VMM返回該地址使得應用程序可以間接調用該API過程。

當壹個應用程序調用該入口地址時,VMM保存該應用程序的寄存器並調用VxD相應的API過程,保存當前虛擬機的句柄到BX寄存器中並保存Client_Reg_Struc結構地址到EBP寄存器中。API過程必須檢測客戶寄存器的值(使用Client_Reg_Struc結構)以判斷運行的API調用。

按照常規,大多數API過程使用AH寄存器指定主功能號,使用AL寄存器指定次功能號,其它客戶寄存器用於附加參數。API過程通過修改客戶寄存器返回值,API過程可以修改EAX、EBX、ECX、EDX、ESI和EDI寄存器。

下面的實例給出了壹個實例API過程——VSAMPLED_API_Get_Version:

BeginProc VSAMPLED_API_Get_Version

movzx eax, [ebp.Client_AX] ;取功能號

or eax, eax

jnz Undefined

Get_Version:

mov [ebp.Client_AX], 030AH ;在客戶寄存器AX中返回值

and [ebp.Client_Flags], NOT CF_Mask ;清除進位標誌

ret

Undefined:

or [ebp.Client_Flags], CF_Mask ;設置進位標誌

ret

EndProc VSAMPLED_API_Get_Version

  • 上一篇:如何做宣傳彩頁模板?如何制作彩色宣傳單
  • 下一篇:為什麽現在的年輕人沒有之前的人有野心了?
  • copyright 2024編程學習大全網