Función SeAccessCheck (wdm.h)
SeAccessCheck determina si los derechos de acceso solicitados se pueden conceder a un objeto protegido por un descriptor de seguridad y un propietario de objeto.
Sintaxis
BOOLEAN SeAccessCheck(
[in] PSECURITY_DESCRIPTOR SecurityDescriptor,
[in] PSECURITY_SUBJECT_CONTEXT SubjectSecurityContext,
[in] BOOLEAN SubjectContextLocked,
[in] ACCESS_MASK DesiredAccess,
[in] ACCESS_MASK PreviouslyGrantedAccess,
[out] PPRIVILEGE_SET *Privileges,
[in] PGENERIC_MAPPING GenericMapping,
[in] KPROCESSOR_MODE AccessMode,
[out] PACCESS_MASK GrantedAccess,
[out] PNTSTATUS AccessStatus
);
Parámetros
[in] SecurityDescriptor
Puntero a la estructura SECURITY_DESCRIPTOR que describe el descriptor de seguridad que protege el objeto al que se accede.
[in] SubjectSecurityContext
Puntero a la estructura de SECURITY_SUBJECT_CONTEXT opaca que especifica el contexto de seguridad capturado del sujeto.
[in] SubjectContextLocked
Valor booleano que indica si el contexto del sujeto del usuario está bloqueado, de modo que no tenga que volver a bloquearse.
[in] DesiredAccess
Especifica la máscara de bits ACCESS_MASK para los derechos de acceso que el autor de la llamada está intentando adquirir. Si el autor de la llamada establece el bit de MAXIMUM_ALLOWED, la rutina realiza todas las comprobaciones de DACL. Sin embargo, SeAccessCheck no realiza ninguna comprobación de privilegios a menos que el autor de la llamada los solicite específicamente estableciendo los bits ACCESS_SYSTEM_SECURITY o WRITE_OWNER.
[in] PreviouslyGrantedAccess
Especifica el ACCESS_MASK máscara de bits de los derechos de acceso ya concedidos, como los derechos de acceso concedidos como resultado de mantener un privilegio.
[out] Privileges
Puntero a una variable proporcionada por el autor de la llamada que se va a establecer en la dirección de la estructura de PRIVILEGE_SET que se usará como parte de la validación de acceso, o este parámetro puede ser NULL. El llamador debe liberar el búfer devuelto, si existe, con SeFreePrivileges.
[in] GenericMapping
Puntero a la estructura GENERIC_MAPPING asociada a este tipo de objeto. Este valor especifica los derechos de acceso específicos implícitos en cada derecho de acceso GENERIC_XXX .
[in] AccessMode
Especifica el modo de acceso que se va a usar en la comprobación, ya sea UserMode o KernelMode.
[out] GrantedAccess
Puntero a una máscara de acceso devuelta que indica el acceso concedido. Si el autor de la llamada especifica MAXIMUM_ALLOWED y daCL en SecurityDescriptor es NULL, la rutina devuelve GENERIC_ALL más cualquier acceso adicional que solicite explícitamente el autor de la llamada.
[out] AccessStatus
Puntero al valor de estado que indica por qué se denegó el acceso.
Valor devuelto
Si se permite el acceso, SeAccessCheck devuelve TRUE.
Comentarios
SeAccessCheck puede realizar pruebas de privilegios para SeTakeOwnershipPrivilege y SeSecurityPrivilege, en función de los accesos solicitados. Puede realizar pruebas de privilegios adicionales en futuras versiones del sistema operativo.
Esta rutina también puede comprobar si el autor de la llamada es el propietario del objeto para conceder acceso WRITE_DAC o READ_CONTROL.
Si esta rutina devuelve FALSE, el autor de la llamada debe usar accessStatus devuelto como valor devuelto. Es decir, el autor de la llamada debe evitar codificar de forma hardcod un valor devuelto de STATUS_ACCESS_DENIED o cualquier otro valor STATUS_XXX específico.
Para obtener más información sobre la seguridad y el control de acceso, consulte Modelo de seguridad de Windows para desarrolladores de controladores y la documentación sobre estos temas en la Microsoft Windows SDK.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 2000 |
Plataforma de destino | Universal |
Encabezado | wdm.h (incluya Wdm.h, Ntddk.h, Ntifs.h) |
Library | NtosKrnl.lib |
Archivo DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
Reglas de cumplimiento de DDI | HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm) |