阅读:1575回复:2
应用程序和驱动程序进行通信的问题(DeviceIoControl)
应用程序和驱动程序进行通信的问题(DeviceIoControl)
问题如下:(为了突出问题,我只从程序中取出了相关的一段。) 应用程序中调用DeviceIoControl: USHORT bufInput[100]; for(int i=0;i<100;i++) bufInput=100-i; if (!DeviceIoControl(hDevice, UPLOAD_TO_DSP, bufInput, 100, NULL, 0, &nOutput, NULL) ) { printf(\"ERROR: DeviceIoControl returns %0x.\", GetLastError()); Exit(1); } 传递了100个数到驱动程序中。 驱动程序: NTSTATUS status = STATUS_SUCCESS; ULONG StartPos = 0; ULONG wLength = 0 ; ULONG *pBuffer = NULL; pBuffer = (PULONG)I.IoctlBuffer(); if(pBuffer == NULL) { I.Information() = 0; status = STATUS_BUFFER_TOO_SMALL; } else { StartPos = 0x80; //中断向量首地址 wLength = I.IoctlInputBufferSize(); m_Ctl_MemoryRange.outw(PCI_DSP_HPIC_OFFSET,0x0303); m_Ctl_MemoryRange.outd(PCI_DSP_HPIA_OFFSET,StartPos); ///这里的个数应该怎么设定?传递过来的是什么类型? for(ULONG i=0;i<wLength/2;i++) { m_Ctl_MemoryRange.outd(PCI_DSP_HPID0_OFFSET,pBuffer ); DbgPrint(\"Current Data is %x \\n\", pBuffer ); } } return status; 这个程序通过softice 在驱动里面看到只有应用程序数组中的第一个数:100得到了传递,其余所有数都变成了0。(即没有传递!)为什么呢 ? 我将DeviceIoControl()中的第三个参量取指针、取地址都试过了,还是只有一个值得到了传递!究竟是什么问题呢?如何解决?请帮帮忙!谢谢! [编辑 - 7/19/03 by cb615cb] [编辑 - 7/19/03 by cb615cb] |
|
沙发#
发布于:2003-07-19 15:39
用deviceiocontrol做关键词在本版搜索一下。
may be you can get something |
|
板凳#
发布于:2003-07-19 12:51
发的位置怎么到这里了?应该是到ABC初学者的!还不许我转移!
|
|