微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > windowsNT4.0下设备驱动程序的开发与应用

windowsNT4.0下设备驱动程序的开发与应用

时间:09-12 来源:互联网 点击:

闭该设备文件(由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开发工具包,并根据自身需要,对以上核心代码进行扩充完成所需任务。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top