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)

Consulte también

ACCESS_MASK

GENERIC_MAPPING

IoGetFileObjectGenericMapping

PRIVILEGE_SET

SE_EXPORTS

SECURITY_DESCRIPTOR

SECURITY_SUBJECT_CONTEXT

SeFreePrivileges

SeValidSecurityDescriptor