SeAccessCheck-Funktion (wdm.h)
SeAccessCheck bestimmt, ob die angeforderten Zugriffsrechte für ein Objekt gewährt werden können, das durch einen Sicherheitsdeskriptor und einen Objektbesitzer geschützt ist.
Syntax
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
);
Parameter
[in] SecurityDescriptor
Zeiger auf die SECURITY_DESCRIPTOR-Struktur , die den Sicherheitsdeskriptor beschreibt, der das Objekt schützt, auf das zugegriffen wird.
[in] SubjectSecurityContext
Zeiger auf die nicht transparente SECURITY_SUBJECT_CONTEXT-Struktur , die den erfassten Sicherheitskontext des Antragstellers angibt.
[in] SubjectContextLocked
Boolescher Wert, der angibt, ob der Betreffkontext des Benutzers gesperrt ist, sodass er nicht erneut gesperrt werden muss.
[in] DesiredAccess
Gibt die ACCESS_MASK Bitmaske für die Zugriffsrechte an, die der Aufrufer abrufen möchte. Wenn der Aufrufer das MAXIMUM_ALLOWED Bit festlegt, führt die Routine alle DACL-Überprüfungen durch. SeAccessCheck führt jedoch keine Berechtigungsüberprüfungen durch, es sei denn, der Aufrufer fordert diese durch Festlegen der ACCESS_SYSTEM_SECURITY oder WRITE_OWNER Bits ausdrücklich an.
[in] PreviouslyGrantedAccess
Gibt die ACCESS_MASK Bitmaske der bereits gewährten Zugriffsrechte an, z. B. Zugriffsrechte, die aufgrund des Haltens einer Berechtigung gewährt werden.
[out] Privileges
Zeiger auf eine vom Aufrufer bereitgestellte Variable, die auf die Adresse der PRIVILEGE_SET-Struktur festgelegt werden soll, die im Rahmen der Zugriffsüberprüfung verwendet wird, oder dieser Parameter kann NULL sein. Der zurückgegebene Puffer muss ggf. vom Aufrufer mit SeFreePrivileges freigegeben werden.
[in] GenericMapping
Zeiger auf die GENERIC_MAPPING Struktur, die diesem Objekttyp zugeordnet ist. Dieser Wert gibt die spezifischen Zugriffsrechte an, die von den einzelnen GENERIC_XXX-Zugriffsrechten impliziert werden.
[in] AccessMode
Gibt den Zugriffsmodus an, der in der Überprüfung verwendet werden soll, entweder UserMode oder KernelMode.
[out] GrantedAccess
Zeiger auf eine zurückgegebene Zugriffsmaske, die den gewährten Zugriff angibt. Wenn der Aufrufer MAXIMUM_ALLOWED angibt und die DACL in SecurityDescriptor NULL ist, gibt die Routine GENERIC_ALL sowie alle zusätzlichen Zugriffe zurück, die der Aufrufer explizit anfordert.
[out] AccessStatus
Zeiger auf den status Wert, der angibt, warum der Zugriff verweigert wurde.
Rückgabewert
Wenn der Zugriff zulässig ist, gibt SeAccessCheck TRUE zurück.
Hinweise
SeAccessCheck kann je nach angeforderten Zugriffen Berechtigungstests für SeTakeOwnershipPrivilege und SeSecurityPrivilege durchführen. Es kann zusätzliche Berechtigungstests in zukünftigen Versionen des Betriebssystems durchführen.
Diese Routine kann auch überprüfen, ob der Aufrufer der Besitzer des Objekts ist, um WRITE_DAC oder READ_CONTROL Zugriff zu gewähren.
Wenn diese Routine FALSE zurückgibt, sollte der Aufrufer den zurückgegebenen AccessStatus als Rückgabewert verwenden. Das heißt, der Aufrufer sollte die Hartcodierung eines Rückgabewerts von STATUS_ACCESS_DENIED oder eines anderen spezifischen STATUS_XXX-Werts vermeiden.
Weitere Informationen zur Sicherheit und Zugriffssteuerung finden Sie unter Windows-Sicherheitsmodell für Treiberentwickler und in der Dokumentation zu diesen Themen im Microsoft Windows SDK.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows 2000 |
Zielplattform | Universell |
Header | wdm.h (einschließlich Wdm.h, Ntddk.h, Ntifs.h) |
Bibliothek | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | PASSIVE_LEVEL |
DDI-Complianceregeln | HwStorPortProhibitedDIs(storport), PowerIrpDDis(wdm) |