2015-05-18 125 views
1

我需要打開在Windows中創建的一個內核模塊,並在Cygwin中編譯了一個用戶級程序 ;從Windows我可以使用Cygwin:打開一個字符設備

CreateFile("\\\\.\\deviceName", 
    GENERIC_READ | GENERIC_WRITE, 
    0, 
    NULL, 
    OPEN_ALWAYS, 
    FILE_ATTRIBUTE_NORMAL, 
    NULL) 

但在Cygwin的,如果我嘗試使用

open("//deviceName", O_RDWR); 

什麼也沒有發生打開它;我試過使用「\ DosDevices \ deviceName」,// deviceName, // DosDevices/deviceName etc ....但我無法打開設備。

有一種方法可以在Cygwin中執行此操作,或者我必須在 用戶級應用程序中使用CreateFile?

編輯: 使用的Sysinternals的WinObj我可以看到正確 下我的設備: 僅供參考內核模塊鏈接調用正確的一個IoCreateDevice函數(....)

#define DOS_DEVICE_NAME   L"\\DosDevices\\deviceName" 
... 
RtlInitUnicodeString(&ntWin32NameString, DOS_DEVICE_NAME); 
ntStatus = IoCreateSymbolicLink(&ntWin32NameString, &ntUnicodeString); 
.... 

EDIT2之後創建這樣\全球??與符號鏈接\設備\設備名稱

回答

1

好吧,看來我已經能夠找到它:它是根據

"/proc/sys/DosDevices/Global/deviceName" 

規定,可以與

fd = open("/proc/sys/DosDevices/Global/deviceName", O_RDWR); 
打開