Привет. Такая трабла: создаю в юзермоде порт, (пробовал в "/" и "/BaseNamedObjects") получаю STATUS_SUCCESS, winobj замечательно видит мой порт, но когда я пытаюсь законнектиться к нему из драйвера, получаю OBJECT_NAME_NOT_FOUND, я подозреваю, что дело в том, что разные пространства имен, и нужно создавать символическую ссылку, но где создавать, и как это делать в юзермоде, не совсем понятно(в смысле какие поля заполнять в OBJECT_ATTRIBUTES для ссылки) : вроде бы NtCreateSymbolicLinkObject возвращает STATUS_SUCCESS, а ссылки не видно в WinObj.. Подскажите, плз, кто знает, что делать.
ну если ты создаешь объект "устройство" из юзермода (правда, я еще не знаю как это возможно, поскольку изучил пока только уроки Four-F), то думаю, что и символьную сцылку нужно создавать оттуда же. посмотри в сторону этой ф-ции, может поможет чем-нить...создает символьную сцылку: http://msdn.microsoft.com/en-us/library/aa363904(VS.85).aspx
Aspire Сенкс, только я создаю не девайс, а порт для LPC =), а символьную ссылку создавал через NtCreateSymbolicLinkObject из ntdll.dll, но чет она не работала, попробую, может DefineDosDevice заработает..
Чет у меня ничего не работает, пробовал создавать, в итоге в BaseNamedObjects\Global (хм Руссинович писал, что можно просто в \Global, но у меня пишет, что путь не найден) и все равно драйвер не видит, я так понимаю, что это потому, что я пытаюсь обратиться из системного потока, который выполняется под локальной системой(?), но вроде бы используется Global, в чем же дело? А еще, если попытаться законнектиться из создающего процесса, но только из ядра, через DeviceIoControl, то получаю STATUS_ACCESS_VIOLATION.. Подскажите, может кто-нибудь использовал LPC для общения драйвера с процессом??