Controlar el acceso a dispositivos
El proceso de host del controlador UMDF se ejecuta en el contexto de la cuenta de servicio local. Es posible que el controlador tenga que acceder a otros dispositivos o componentes que no permitan el acceso generalizado a la cuenta de servicio local.
A partir de Windows 8, el sistema operativo incluye un identificador de seguridad (SID) que identifica los controladores UMDF. Al incluir este SID en sus requisitos de seguridad de dispositivos, los dispositivos o los componentes pueden permitir el acceso a los controladores de UMDF, a la vez que impiden el acceso a otras solicitudes de la cuenta de servicio local.
El SID para los controladores UMDF es SDDL_USER_MODE_DRIVERS y la definición está en sddl.h. La representación completa de este SID es:
S-1-5-84-0-0-0-0-0
La abreviatura de este SID es UD. Esta abreviatura está disponible a partir de Windows 8.
Un controlador externo al controlador UMDF puede especificar el SID en su archivo INF o en el controlador, antes de crear el objeto de dispositivo.
Especificación de la seguridad del dispositivo en un archivo INF
En el archivo INF, puede usar el formulario abreviado o la forma totalmente especificada del SID.
El formulario abreviado está disponible a partir de Windows 8:
HKR,,Security,,"D:P(A;;GA;;;BA)(A;;GA;;;SY)(A;;GA;;;UD)"
En los sistemas operativos anteriores a Windows 8, debe usar el formulario completamente especificado:
HKR,,Security,,"D:P(A;;GA;;;BA)(A;;GA;;;SY)(A;;GA;;;S-1-5-84-0-0-0-0-0)"
Especificación de la seguridad del dispositivo en un controlador KMDF
Para especificar los requisitos de seguridad en el controlador, debe usar el formulario abreviado, que solo está disponible a partir de Windows 8. Por ejemplo, un controlador KMDF podría habilitar el acceso a su dispositivo desde controladores UMDF mediante lo siguiente:
RtlInitUnicodeString(&sddlString, L"D:P(A;;GA;;;BA)(A;;GA;;;SY)(A;;GA;;;UD)");
status = WdfDeviceInitAssignSDDLString(DeviceInit, &sddlString);