Странные параметры в IRP_MJ_CREATE - Parameters.Create.Options
От: Iskarov.And  
Дата: 12.08.14 12:18
Оценка:
Добрый день.

Создаю IoDevice, открываю его CreateFile из юзермода и в IRP_MJ_CREATE в Parameters.Create.Options у меня всегда странное 0x20600 (убирая верхние 8 бит, они нормальные) какие бы я флаги не указывал, но если открыть через ZwOpenFile из кернела то флаги передаются нормально. Проверки нтстатуса выкусил из кода для меньшего обьема, создаются нормально.

Создание ио девайса:
RtlInitUnicodeString(&usDeviceName, "\\Device\\MyDev");
RtlInitUnicodeString(&usSymLnkName, "\\DosDevices\\Global\\MyDev");
IoCreateDevice(pDrvObj, sizeof(DEVICE_GENERIC_DATA), &usDeviceName, FILE_DEVICE_DISK_FILE_SYSTEM, 0, FALSE, &pdevMy);
IoCreateSymbolicLink(&usSymLnkName, &usDeviceName);

Открытие из кернела
RtlInitUnicodeString(&usObjName, "\\\\.\\MyDev\\obj");
InitializeObjectAttributes(&oa, &usObjName, OBJ_KERNEL_HANDLE, NULL, NULL)
ZwOpenFile(&hFile, FILE_ALL_ACCESS, &oa, &ioStatus, FILE_SHARE_READ, FILE_WRITE_THROUGH);

Открытие из юзермода:
CreateFile("\\\\.\\MyDev\\obj", GENERIC_WRITE, FILE_SHARE_READ, 0, OPEN_EXISTING, FILE_FLAG_WRITE_THROUGH, 0)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.