windowsNT4.0下设备驱动程序的开发与应用
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
0,
NULL
if (hndFile == INVALID_HANDLE_VALUE)
{
printf(″Unable to open the device.n″);
exit(1);
}
IoctlCode = IOCTL_Function1; //自定义功能代码
Parameter1 = 1;
DataLength = sizeof(DataBuffer.CharData);
IoctlResult = DeviceIoControl(
hndFile //设备文件句柄
IoctlCode//功能代码,对应IRP中的Parameter.
//DeviceIoControl.IoControlCode域
Parameter1,//传递到驱动程序的参数缓冲区,对应
//IRP中的AssociatedIrp.SystemBuffer
sizeof(Parameter1) //参数缓冲区长度
DataBuffer, //从驱动程序传出的数据缓冲区
DataLength, //缓冲区长度
ReturnedLength, //返回的实际缓冲区长度
NULL //等待,直到操作完成
);
if(!CloseHandlehndFile)) //关闭设备
{
printf(″Failed to close device.n″);
}
}
以上介绍了Windows NT4.0设备驱动程序开发中的一般性过程。用户可利用NT SDK 及DDK开发工具包,并根据自身需要,对以上核心代码进行扩充完成所需任务。
评论