Устройство успешно создается, но ссылка на символ 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;
}