SSDL для пользовательского режима, взаимодействующего с ядром
Я работаю над драйвером Windows, и мне нужно было использовать IOCTL для связи между программой пользовательского режима и моим драйвером, но я не совсем уверен, какой код SSDL мне следует использовать. На данный момент у меня есть следующее...
PWDFDEVICE_INIT pInit = NULL;
pInit = WdfControlDeviceInitAllocate(Driver, &SDDL_DEVOBJ_SYS_ALL_ADM_RWX_WORLD_RW_RES_R);
if (pInit == NULL) {
status = STATUS_INSUFFICIENT_RESOURCES;
goto Error;
}
WdfDeviceInitSetExclusive(pInit, TRUE);
я установилWdfDeviceInitSetExclusive
эксклюзивное логическое значение TRUE, потому что я хочу, чтобы только один экземпляр моей программы пользовательского режима мог взаимодействовать с этой очередью. Однако мой главный вопрос касается того, какой SSDL мне следует использовать для связи ICOTL только для чтения и только для записи между пользовательским режимом и драйвером моего ядра. Судя по описанию внутриwdmsec.h
Кажется, чтоSDDL_DEVOBJ_SYS_ALL_ADM_RWX_WORLD_R
может быть лучшим выбором для чтения, покаSDDL_DEVOBJ_SYS_ALL_ADM_RWX_WORLD_R_RES_R
лучше всего подходит для записи, поскольку, похоже, SSDL для записи не существует.