La struttura ACCESS_ALLOWED_OBJECT_ACE definisce una voce di controllo di accesso (ACE) che controlla l'accesso a un oggetto, a un set di proprietà o a una proprietà. Ace contiene un set di diritti di accesso, un GUID che identifica il tipo di oggetto e un identificatore di sicurezza (SID) che identifica il trustee a cui il sistema concederà l'accesso. Ace contiene anche un GUID e un set di flag che controllano l'ereditarietà dell'ace da oggetti figlio.
ACE_HEADER struttura che specifica le dimensioni e il tipo di ACE. Contiene anche flag che controllano l'ereditarietà dell'ace dagli oggetti figlio. Il membro AceType della struttura ACE_HEADER deve essere impostato su ACCESS_ALLOWED_OBJECT_ACE_TYPE e il membro AceSize deve essere impostato sul numero totale di byte allocati per la struttura ACCESS_ALLOWED_OBJECT_ACE.
Mask
Un ACCESS_MASK che specifica i diritti di accesso consentiti dal sistema al trustee .
Flags
Set di flag di bit che indicano se sono presenti i membri ObjectType e InheritedObjectType. Questo parametro può essere uno o più dei valori seguenti.
Valore
Significato
0
Non sono presenti objectType né InheritedObjectType. Il membro sidStart segue immediatamente dopo il membro flag .
ACE_OBJECT_TYPE_PRESENT
objectType è presente e contiene un GUID .
Se questo valore non viene specificato, il membro InheritedObjectType segue immediatamente dopo il membro flag .
ACE_INHERITED_OBJECT_TYPE_PRESENT
l' InheritedObjectType è presente e contiene un GUID .
Se questo valore non viene specificato, tutti i tipi di oggetti figlio possono ereditare l'ace.
ObjectType
Questo membro esiste solo se il bit di ACE_OBJECT_TYPE_PRESENT è impostato nel membro Flag. In caso contrario, il membro InheritedObjectType segue immediatamente dopo il membro Flags.
Se il membro esiste, si tratta di una struttura GUID che identifica un set di proprietà, una proprietà, un diritto esteso o un tipo di oggetto figlio. Lo scopo di questo GUID dipende dai diritti di accesso specificati nel membro Mask.
Valore
Significato
ADS_RIGHT_DS_CONTROL_ACCESS
Il ObjectTypeGUID identifica un diritto di accesso esteso.
ADS_RIGHT_DS_CREATE_CHILD
L'ObjectType identifica un tipo di oggetto figlio. Ace controlla il diritto del trustee per creare questo tipo di oggetto figlio.
ADS_RIGHT_DS_READ_PROP
L'ObjectTypeGUID identifica un set di proprietà o una proprietà dell'oggetto . L'ace controlla il diritto del trustee di leggere la proprietà o il set di proprietà.
ADS_RIGHT_DS_WRITE_PROP
L'ObjectTypeGUID identifica un set di proprietà o una proprietà dell'oggetto . Ace controlla il diritto del trustee per scrivere la proprietà o il set di proprietà.
ADS_RIGHT_DS_SELF
L'ObjectTypeGUID identifica una scrittura convalidata.
InheritedObjectType
Questo membro esiste solo se il bit ACE_INHERITED_OBJECT_TYPE_PRESENT è impostato nel membro flag .
Se il membro esiste, si tratta di una struttura GUID che identifica il tipo di oggetto figlio che può ereditare l'ace. L'ereditarietà è controllata anche dai flag di ereditarietà nella ACE_HEADER, nonché da qualsiasi protezione dall'ereditarietà applicata agli oggetti figlio.
L'offset di questo membro può variare. Se il membro Flags non contiene il flag ACE_OBJECT_TYPE_PRESENT, il membro InheritedObjectType inizia con l'offset specificato dal membro ObjectType .
SidStart
Specifica il primo DWORD di un SID che identifica il trustee a cui vengono concessi i diritti di accesso. I byte rimanenti del SID vengono archiviati in memoria contigua dopo il membro SidStart. Questo SID può essere aggiunto con i dati dell'applicazione.
L'offset di questo membro può variare. Se il membro flag è zero, il membro SidStart inizia con l'offset specificato dal membro ObjectType . Se Flag contiene un solo flag (ACE_OBJECT_TYPE_PRESENT o ACE_INHERITED_OBJECT_TYPE_PRESENT), il membro SidStart inizia con l'offset specificato dal membro InheritedObjectType .
Osservazioni
Se non viene specificato né ObjectType né GUID EreditatoObjectType, la struttura ACCESS_ALLOWED_OBJECT_ACE ha la stessa semantica usata dalla struttura ACCESS_ALLOWED_ACE. In tal caso, usare la struttura ACCESS_ALLOWED_ACE perché è più piccola ed efficiente.
Un elenco di controllo di accesso contenente un ACCESS_ALLOWED_OBJECT_ACE deve specificare il numero di revisione ACL_REVISION_DS nell'intestazione ACL .
I diritti di accesso specificati dal membro Mask vengono concessi a qualsiasi trustee che possiede un SID abilitato che corrisponde al SID archiviato nel membro SidStart .
Una struttura ACCESS_ALLOWED_OBJECT_ACE può essere creata in un elenco di controllo di accesso (ACL) tramite una chiamata alla funzione AddAccessAllowedObjectAce. Quando viene usata questa funzione, la quantità di memoria corretta necessaria per contenere le strutture GUID nel ObjectType e membri InheritedObjectType, se ne esiste una o entrambe, nonché per contenere il SID del trustee viene allocato automaticamente. Inoltre, i valori dei membri Header.AceType e Header.AceSize vengono impostati automaticamente. Quando viene creata una struttura ACCESS_ALLOWED_OBJECT_ACE all'esterno di un elenco di controllo di accesso, è necessario allocare memoria sufficiente per contenere le strutture GUID nella ObjectType e membri InheritedObjectType, se ne esiste uno o entrambi, nonché per contenere il SID completo del truste nel membro SidStart e la memoria contigua successiva. Inoltre, i valori dei membri Header.AceType e Header.AceSize devono essere impostati in modo esplicito dall'applicazione.