Funzione SeAccessCheck (wdm.h)
SeAccessCheck determina se i diritti di accesso richiesti possono essere concessi a un oggetto protetto da un descrittore di sicurezza e da un proprietario dell'oggetto.
Sintassi
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
);
Parametri
[in] SecurityDescriptor
Puntatore alla struttura SECURITY_DESCRIPTOR che descrive il descrittore di sicurezza che protegge l'oggetto a cui si accede.
[in] SubjectSecurityContext
Puntatore alla struttura SECURITY_SUBJECT_CONTEXT opaca che specifica il contesto di sicurezza acquisito dell'oggetto.
[in] SubjectContextLocked
Valore booleano che indica se il contesto del soggetto dell'utente è bloccato, in modo che non sia necessario bloccarlo di nuovo.
[in] DesiredAccess
Specifica la maschera di bit ACCESS_MASK per i diritti di accesso che il chiamante sta tentando di acquisire. Se il chiamante imposta il bit MAXIMUM_ALLOWED, la routine esegue tutti i controlli DACL. Tuttavia, SeAccessCheck non esegue controlli dei privilegi a meno che il chiamante non le richieda specificamente impostando i bit ACCESS_SYSTEM_SECURITY o WRITE_OWNER.
[in] PreviouslyGrantedAccess
Specifica il ACCESS_MASK maschera di bit dei diritti di accesso già concessi, ad esempio i diritti di accesso concessi in seguito alla conservazione di un privilegio.
[out] Privileges
Puntatore a una variabile fornita dal chiamante da impostare sull'indirizzo della struttura PRIVILEGE_SET che verrà utilizzata come parte della convalida dell'accesso oppure questo parametro può essere NULL. Il buffer restituito, se presente, deve essere rilasciato dal chiamante con SeFreePrivileges.
[in] GenericMapping
Puntatore alla struttura GENERIC_MAPPING associata a questo tipo di oggetto. Questo valore specifica i diritti di accesso specifici impliciti per ogni diritto di accesso GENERIC_XXX .
[in] AccessMode
Specifica la modalità di accesso da usare nel controllo , UserMode o KernelMode.
[out] GrantedAccess
Puntatore a una maschera di accesso restituita che indica l'accesso concesso. Se il chiamante specifica MAXIMUM_ALLOWED e il DACL in SecurityDescriptor è NULL, la routine restituisce GENERIC_ALL più qualsiasi altro accesso richiesto dal chiamante in modo esplicito.
[out] AccessStatus
Puntatore al valore di stato che indica il motivo per cui l'accesso è stato negato.
Valore restituito
Se l'accesso è consentito, SeAccessCheck restituisce TRUE.
Commenti
SeAccessCheck potrebbe eseguire test dei privilegi per SeTakeOwnershipPrivilege e SeSecurityPrivilege, a seconda degli accessi richiesti. Potrebbe eseguire test di privilegi aggiuntivi nelle versioni future del sistema operativo.
Questa routine può anche verificare se il chiamante è il proprietario dell'oggetto per concedere WRITE_DAC o READ_CONTROL l'accesso.
Se questa routine restituisce FALSE, il chiamante deve utilizzare accessStatus restituito come valore restituito. Ovvero, il chiamante deve evitare di impostare come hardcoding un valore restituito di STATUS_ACCESS_DENIED o qualsiasi altro valore specifico STATUS_XXX .
Per altre informazioni sulla sicurezza e sul controllo di accesso, vedere Modello di sicurezza di Windows per sviluppatori di driver e la documentazione su questi argomenti nell'Microsoft Windows SDK.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 2000 |
Piattaforma di destinazione | Universale |
Intestazione | wdm.h (include Wdm.h, Ntddk.h, Ntifs.h) |
Libreria | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
Regole di conformità DDI | HwStorPortProhibitedDDIs(storport), PowerIrpDDis(wdm) |