superrobust
驱动牛犊
驱动牛犊
  • 注册日期2003-01-04
  • 最后登录2007-08-07
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
阅读:1392回复:2

急问使用Kpciconfiguration::readheader()读配置空间的问题(30\')

楼主#
更多 发布于:2003-10-18 01:36

请帮我挑挑毛病,搞了一晚上。头都想破了,也不知道错误在哪。:(

目的:用Kpciconfiguration::readheader()读出9052配置空间头区域的前20字节,返回给应用程序,在屏幕上显示结果。
思路:声明Kpciconfiguration类m_cfg并初始化。写一个执行于passive级的XXhandler(I),Devicecontrol(I)例程判断接收到正确
的CTL_CODE后调用该例程。然后在该例程中调用m_cfg.readheader()
把字节读入到I.IoctlBuffer()中。从而返回给应用程序中的deviceIOcontrol函数。

引用代码:
-----驱动部分-------
Pci9052Device::Pci9052Device(PDEVICE_OBJECT Pdo, ULONG Unit) :KPnpDevice(Pdo, &Pci9052Device_Guid), m_cfg(NULL)
{...
m_cfg.Initialize(m_Lower.DeviceObject());
...}

NTSTATUS Pci9052Device::DeviceControl(KIrp I)
{...
 switch (I.IoctlCode())
{...
    case PCI9052_IOCTL_800:
    status = PCI9052_IOCTL_800_Handler(I);
    break;
    default:
     ....break;}
...}

NTSTATUS Pci9052Device::PCI9052_IOCTL_800_Handler(KIrp I)
{
NTSTATUS status = STATUS_SUCCESS;
  m_cfg.ReadHeader((PUCHAR)I.IoctlBuffer(), 0, 20);
  I.Information() = 20;
  return status;
}

-----应用程序部分-----
#define IOCTL_OUTBUF_SIZE 20
void Test_PCI9052_IOCTL_800(void)
{ PUCHAR bufOutput[IOCTL_OUTBUF_SIZE];
ULONG nOutput;

printf(\"Issuing Ioctl to device - \");

if ( DeviceIoControl(hDevice, PCI9052_IOCTL_800,NULL,0,
   bufOutput, IOCTL_OUTBUF_SIZE,&nOutput,NULL))

{// 打印返回的结果
    int j,i = 0;
   while(i < IOCTL_OUTBUF_SIZE)
  { j = min((i+26),IOCTL_OUTBUF_SIZE);
      for(; i < j; i++)
      {printf(\"%c, \", bufOutput);
      }
      printf(\"\\n\");
   }
//打印返回的字节数
printf(\"%d bytes read from device.\\n\", nOutput);}
//打印出错信息
else
 {  printf(\"ERROR: DeviceIoControl returns 0x.\",
    GetLastError());
 Exit(1);
 }
}

运行应用程序总是提示上面的出错信息。大侠教我
everything is developing
superrobust
驱动牛犊
驱动牛犊
  • 注册日期2003-01-04
  • 最后登录2007-08-07
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-10-18 17:33
具体发我信箱吧,多谢
everything is developing
CYoung
驱动中牛
驱动中牛
  • 注册日期2003-06-10
  • 最后登录2005-01-04
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-10-18 09:22
驱动程序有错
答得好的话,请兄弟们加点分,那是对我的肯定
游客

返回顶部