问一个AddDevice和设备符号链的问题??
問一個AddDevice和設(shè)備符號鏈的問題??
UNICODE_STRING ntDeviceName;
? ? ?UNICODE_STRING win32DeviceName;
? ? ?RtlInitUnicodeString(&ntDeviceName, L"Twdm1");
? ? ?RtlInitUnicodeString(&win32DeviceName, L"Twdm1"); ?
?
? DbgPrint("Starting AddDevice()/n");
? //創(chuàng)建我們的功能設(shè)備對象,并儲存到fdo中:
? status = IoCreateDevice(
? ? DriverObject, ? ? ? ? ? //驅(qū)動程序?qū)ο?br />? ? sizeof(DEVICE_EXTENSION), ? //要求的設(shè)備擴展的大小
? ? &ntDeviceName, ? ? ? ? ? ? ? ? //設(shè)備名稱,這里為NULL
? ? FILE_DEVICE_UNKNOWN, ? ? //設(shè)備的類型,在標準頭文件WDM.H或NTDDK.H中列出的FILE_DEVICE_xxx值之一
? ? 0, ? ? ? ? ? ? ? ? ? //各種常量用OR組合在一起,指示可刪除介質(zhì)、只讀等。
? ? FALSE, ? ? ? ? ? ? ? ? //如果一次只有一個線程可以訪問該設(shè)備,為TRUE,否則為FALSE
? ? &fdo); ? ? ? ? ? ? ? ? //返回的設(shè)備對象
? //NT_SUCCESS宏用于測試IoCreateDevice內(nèi)核是否成功完成。不要忘記檢查對內(nèi)核的所有調(diào)用是否成功。
? //NT_ERROR宏不等同于!NT_SUCCESS,最好使用!NT_SUCCESS,因為除了錯誤外,它還截獲警告信息。
? if( !NT_SUCCESS(status))
? {
? ? ? ?DbgPrint("AddDevice(): IoCreateDevice failed!");
? ? return status;
? }
? else
? {
? ? ? ?DbgPrint("AddDevice(): IoCreateDevice OK!");
? }
? ? ?status = IoCreateSymbolicLink( &win32DeviceName, &ntDeviceName );
? ? ?if (!NT_SUCCESS(status))
? ? ?{
? ? ? ? ? ?DbgPrint("TWDM: IoCreateSymbolicLink() faild ! /n");
? ? ?}
? ? ?else
? ? ?{
? ? ? ? ? ?DbgPrint("TWDM: IoCreateSymbolicLink() ok ! /n");
? ? ?}
? 為什么驅(qū)動程序加載的時候顯示“AddDevice(): IoCreateDevice failed!”呢?
好像是設(shè)備名字不對
改成這兩句試試
RtlInitUnicodeString(&ntDeviceName, L"//Device//Twdm1");
RtlInitUnicodeString(&win32DeviceName, L"//DosDevices//Twdm1");
總結(jié)
以上是生活随笔為你收集整理的问一个AddDevice和设备符号链的问题??的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Sorm进阶(1):storm实现git
- 下一篇: Windows 2000缓冲区溢出入门