Função SeAccessCheck (wdm.h)
SeAccessCheck determina se os direitos de acesso solicitados podem ser concedidos a um objeto protegido por um descritor de segurança e um proprietário de objeto.
Sintaxe
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
Ponteiro para a estrutura SECURITY_DESCRIPTOR que descreve o descritor de segurança que protege o objeto que está sendo acessado.
[in] SubjectSecurityContext
Ponteiro para a estrutura de SECURITY_SUBJECT_CONTEXT opaca que especifica o contexto de segurança capturado do assunto.
[in] SubjectContextLocked
Valor booliano que indica se o contexto de assunto do usuário está bloqueado, para que ele não precise ser bloqueado novamente.
[in] DesiredAccess
Especifica a máscara de bits ACCESS_MASK para os direitos de acesso que o chamador está tentando adquirir. Se o chamador definir o MAXIMUM_ALLOWED bit, a rotina executará todas as verificações da DACL. No entanto, SeAccessCheck não faz nenhuma verificação de privilégio, a menos que o chamador as solicite especificamente definindo o ACCESS_SYSTEM_SECURITY ou WRITE_OWNER bits.
[in] PreviouslyGrantedAccess
Especifica o ACCESS_MASK bitmask de direitos de acesso já concedidos, como direitos de acesso concedidos como resultado da retenção de um privilégio.
[out] Privileges
Ponteiro para uma variável fornecida pelo chamador a ser definida como o endereço da estrutura PRIVILEGE_SET que será usada como parte da validação de acesso ou esse parâmetro pode ser NULL. O buffer retornado, se houver, deve ser liberado pelo chamador com SeFreePrivileges.
[in] GenericMapping
Ponteiro para a estrutura GENERIC_MAPPING associada a esse tipo de objeto. Esse valor especifica os direitos de acesso específicos implícitos por cada direito de acesso GENERIC_XXX .
[in] AccessMode
Especifica o modo de acesso a ser usado no marcar, UserMode ou KernelMode.
[out] GrantedAccess
Ponteiro para uma máscara de acesso retornada que indica o acesso concedido. Se o chamador especificar MAXIMUM_ALLOWED e a DACL em SecurityDescriptor for NULL, a rotina retornará GENERIC_ALL mais qualquer acesso adicional que o chamador solicitar explicitamente.
[out] AccessStatus
Ponteiro para o valor status indicando por que o acesso foi negado.
Retornar valor
Se o acesso for permitido, SeAccessCheck retornará TRUE.
Comentários
SeAccessCheck pode executar testes de privilégio para SeTakeOwnershipPrivilege e SeSecurityPrivilege, dependendo dos acessos que estão sendo solicitados. Ele pode executar testes de privilégios adicionais em versões futuras do sistema operacional.
Essa rotina também pode marcar se o chamador é o proprietário do objeto para conceder acesso a WRITE_DAC ou READ_CONTROL.
Se essa rotina retornar FALSE, o chamador deverá usar o AccessStatus retornado como seu valor retornado. Ou seja, o chamador deve evitar a codificação de um valor retornado de STATUS_ACCESS_DENIED ou qualquer outro valor específico STATUS_XXX .
Para obter mais informações sobre segurança e controle de acesso, consulte Modelo de segurança do Windows para desenvolvedores de driver e a documentação sobre esses tópicos no SDK do Microsoft Windows.
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte | Windows 2000 |
Plataforma de Destino | Universal |
Cabeçalho | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
Biblioteca | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
Regras de conformidade da DDI | HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm) |