сразу же после этого вызываю
IoCreateSymbolicLink(...)
status = IoCreateDevice(DriverObject,
sizeof(DEVICE_EXTENSION),
&device_name,
DEVICE_ASD,
0,
FALSE,
&device_object);
возвращается 0 (все отлично).
if (!NT_SUCCESS(status))
{
return status;
}
RtlInitUnicodeString(&symbolic_link, "SymbolicLink");
status = IoCreateSymbolicLink(&symbolic_link, &device_name);
эта функция, по непонятным мне причинам, возвращает STATUS_OBJECT_PATH_SYNTAX_BAD
следовательно создать ссылку не получается.
пробовал указывать имя ссылки как набор символов (dkjfhdjkhglfkjgf), все та же ошибка.
может подскажите как создать символическую ссылку или в чем моя ошибка?
А>пробовал указывать имя ссылки как набор символов (dkjfhdjkhglfkjgf), все та же ошибка.
А>может подскажите как создать символическую ссылку или в чем моя ошибка?
обратите внимание что в драйверах лучше все делать с UNICODE строками (а лучше собирать весь проект в UNICODE)
... << RSDN@Home 1.1.3 beta 1 >>
Valery A. Boronin, RSDN Team, linkedin.com\in\boronin
R&D Mgmt & Security. AppSec & SDL. Data Protection and Systems Programming. FDE, DLP, Incident Management. Windows Filesystems and Drivers.
Или, что более актуально:
RtlInitUnicodeString(&symbolic_link, "\\DosDevices\\SymbolicLink");
Да пребудет с тобою сила
Re: CreateFile()
От:
Аноним
Дата:
09.03.04 09:45
Оценка:
Здравствуйте, Аноним, Вы писали:
я создал символическую ссылку с именем \\Device\\SymbolicLink
в DriverUnload я эту ссылку удаляю.
теперь пытаюсь зацепить эту ссылку из приложения через CreateFile() так
CreateFile(\\\\.\\Device\\SymbolicLink, ...);
и так
CreateFile(\\\\.\\SymbolicLink, ...);
результат один — ошибка под номером 2 (такой путь не найден)
Здравствуйте, Аноним, Вы писали:
А>я создал символическую ссылку с именем \\Device\\SymbolicLink А>в DriverUnload я эту ссылку удаляю.
А>теперь пытаюсь зацепить эту ссылку из приложения через CreateFile() так А>CreateFile(\\\\.\\Device\\SymbolicLink, ...); А>и так А>CreateFile(\\\\.\\SymbolicLink, ...);
А>результат один — ошибка под номером 2 (такой путь не найден)
--
Если Вы создаете device не в функции DriverEntry, не забудьте сбросить флаг DO_DEVICE_INITIALIZING в флагах созданного device'a.
C уважением,
Геннадий Майко.
Re[3]: CreateFile()
От:
Аноним
Дата:
09.03.04 10:16
Оценка:
Здравствуйте, Геннадий Майко, Вы писали:
ГМ>Если Вы создаете device не в функции DriverEntry, не забудьте сбросить флаг DO_DEVICE_INITIALIZING в флагах созданного device'a.
я из DriverEntry() вызваю процедуру, в которой вызываю IoCreateDevice(), а после IoCreateSymbolicLink(). значит ли это, что необходимо сбросить флаг?!
каким образом это сделать?
Здравствуйте, Аноним, Вы писали:
ГМ>>Если Вы создаете device не в функции DriverEntry, не забудьте сбросить флаг DO_DEVICE_INITIALIZING в флагах созданного device'a. А>я из DriverEntry() вызваю процедуру, в которой вызываю IoCreateDevice(), а после IoCreateSymbolicLink(). значит ли это, что необходимо сбросить флаг?!
--
Нет, скорее всего, сбрасывать флаг в этой ситуации не надо.
Надо искать другую причину проблемы.
Попробуйте прежде всего посмотреть, действительно ли создается объект и ссылка на него с помощью утилиты winobj.exe из SDK.
С уважением,
Геннадий Майко.
Re[2]: CreateFile()
От:
Аноним
Дата:
09.03.04 16:48
Оценка:
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Аноним, Вы писали:
А>я создал символическую ссылку с именем \\Device\\SymbolicLink А>в DriverUnload я эту ссылку удаляю.
А>теперь пытаюсь зацепить эту ссылку из приложения через CreateFile() так А>CreateFile(\\\\.\\Device\\SymbolicLink, ...); А>и так А>CreateFile(\\\\.\\SymbolicLink, ...);
А>результат один — ошибка под номером 2 (такой путь не найден)
А>подскажите в чем может быть дело?!
А>спасибо.
Насколько я знаю,
CreateFile(\\\\.\\SymbolicLink, ...);
будет пытаться открыть "\\DosDevices\\SymbolicLink"