C++语言的VxD与外界通信的所有接口

豆豆网   技术应用频道   2006年03月31日  【字号: 收藏本文

本文详细介绍C++语言的VxD与外界通信的所有接口

  VMM动态装卸VxD时,以命令码0及-1发送W32_DEVICEIOCONTROL消息给VxD,故Vireo公司建议命令码C取[2048,4095]。

  2. 被Real/V86模式下16位应用程序访问的接口

  my.VxD先要指定接口ID(如3180h),再在API页上选Standard Application Entry Points框中的Real/V86 Mode标签,即可生成MyDevice::V86_API_Entry入口,访问它的汇编程序是:

    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->CBRS.Client_AH==码C) p->CBRS.Client_AL=0;

  3. 被保护模式下16位应用程序访问的接口

  与第2条类似,但选Protected Mode标签,即可生成MyDevice::PM_API_Entry入口,访问它的程序是:

    int PASCAL WinMain(HANDLE h1,HANDLE h0,LPSTR lpCmdLine,int nCmdShow){
   
   FARPROC entry; //32位
   _asm{
   mov ax,1684h
   mov bx,3180h
   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]
   }

责编:豆豆技术应用

正在加载评论...