windowsNT4.0下設(shè)備驅(qū)動程序的開發(fā)與應用
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 //設(shè)備文件句柄
IoctlCode//功能代碼,對應IRP中的Parameter.
//DeviceIoControl.IoControlCode域
Parameter1,//傳遞到驅(qū)動程序的參數(shù)緩沖區(qū),對應
//IRP中的AssociatedIrp.SystemBuffer
sizeof(Parameter1) //參數(shù)緩沖區(qū)長度
DataBuffer, //從驅(qū)動程序傳出的數(shù)據(jù)緩沖區(qū)
DataLength, //緩沖區(qū)長度
ReturnedLength, //返回的實際緩沖區(qū)長度
NULL //等待,直到操作完成
);
if(!CloseHandlehndFile)) //關(guān)閉設(shè)備
{
printf(″Failed to close device.n″);
}
}
以上介紹了Windows NT4.0設(shè)備驅(qū)動程序開發(fā)中的一般性過程。用戶可利用NT SDK 及DDK開發(fā)工具包,并根據(jù)自身需要,對以上核心代碼進行擴充完成所需任務(wù)。
評論