Funzione RtlSelfRelativeToAbsoluteSD (ntifs.h)
La routine RtlSelfRelativeToAbsoluteSD crea un nuovo descrittore di sicurezza in formato assoluto usando un descrittore di sicurezza in formato auto-relativo come modello.
Sintassi
NTSYSAPI NTSTATUS RtlSelfRelativeToAbsoluteSD(
[in] PSECURITY_DESCRIPTOR SelfRelativeSecurityDescriptor,
[out] PSECURITY_DESCRIPTOR AbsoluteSecurityDescriptor,
[in, out] PULONG AbsoluteSecurityDescriptorSize,
[out] PACL Dacl,
[in, out] PULONG DaclSize,
[out] PACL Sacl,
[in, out] PULONG SaclSize,
[out] PSID Owner,
[in, out] PULONG OwnerSize,
[out] PSID PrimaryGroup,
[in, out] PULONG PrimaryGroupSize
);
Parametri
[in] SelfRelativeSecurityDescriptor
Puntatore a un buffer allocato dal chiamante che contiene una struttura SECURITY_DESCRIPTOR in formato auto-relativo. RtlSelfRelativeToAbsoluteSD crea una versione di questo descrittore di sicurezza in formato assoluto senza modificare l'originale.
[out] AbsoluteSecurityDescriptor
Puntatore a un buffer allocato dal chiamante che riceve il corpo principale di un descrittore di sicurezza in formato assoluto. Queste informazioni vengono formattate come struttura SECURITY_DESCRIPTOR.
[in, out] AbsoluteSecurityDescriptorSize
Puntatore a una variabile allocata dal chiamante che specifica le dimensioni, in byte, del buffer a cui punta il parametro AbsoluteSecurityDescriptor . Se il buffer non è sufficientemente grande da contenere il descrittore di sicurezza, RtlSelfRelativeToAbsoluteSD restituisce STATUS_BUFFER_TOO_SMALL e imposta questa variabile sulla dimensione minima richiesta.
[out] Dacl
Puntatore a un buffer allocato dal chiamante che riceve l'elenco DACL del descrittore di sicurezza in formato assoluto. Il corpo principale del descrittore di sicurezza in formato assoluto fa riferimento a questo puntatore.
[in, out] DaclSize
Puntatore a una variabile allocata dal chiamante che specifica le dimensioni, in byte, del buffer a cui punta il parametro Dacl . Se il buffer non è sufficientemente grande da contenere il DACL, RtlSelfRelativeToAbsoluteSD restituisce STATUS_BUFFER_TOO_SMALL e imposta questa variabile sulla dimensione minima richiesta.
[out] Sacl
Puntatore a un buffer allocato dal chiamante che riceve l'elenco SACL del descrittore di sicurezza in formato assoluto. Il corpo principale del descrittore di sicurezza in formato assoluto fa riferimento a questo puntatore.
[in, out] SaclSize
Puntatore a una variabile allocata dal chiamante che specifica le dimensioni, in byte, del buffer a cui punta il parametro Sacl . Se il buffer non è sufficientemente grande da contenere SACL, RtlSelfRelativeToAbsoluteSD restituisce STATUS_BUFFER_TOO_SMALL e imposta questa variabile sulla dimensione minima richiesta.
[out] Owner
Puntatore a un buffer allocato dal chiamante che riceve il SID del proprietario del descrittore di sicurezza in formato assoluto. Il corpo principale del descrittore di sicurezza in formato assoluto fa riferimento a questo puntatore.
[in, out] OwnerSize
Puntatore a una variabile allocata dal chiamante che specifica le dimensioni, in byte, del buffer a cui punta il parametro Owner . Se il buffer non è sufficientemente grande da contenere il SID, RtlSelfRelativeToAbsoluteSD restituisce STATUS_BUFFER_TOO_SMALL e imposta questa variabile sulla dimensione minima richiesta.
[out] PrimaryGroup
Puntatore a un buffer allocato dal chiamante che riceve il SID del gruppo primario del descrittore di sicurezza in formato assoluto. Il corpo principale del descrittore di sicurezza in formato assoluto fa riferimento a questo puntatore.
[in, out] PrimaryGroupSize
Puntatore a una variabile allocata dal chiamante che specifica le dimensioni, in byte, del buffer a cui punta il parametro PrimaryGroup . Se il buffer non è sufficientemente grande da contenere il SID, RtlSelfRelativeToAbsoluteSD restituisce STATUS_BUFFER_TOO_SMALL e imposta questa variabile sulla dimensione minima richiesta.
Valore restituito
RtlSelfRelativeToAbsoluteSD restituisce STATUS_SUCCESS o un valore NTSTATUS appropriato, ad esempio uno dei seguenti:
Codice restituito | Descrizione |
---|---|
|
Il buffer a cui punta il parametro AbsoluteSecurityDescriptor non contiene una struttura SECURITY_DESCRIPTOR in formato assoluto. STATUS_BAD_DESCRIPTOR_FORMAT è un codice di errore. |
|
Il buffer a cui punta il parametro AbsoluteSecurityDescriptor , Dacl, Sacl, Owner o PrimaryGroup è troppo piccolo. STATUS_BUFFER_TOO_SMALL è un codice di errore. |
Commenti
Un descrittore di sicurezza in formato assoluto contiene puntatori alle informazioni, anziché contenere le informazioni stesse. Un descrittore di sicurezza in formato auto-relativo contiene le informazioni in un blocco contiguo di memoria. In un descrittore di sicurezza auto-relativo, una struttura di SECURITY_DESCRIPTOR avvia sempre le informazioni, ma gli altri componenti del descrittore di sicurezza possono seguire la struttura SECURITY_DESCRIPTOR in qualsiasi ordine. Invece di usare gli indirizzi di memoria, i componenti del descrittore di sicurezza vengono identificati da offset dall'inizio del descrittore di sicurezza. Questo formato è utile quando un descrittore di sicurezza deve essere archiviato in un disco floppy o trasmesso tramite un protocollo di comunicazione.
Si noti che il parametro AbsoluteSecurityDescriptor riceve solo il corpo principale del descrittore di sicurezza assoluto. L'intero descrittore di sicurezza assoluto è costituito da questo corpo principale, oltre a tutti i componenti del descrittore di sicurezza restituiti nei buffer Dacl, Sacl, Owner e PrimaryGroup . Pertanto, il chiamante non può liberare questi buffer dopo aver chiamato RtlSelfRelativeToAbsoluteSD, perché ciò invaliderebbe il descrittore di sicurezza assoluto.
Per creare un nuovo descrittore di sicurezza in formato auto-relativo usando un descrittore di sicurezza in formato assoluto come modello, usare RtlAbsoluteToSelfRelativeSD.
Per altre informazioni sulla sicurezza e sul controllo di accesso, vedere la documentazione di Microsoft Windows SDK.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows Server 2003 SP1 |
Piattaforma di destinazione | Universale |
Intestazione | ntifs.h (include Ntifs.h) |
Libreria | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <= APC_LEVEL |