wgtic
驱动牛犊
驱动牛犊
  • 注册日期2005-04-10
  • 最后登录2005-06-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1507回复:2

对于用Driverstudio生成的驱动程序如何改呢,

楼主#
更多 发布于:2005-05-09 15:12
对于用Driverstudio生成的驱动程序如何改呢,我要用Deviceiocontrol发送数据到固件,程序应该如何写呢??
 我看有些资料中介绍用到
_try ,_finish 等,我照着加入了,但编译就出现错误。轻大侠指点。有分相送。

最新喜欢:

hanwlhanwl
searchone
驱动牛犊
驱动牛犊
  • 注册日期2003-12-31
  • 最后登录2005-05-16
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-05-10 08:32
//利用向导可以添加控制代码,如下的BULK_READ;
//也可以自己写在头文件中
//如
/*
#define BULK_READ CTL_CODE(FILE_DEVICE_UNKNOWN, 0x800, METHOD_IN_DIRECT, FILE_READ_DATA)
#define BULK_WRITE CTL_CODE(FILE_DEVICE_UNKNOWN, 0x801, METHOD_OUT_DIRECT, FILE_WRITE_DATA)
*/
NTSTATUS FlyDevice::DeviceControl(KIrp I)
{ NTSTATUS status;

switch (I.IoctlCode())
{
case BULK_READ:
status = BULK_READ_Handler(I);//你的处理函数
break;

case BULK_WRITE:
status = BULK_WRITE_Handler(I);
break;
…………
}

在应用程序中:
CHAR bufInput[IOCTL_INBUF_SIZE];
CHAR bufOutput[IOCTL_OUTBUF_SIZE]; ULONG nOutput;
if (!DeviceIoControl(hDevice, BULK_READ, bufInput, IOCTL_INBUF_SIZE, bufOutput, IOCTL_OUTBUF_SIZE, &nOutput, NULL)
  )
{
printf(\"ERROR:\");
Exit(1);
}
printf(\"try:%d,recive:%d\",IOCTL_OUTBUF_SIZE,nOutput);
for(int i=0;i<nOutput;i++)
{
printf(\"%x,\",bufOutput);
}
hanwl
驱动牛犊
驱动牛犊
  • 注册日期2005-01-05
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-05-10 10:09
明白点了
学习,学习,在学习
游客

返回顶部