2023年02月16日 08:32:00
詳述c++語言的vxd與外界通訊的所有介面
case 命令碼c:
用p指向的ioctlpar
ams結構,與應用程式交換資料;
if (成功) return(0); /*
使deviceiocontrol的返回值r為true*/
else return(1);
default:
return(0);
} ---- 以上做法要求vxd立即交換資料(同步通訊),值file_flag_delete_on_close指明 closehandle將不在記憶體中保留引用記數為0的vxd.
---- 此時,p-
---- vwin32_dioccompletionroutine(p-
---- vmm動態裝卸vxd時,以命令碼0及-1傳送w32_deviceiocontrol訊息給vxd,故vireo公司建議命令碼c取[2048,4095].
---- (2) 被real/v86模式下16位應用程式訪問的介面:
entry dd ?
mov ax,1684h ;功能號
mov bx,3180h ;介面id
int 2fh ;取入口的段/
偏移到es/di,成功時,
di及es返回非零值
mov ax,es
or ax,di
jz l0
mov word ptr [entry],di
mov word ptr [entry+2],es
mov ah,碼c
call [entry]
---- l0: 錯誤處理
mydevice::v86_api_entry(vmhandle hvm
,client_struct* p)入口可以是:
if (p-
---- (3) 被保護模式下16位應用程式訪問的介面:
---- 與(2)類似,但選protected mode標籤,即可生成mydevice::pm_api_entry入口,訪問它的程式是:
int pascal winmain(handle h1,handle h0,
lpstr lpcmdline,int ncmdshow)
---- 對pm_api_entry的處理如(3.2).
---- (4) 被dpmi的實模式/v86模式下16位應用程式訪問的介面:
str db 'my',0 ;vxd的唯一標識串
entry dd ?
mov ax,168ah ;功能號
lea si,str ;要求ds/si值是str的段值/偏移值
int 2fh ;取入口的段/偏移到es/di,成功時,al返回0
cmp al,0
jne l0
mov word ptr [entry],di
mov word ptr [entry+2],es
...
call [entry]
---- 對handler的處理如(3.2).
---- (5) 被dpmi的保護模式下16位應用程式訪問的介面: 與(4)類似,但選protected mode標籤,即可生成my_protvendorentry::handler入口,訪問它的程式是:
int pascal winmain(handle h1,handle h0,
lpstr lpcmdline,int ncmdshow)
}
---- 對handler的處理如(3.2).
---- (6) 可被其它vxd訪問的介面:
---- 若your.vxd欲調my.vxd的做兩數相減的minus介面,需在my.vxd的vxd service頁上輸入原型dword _cdecl minus(dword i,dword j),再在mydevice::minus中,寫return(i-j);
---- your.mak中,需處理中間檔案wrap.cpp:
objects=your.obj wrap.obj
...
wrap.obj:wrap.cpp my.h
---- wrap.cpp中,對帶引數的vxd服務,需用vmm巨集指令vxdjmp轉入,各引數進入wrap時,已按c的呼叫約定入棧;對不帶引數vxd服務,可呼叫vmm巨集指令vxdcall(介面名):
#include "my.h"
dword _cdecl mydevice::
minus(dword i,dword j)
---- your.cpp的某一函式f,可用vmm服務get_ddb,查my.vxd是否已裝入,若未裝入,則用vxdldr服務
---- vxdldr_loaddevice將其裝入:
#define device_main
#include "your.h"
declare_virtual_device(your)
#undef device_main
---- #include "my.h" //此行需在device_main外
void f()
mydevice::minus(值1,值2);
}
中華技術網整理發布 http://www.asfocus.com http://www.netqu.com
C語言中Static的作用詳述
在c語言中,static的字面意思很容易把我們匯入歧途,其實它的作用有三條。1 先來介紹它的第一條也是最重要的一條 隱藏。當我們同時編譯多個檔案時,所有未加static字首的全域性變數和函式都具有全域性可見性。為理解這句話,我舉例來說明。我們要同時編譯兩個原始檔,乙個是a.c,另乙個是main.c。...
詳述 與equals的區別
1 在基本資料型別中比較值是否相等,在引用資料型別中比較位址是否相等。int a 12 int b 12 int c 3 system.out.println a b a與b值相同,結果為true system.out.println a c a與c值不同,結果為false string name1...
SAP是如何與外界溝通的?
翻譯一篇文章吧,官方的help components of sap communication technology sap通訊互動技術 在sap的環境下,用abap 寫的經典的技術,和非abap開發的結構,二者互相通訊,雙向的通訊,這種需求十分豐富。下面的內容提供了乙個概覽,sap提供的多種不同整...