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
STATUS_BAD_DESCRIPTOR_FORMAT
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.
STATUS_BUFFER_TOO_SMALL
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

Vedi anche

ACL

RtlAbsoluteToSelfRelativeSD

RtlCreateSecurityDescriptor

RtlLengthSecurityDescriptor

RtlSetDaclSecurityDescriptor

RtlSetOwnerSecurityDescriptor

RtlValidSecurityDescriptor