IoCreateSymbolicLink не работает - PullRequest
       60

IoCreateSymbolicLink не работает

0 голосов
/ 16 февраля 2020

Устройство успешно создается, но ссылка на символ c на нем не работает. Имя устройства одинаково в IoCreateSymbolicLink() и IoCreateDevice() Первая функция просто возвращает ошибочное состояние, несмотря на то, что оба параметра являются правильными. В этот момент я попытался изменить символьное c место ссылки, изменив ?? с ГЛОБАЛЬНЫМИ ?? но все равно не повезло. RtlInitUnicodeString() с массивом WCHAR выдает значения мусора, пробовал тоже.

Источник:

#include <ntddk.h>
#include <wdf.h>
#include <wdm.h>
#include <windot11.h>
#include <ntdef.h>


DRIVER_INITIALIZE DriverEntry;
UNICODE_STRING DeviceName= RTL_CONSTANT_STRING(L"\\Device\\testdevice");
PDEVICE_OBJECT DeviceObject = 0;
UNICODE_STRING SymLinkName = RTL_CONSTANT_STRING(L"\\??\\mylink123");

VOID Unload(PDRIVER_OBJECT DriverObject)
{
    IoDeleteSymbolicLink(&SymLinkName);
    IoDeleteDevice(DeviceObject);
    KdPrint(("Driver Unloaded"));
}

WDF_DRIVER_CONFIG config;

NTSTATUS DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath)
{
    NTSTATUS status;

    DriverObject->DriverUnload = Unload;

    status = IoCreateDevice(DriverObject, 0, &DeviceName, FILE_DEVICE_UNKNOWN, FILE_DEVICE_SECURE_OPEN, 0, &DeviceObject);

    if (!NT_SUCCESS(status))
    {
        KdPrint(("Creating Device Has Failed"));
        return status;
    }
    status = IoCreateSymbolicLink(&SymLinkName, &DeviceName);

    if (!NT_SUCCESS(status));
    {
        KdPrint(("Creating Symlink Failed \r\n"));
        IoDeleteDevice(DeviceObject);
        return status;
    }

    KdPrint(("Driver Loaded\r\n"));

    return status;
}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...