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 l'elenco 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 Proprietario. 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 AbsoluteSecurityDescriptor , Dacl, Sacl, Ownero parametro PrimaryGroup era troppo piccolo. STATUS_BUFFER_TOO_SMALL è un codice di errore. |
Osservazioni
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 self-relative, una struttura SECURITY_DESCRIPTOR avvia sempre le informazioni, ma gli altri componenti del descrittore di sicurezza possono seguire la struttura SECURITY_DESCRIPTOR in qualsiasi ordine. Anziché 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 su 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, Ownere PrimaryGroup buffer. Pertanto, il chiamante non può liberare questi buffer dopo aver chiamato RtlSelfRelativeToAbsoluteSD, perché in questo modo 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.
Fabbisogno
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 |