软件注册站
热情软件屋

 
如何把程序分配的地址传递到VXD中
编号: QA001340    
建立日期: 1999年7月13日 最后修改日期: 1999年7月13日
所属类别: C/C++ - DDK与硬件设备

Delphi - DDK与硬件设备
   
    Delphi4,VtoolsD2.03
    windows95
    我想在应用程序的开始(用Delphi编写),分配一段内存,然后将这段内存的首地址传给VxD(用VtoolsD编写),由VxD中的中断处理程序利用这段内存来写入数据,请问:应该用什么函数来将这段内存的指针传给VxD呢?请专家指教!!多谢多谢! (李伟)
   
    假定你的VXD是采用OnW32DeviceIoControl来接受Delphi的控制。
    VXD部分代码为:
    DWORD TrandataDevice::OnW32DeviceIoControl(PIOCTLPARAMS pDIOCParams)
    {
     switch(pDIOCParams->dioc_IOCtlCode)
     {
     case 100:
     char *s = (char*)pDIOCParams->dioc_InBuf;
    
     strcpy(s, "Hello world!");
    
     *(PDWORD)pDIOCParams->dioc_OutBuf = strlen("Hello world!");
     *pDIOCParams->dioc_bytesret = 4;
     break;
     }
    
     return 0;
    }
    Delphi部分的代码如下:
    procedure TForm1.Button1Click(Sender: TObject);
    var hVxD:Thandle;
     s: PChar;
     b, nByte: integer;
    begin
     s := StrAlloc(200);
     hVxD := CreateFile('\\.\TRANDATA.VXD', 0, 0, nil,
     CREATE_NEW, FILE_FLAG_DELETE_ON_CLOSE, 0);
     DeviceIoControl(hVxD, 100, s, sizeof(s),
     @b, sizeof(b), nByte, nil);
     CloseHandle(hVxD);
     MessageBox(handle, s, 'Result', MB_ICONINFORMATION);
     StrDispose(s);
    end;
    
    相关书籍:
    《WINDOWS设备驱动程序技术内幕 》
    《实用技术:WINDOWS NT与WINDOWS 2000设备驱动及开发》
    《Windows 设备驱动程序(VXD 与 WDM)开发实务 含盘》
    《虚拟设备驱动程序开发起步与进阶》
    《WIN 9X虚拟设备驱动程序编程指南》

    

此问题由李海回答。

附加关键字:编程, 源程序, programming, source code, C/C++, MFC, C++ Builder, Borland C++, Turbo C, C, BCB, Delphi, VCL, Borland, DDK与硬件设备, hardware, ddk, vtoolsd, driver studio, winrt

   
 
把这个问题推荐给朋友
   
 
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio