windowsNT4.0下设备驱动程序的开发与应用
闭该设备文件(由IRP_MJ_CLOSE功能代码完成)
以下是部分实现代码:
void main()
{
HANDLE hndFile; // 由CreateFile得到
union {
ULONG LongData;
USHORT ShortData;
UCHAR CharData;
}DataBuffer; //从设备驱动程序中得到的数据
LONG IoctlCode; //功能代码
ULONG DataLength;
LONG Parameter1;
//调用IRP中的IRP _MJ_CREATE功能
hndFile = CreateFile(
″\\\\.\\SelfWin32Name″, // 打开设备文件″ SelfWin32Name″
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开发工具包,并根据自身需要,对以上核心代码进行扩充完成所需任务。
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)