Funzione MakeAbsoluteSD (securitybaseapi.h)

La funzione MakeAbsoluteSD crea un descrittore di sicurezza in formato assoluto usando un descrittore di sicurezza in formato auto-relativo come modello.

Sintassi

BOOL MakeAbsoluteSD(
  [in]            PSECURITY_DESCRIPTOR pSelfRelativeSecurityDescriptor,
  [out, optional] PSECURITY_DESCRIPTOR pAbsoluteSecurityDescriptor,
  [in, out]       LPDWORD              lpdwAbsoluteSecurityDescriptorSize,
  [out, optional] PACL                 pDacl,
  [in, out]       LPDWORD              lpdwDaclSize,
  [out, optional] PACL                 pSacl,
  [in, out]       LPDWORD              lpdwSaclSize,
  [out, optional] PSID                 pOwner,
  [in, out]       LPDWORD              lpdwOwnerSize,
  [out, optional] PSID                 pPrimaryGroup,
  [in, out]       LPDWORD              lpdwPrimaryGroupSize
);

Parametri

[in] pSelfRelativeSecurityDescriptor

Puntatore a una struttura SECURITY_DESCRIPTOR in formato auto-relativo. La funzione crea una versione in formato assoluto di questo descrittore di sicurezza senza modificare il descrittore di sicurezza originale.

[out, optional] pAbsoluteSecurityDescriptor

Puntatore a un buffer che la funzione riempie con il corpo principale di un descrittore di sicurezza in formato assoluto. Queste informazioni vengono formattate come struttura SECURITY_DESCRIPTOR .

[in, out] lpdwAbsoluteSecurityDescriptorSize

Puntatore a una variabile che specifica le dimensioni del buffer a cui punta il parametro pAbsoluteSD . Se il buffer non è sufficiente per il descrittore di sicurezza, la funzione ha esito negativo e imposta questa variabile sulla dimensione minima richiesta.

[out, optional] pDacl

Puntatore a un buffer che la funzione riempie con l'elenco di controllo di accesso discrezionale (DACL) del descrittore di sicurezza in formato assoluto. Il corpo principale del descrittore di sicurezza di formato assoluto fa riferimento a questo puntatore.

[in, out] lpdwDaclSize

Puntatore a una variabile che specifica le dimensioni del buffer a cui punta il parametro pDacl . Se il buffer non è abbastanza grande per l'elenco di controllo di accesso (ACL), la funzione ha esito negativo e imposta questa variabile sulla dimensione minima richiesta.

[out, optional] pSacl

Puntatore a un buffer che la funzione riempie con l'elenco di controllo di accesso del sistema (SACL) del descrittore di sicurezza in formato assoluto. Il corpo principale del descrittore di sicurezza di formato assoluto fa riferimento a questo puntatore.

[in, out] lpdwSaclSize

Puntatore a una variabile che specifica le dimensioni del buffer a cui punta il parametro pSacl . Se il buffer non è sufficiente per l'ACL, la funzione ha esito negativo e imposta questa variabile sulla dimensione minima richiesta.

[out, optional] pOwner

Puntatore a un buffer che riempie la funzione con l'identificatore di sicurezza (SID) del proprietario del descrittore di sicurezza in formato assoluto. Il corpo principale del descrittore di sicurezza di formato assoluto fa riferimento a questo puntatore.

[in, out] lpdwOwnerSize

Puntatore a una variabile che specifica le dimensioni del buffer a cui punta il parametro pOwner . Se il buffer non è sufficiente per il SID, la funzione ha esito negativo e imposta questa variabile sulla dimensione minima richiesta.

[out, optional] pPrimaryGroup

Puntatore a un buffer che riempie la funzione con il SID del descrittore di sicurezza assoluto del gruppo primario. Il corpo principale del descrittore di sicurezza di formato assoluto fa riferimento a questo puntatore.

[in, out] lpdwPrimaryGroupSize

Puntatore a una variabile che specifica le dimensioni del buffer a cui punta il parametro pPrimaryGroup . Se il buffer non è sufficiente per il SID, la funzione ha esito negativo e imposta questa variabile sulla dimensione minima richiesta.

Valore restituito

Se la funzione ha esito positivo, la funzione restituisce un valore diverso da zero.

Se la funzione ha esito negativo, restituisce zero. Per informazioni dettagliate sull'errore, chiamare GetLastError. I codici restituiti possibili includono, ma non sono limitati a, i seguenti.

Codice/valore restituito Descrizione
ERROR_INSUFFICIENT_BUFFER
0x7A
Uno o più buffer è troppo piccolo.

Commenti

Un descrittore di sicurezza in formato assoluto contiene puntatori alle informazioni contenute, anziché 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-relativo, una struttura SECURITY_DESCRIPTOR avvia sempre le informazioni, ma gli altri componenti della sicurezza possono seguire la struttura in qualsiasi ordine. Anziché usare gli indirizzi di memoria, i componenti del descrittore di sicurezza self-relative 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.

Un server che copia oggetti protetti in vari supporti può usare la funzione MakeAbsoluteSD per creare un descrittore di sicurezza assoluto da un descrittore di sicurezza self-relativo e la funzione MakeSelfRelativeSD per creare un descrittore di sicurezza self-relativo da un descrittore di sicurezza assoluto.

Requisiti

Requisito Valore
Client minimo supportato Windows XP [app desktop | App UWP]
Server minimo supportato Windows Server 2003 [app desktop | App UWP]
Piattaforma di destinazione Windows
Intestazione securitybaseapi.h (include Windows.h)
Libreria Advapi32.lib
DLL Advapi32.dll

Vedi anche

Controllo di accesso di basso livello

Funzioni di Controllo di accesso di basso livello

MakeSelfRelativeSD

SECURITY_DESCRIPTOR