絶対セキュリティ記述子とSelf-Relative セキュリティ記述子
セキュリティ記述子は、絶対形式または自己相対形式のいずれかです。 絶対形式では、セキュリティ記述子には、情報自体ではなく、その情報へのポインターが含まれています。 自己相対形式では、セキュリティ記述子は 、SECURITY_DESCRIPTOR 構造と関連するセキュリティ情報を連続するメモリ ブロックに格納します。 セキュリティ記述子が自己相対か絶対かを判断するには、 GetSecurityDescriptorControl 関数を呼び出し、 SECURITY_DESCRIPTOR_CONTROL パラメーターのSE_SELF_RELATIVE フラグを確認します。 MakeSelfRelativeSD 関数と MakeAbsoluteSD 関数を使用して、これら 2 つの形式を変換できます。
絶対形式は、セキュリティ記述子を構築し、すべてのコンポーネントへのポインターを持つ場合に便利です。たとえば、所有者、グループ、随意 ACL の既定の設定が使用可能な場合などです。 この場合は、 InitializeSecurityDescriptor 関数を呼び出して SECURITY_DESCRIPTOR 構造体を初期化し、 SetSecurityDescriptorDacl などの関数を呼び出して、ACL ポインターと SID ポインターをセキュリティ記述子に割り当てることができます。
自己相対形式では、セキュリティ記述子は常に SECURITY_DESCRIPTOR 構造で始まりますが、セキュリティ記述子の他のコンポーネントは任意の順序で構造体に従うことができます。 メモリ アドレスを使用する代わりに、セキュリティ記述子のコンポーネントは記述子の先頭からのオフセットによって識別されます。 この形式は、セキュリティ記述子をディスクに格納する必要がある場合、通信プロトコルによって送信する場合、またはメモリにコピーする必要がある場合に便利です。
MakeAbsoluteSD を除き、セキュリティ記述子を返すすべての関数は、自己相対形式を使用して行います。 関数に引数として渡されるセキュリティ記述子は、自己相対形式または絶対形式のいずれかです。 詳細については、関数のドキュメントを参照してください。