2015-05-18 2 views
1

Мне нужно открыть модуль ядра, созданный в Windows, с программой userland , скомпилированной в 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 и т. Д., Но я не могу открыть это устройство.

Есть ли способ сделать это в Cygwin или я должен использовать CreateFile в приложении ?

EDIT: FYI в модуле ядра ссылка создается таким образом, после вызова правильно в IoCreateDevice (....)

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

edit2: Использование Sysinternals Winobj я могу правильно видеть мое устройство под \ГЛОБАЛЬНЫЙ?? с символическая \ Device \ DEVICENAME

ответ

1

Ок, мне кажется, что я был в состоянии найти его: он указан под

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

и может быть открыт с

fd = open("/proc/sys/DosDevices/Global/deviceName", O_RDWR); 
Смежные вопросы