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開發工具包,并根據自身需要,對以上核心代碼進行擴充完成所需任務。
評論