[PL] FAQ: otwarcie urządzenia (device), Windows (last update: 2012-12-15, created: 2012-12-15) back to the list ↑
|
|||
[FAQ - pytania (które dostaje via e-mail/IRC/jabber/etc, oraz na które natrafiam na forach) + moje odpowiedzi]
Topic z forum uw-team.org - autor ładuje sterownik, który tworzy nowy device o nazwie \Device\Kropki112, a następnie z user mode próbuje go otworzyć korzystająć z CreateFile, co kończy się błędem ERROR_BAD_NETPATH. Moja odpowiedź poniżej: Hey, Musisz albo w DriverEntry stworzyć symbolic link do \DosDevices\Nazwa używając IoCreateSymbolicLink. Albo korzystać z NtCreateFile zamiast z CreateFile. Sam CreateFile nie umie odwołać się do \Device\Nazwa. Prawdę mówiąc stworzenie symbilic linku jest prostsze i zajmuje mniej kodu. UNICODE_STRING usDosDeviceName, usDriverName; Po zrobieniu tego aliasu używasz ścieżki "\\\\.\\Nazwa" w CreateFile (czyli, bez escapeujących backslashów \\.\Nazwa). Sposób z NtCreateFile wygląda mniej więcej tak. EDIT Miałem chwilę, więc przepisałem "na czysto" swój stary kod korzystający z NtCreateFile: http://gynvael.coldwind.pl/n/device_open_win32 (Należy zaznaczyć, że problem był jeszcze jeden, o czym napisał autor topicu w kolejnym poście - brakowało obsługi IRP_MJ_CREATE & co.) | |||
|