阅读:1193回复:2
有关驱动程序和应用程序之间的通讯问题。
为什么这么简单的一个试验就是不能得到预期的效果呢?
以下是驱动程序: NTSTATUS ISACanDevice::ISACAN_IOCTL_ISALinearAddress_Handler(KIrp I) { NTSTATUS status = STATUS_SUCCESS; I.Information() = 0; *(ULONG*)I.IoctlBuffer()=0x800d0000; return status; } 以下是应用程序: if (!DeviceIoControl(hDevice, ISACAN_IOCTL_ISALinearAddress, NULL, 0, &bufOutput, sizeof(ULONG), &nOutput, NULL) ) {} printf(\"Success\\n\"); printf(\"The linearAddress is:0x%x\\n\",bufOutput); } 其中,编译和运行程序程序都没有问题,可是输出的结果却不是所希望的800d0000。输出结果是:\"The linearAddress is:0x1\"。不知道哪位高手能够指点一下。多谢! |
|
沙发#
发布于:2003-12-30 11:33
I.Information() = sizeof(ULONG);
|
|
板凳#
发布于:2003-12-30 13:57
多谢! :)
|
|