Проблема с созданием символьной ссылки

Тема в разделе "WASM.BEGINNERS", создана пользователем JCronuz, 23 фев 2010.

  1. JCronuz

    JCronuz New Member

    Публикаций:
    0
    Регистрация:
    26 сен 2007
    Сообщения:
    1.240
    Адрес:
    Russia
    Приветствую!

    Постоянно возникает дурацкая ошибка(выводится по средством DbgPrint)

    Код (Text):
    1. #define SYMBOL L"\\DosDevices\\SymbolDriver1"
    2.  
    3. NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject, IN PUNICODE_STRING RegistryPath)
    4. {
    5.  
    6. UNICODE_STRING usDeviceName;
    7. UNICODE_STRING usSymbolicName;
    8. PDEVICE_OBJECT DeviceObject = NULL;
    9. NTSTATUS Status;
    10.  
    11. _KDPRINT("Driver load");
    12. //... создание устройства происходит успешно
    13.  
    14. RtlInitUnicodeString(&usSymbolicName, SYMBOL);
    15. Status = IoCreateSymbolicLink(&usSymbolicName, &usDeviceName);
    16. if (!NT_SUCCESS(Status))
    17. {
    18.     _KDPRINT("Couldn't create symbolic link\n");
    19.     IoDeleteDevice( DeviceObject );
    20. }
    21.  
    22. DriverObject->DriverUnload = DriverUnload;
    23.  
    24. return ( STATUS_SUCCESS );
    Загружаю драйвер через KmdManager, отслеживаю сообщения через DebugView:

    Код (Text):
    1. Driver load
    2. Couldn't create symbolic link
    KmdManager говорит что все успешно загружено, пробую читать из GUI-приложения символьную ссылку

    Код (Text):
    1. hDevice = CreateFile("\\\\.\\SymbolDriver1", GENERIC_READ|GENERIC_WRITE,
    2.         0,
    3.         NULL,
    4.         OPEN_EXISTING,
    5.         FILE_ATTRIBUTE_NORMAL,
    6.         0);
    Проблема#1

    В отладчике всегда hDevice равен -1, GetLastError() возврщает 2 - неверная функция, как понимать сей вывод немогу понять, подскажите что-то или по приведенным отрывкам невозможно определить в чем может быть проблема?

    Проблема#2

    Приходится перезагружать систему, что бы снова загрузить драйвер, нежели происходит если использовать динамический загрузщик. Допускаю, что неправильно работаю с KmdManager. Все ли перезагружают драйвер после одной загрузки при работае с KmdManager?

    Если проблема номер1 не ожиданно испарилась, как и произошла, то вторая приследует на каждом шаге.