[ADVAPI32]
authorAmine Khaldi <amine.khaldi@reactos.org>
Sat, 25 Oct 2014 12:45:57 +0000 (12:45 +0000)
committerAmine Khaldi <amine.khaldi@reactos.org>
Sat, 25 Oct 2014 12:45:57 +0000 (12:45 +0000)
* Move some functions from trustee.c to security.c.
CORE-8540

svn path=/trunk/; revision=64979

reactos/dll/win32/advapi32/sec/trustee.c
reactos/dll/win32/advapi32/wine/security.c

index 9b62f79..a889cc9 100644 (file)
@@ -32,51 +32,6 @@ BuildImpersonateTrusteeW(PTRUSTEE_W pTrustee,
     pTrustee->MultipleTrusteeOperation = TRUSTEE_IS_IMPERSONATE;
 }
 
-
-/******************************************************************************
- * BuildExplicitAccessWithNameA [ADVAPI32.@]
- */
-VOID WINAPI
-BuildExplicitAccessWithNameA(PEXPLICIT_ACCESSA pExplicitAccess,
-                             LPSTR pTrusteeName,
-                             DWORD AccessPermissions,
-                             ACCESS_MODE AccessMode,
-                             DWORD Inheritance)
-{
-    pExplicitAccess->grfAccessPermissions = AccessPermissions;
-    pExplicitAccess->grfAccessMode = AccessMode;
-    pExplicitAccess->grfInheritance = Inheritance;
-
-    pExplicitAccess->Trustee.pMultipleTrustee = NULL;
-    pExplicitAccess->Trustee.MultipleTrusteeOperation = NO_MULTIPLE_TRUSTEE;
-    pExplicitAccess->Trustee.TrusteeForm = TRUSTEE_IS_NAME;
-    pExplicitAccess->Trustee.TrusteeType = TRUSTEE_IS_UNKNOWN;
-    pExplicitAccess->Trustee.ptstrName = pTrusteeName;
-}
-
-
-/******************************************************************************
- * BuildExplicitAccessWithNameW [ADVAPI32.@]
- */
-VOID WINAPI
-BuildExplicitAccessWithNameW(PEXPLICIT_ACCESSW pExplicitAccess,
-                             LPWSTR pTrusteeName,
-                             DWORD AccessPermissions,
-                             ACCESS_MODE AccessMode,
-                             DWORD Inheritance)
-{
-    pExplicitAccess->grfAccessPermissions = AccessPermissions;
-    pExplicitAccess->grfAccessMode = AccessMode;
-    pExplicitAccess->grfInheritance = Inheritance;
-
-    pExplicitAccess->Trustee.pMultipleTrustee = NULL;
-    pExplicitAccess->Trustee.MultipleTrusteeOperation = NO_MULTIPLE_TRUSTEE;
-    pExplicitAccess->Trustee.TrusteeForm = TRUSTEE_IS_NAME;
-    pExplicitAccess->Trustee.TrusteeType = TRUSTEE_IS_UNKNOWN;
-    pExplicitAccess->Trustee.ptstrName = pTrusteeName;
-}
-
-
 /******************************************************************************
  * BuildImpersonateExplicitAccessWithNameA [ADVAPI32.@]
  */
@@ -122,255 +77,6 @@ BuildImpersonateExplicitAccessWithNameW(PEXPLICIT_ACCESS_W pExplicitAccess,
     pExplicitAccess->Trustee.ptstrName = pTrusteeName;
 }
 
-
-/******************************************************************************
- * BuildTrusteeWithSidA [ADVAPI32.@]
- */
-VOID WINAPI
-BuildTrusteeWithSidA(PTRUSTEE_A pTrustee,
-                     PSID pSid)
-{
-    TRACE("%p %p\n", pTrustee, pSid);
-
-    pTrustee->pMultipleTrustee = NULL;
-    pTrustee->MultipleTrusteeOperation = NO_MULTIPLE_TRUSTEE;
-    pTrustee->TrusteeForm = TRUSTEE_IS_SID;
-    pTrustee->TrusteeType = TRUSTEE_IS_UNKNOWN;
-    pTrustee->ptstrName = (LPSTR) pSid;
-}
-
-
-/******************************************************************************
- * BuildTrusteeWithSidW [ADVAPI32.@]
- */
-VOID WINAPI
-BuildTrusteeWithSidW(PTRUSTEE_W pTrustee,
-                     PSID pSid)
-{
-    TRACE("%p %p\n", pTrustee, pSid);
-
-    pTrustee->pMultipleTrustee = NULL;
-    pTrustee->MultipleTrusteeOperation = NO_MULTIPLE_TRUSTEE;
-    pTrustee->TrusteeForm = TRUSTEE_IS_SID;
-    pTrustee->TrusteeType = TRUSTEE_IS_UNKNOWN;
-    pTrustee->ptstrName = (LPWSTR) pSid;
-}
-
-
-/******************************************************************************
- * BuildTrusteeWithNameA [ADVAPI32.@]
- */
-VOID WINAPI
-BuildTrusteeWithNameA(PTRUSTEE_A pTrustee,
-                      LPSTR name)
-{
-    TRACE("%p %s\n", pTrustee, name);
-
-    pTrustee->pMultipleTrustee = NULL;
-    pTrustee->MultipleTrusteeOperation = NO_MULTIPLE_TRUSTEE;
-    pTrustee->TrusteeForm = TRUSTEE_IS_NAME;
-    pTrustee->TrusteeType = TRUSTEE_IS_UNKNOWN;
-    pTrustee->ptstrName = name;
-}
-
-
-/******************************************************************************
- * BuildTrusteeWithNameW [ADVAPI32.@]
- */
-VOID WINAPI
-BuildTrusteeWithNameW(PTRUSTEE_W pTrustee,
-                      LPWSTR name)
-{
-    TRACE("%p %s\n", pTrustee, name);
-
-    pTrustee->pMultipleTrustee = NULL;
-    pTrustee->MultipleTrusteeOperation = NO_MULTIPLE_TRUSTEE;
-    pTrustee->TrusteeForm = TRUSTEE_IS_NAME;
-    pTrustee->TrusteeType = TRUSTEE_IS_UNKNOWN;
-    pTrustee->ptstrName = name;
-}
-
-
-/******************************************************************************
- * BuildTrusteeWithObjectsAndNameA [ADVAPI32.@]
- */
-VOID WINAPI
-BuildTrusteeWithObjectsAndNameA(PTRUSTEEA pTrustee,
-                                POBJECTS_AND_NAME_A pObjName,
-                                SE_OBJECT_TYPE ObjectType,
-                                LPSTR ObjectTypeName,
-                                LPSTR InheritedObjectTypeName,
-                                LPSTR Name)
-{
-    DWORD ObjectsPresent = 0;
-
-    TRACE("%p %p 0x%08x %p %p %s\n", pTrustee, pObjName,
-           ObjectType, ObjectTypeName, InheritedObjectTypeName, Name);
-
-    /* Fill the OBJECTS_AND_NAME structure */
-    pObjName->ObjectType = ObjectType;
-    if (ObjectTypeName != NULL)
-    {
-        ObjectsPresent |= ACE_OBJECT_TYPE_PRESENT;
-    }
-
-    pObjName->InheritedObjectTypeName = InheritedObjectTypeName;
-    if (InheritedObjectTypeName != NULL)
-    {
-        ObjectsPresent |= ACE_INHERITED_OBJECT_TYPE_PRESENT;
-    }
-
-    pObjName->ObjectsPresent = ObjectsPresent;
-    pObjName->ptstrName = Name;
-
-    /* Fill the TRUSTEE structure */
-    pTrustee->pMultipleTrustee = NULL;
-    pTrustee->MultipleTrusteeOperation = NO_MULTIPLE_TRUSTEE;
-    pTrustee->TrusteeForm = TRUSTEE_IS_OBJECTS_AND_NAME;
-    pTrustee->TrusteeType = TRUSTEE_IS_UNKNOWN;
-    pTrustee->ptstrName = (LPSTR)pObjName;
-}
-
-
-/******************************************************************************
- * BuildTrusteeWithObjectsAndNameW [ADVAPI32.@]
- */
-VOID WINAPI
-BuildTrusteeWithObjectsAndNameW(PTRUSTEEW pTrustee,
-                                POBJECTS_AND_NAME_W pObjName,
-                                SE_OBJECT_TYPE ObjectType,
-                                LPWSTR ObjectTypeName,
-                                LPWSTR InheritedObjectTypeName,
-                                LPWSTR Name)
-{
-    DWORD ObjectsPresent = 0;
-
-    TRACE("%p %p 0x%08x %p %p %s\n", pTrustee, pObjName,
-           ObjectType, ObjectTypeName, InheritedObjectTypeName, Name);
-
-    /* Fill the OBJECTS_AND_NAME structure */
-    pObjName->ObjectType = ObjectType;
-    if (ObjectTypeName != NULL)
-    {
-        ObjectsPresent |= ACE_OBJECT_TYPE_PRESENT;
-    }
-
-    pObjName->InheritedObjectTypeName = InheritedObjectTypeName;
-    if (InheritedObjectTypeName != NULL)
-    {
-        ObjectsPresent |= ACE_INHERITED_OBJECT_TYPE_PRESENT;
-    }
-
-    pObjName->ObjectsPresent = ObjectsPresent;
-    pObjName->ptstrName = Name;
-
-    /* Fill the TRUSTEE structure */
-    pTrustee->pMultipleTrustee = NULL;
-    pTrustee->MultipleTrusteeOperation = NO_MULTIPLE_TRUSTEE;
-    pTrustee->TrusteeForm = TRUSTEE_IS_OBJECTS_AND_NAME;
-    pTrustee->TrusteeType = TRUSTEE_IS_UNKNOWN;
-    pTrustee->ptstrName = (LPWSTR)pObjName;
-}
-
-
-/******************************************************************************
- * BuildTrusteeWithObjectsAndSidA [ADVAPI32.@]
- */
-VOID WINAPI
-BuildTrusteeWithObjectsAndSidA(PTRUSTEEA pTrustee,
-                               POBJECTS_AND_SID pObjSid,
-                               GUID *pObjectGuid,
-                               GUID *pInheritedObjectGuid,
-                               PSID pSid)
-{
-    DWORD ObjectsPresent = 0;
-
-    TRACE("%p %p %p %p %p\n", pTrustee, pObjSid, pObjectGuid, pInheritedObjectGuid, pSid);
-
-    /* Fill the OBJECTS_AND_SID structure */
-    if (pObjectGuid != NULL)
-    {
-        pObjSid->ObjectTypeGuid = *pObjectGuid;
-        ObjectsPresent |= ACE_OBJECT_TYPE_PRESENT;
-    }
-    else
-    {
-        ZeroMemory(&pObjSid->ObjectTypeGuid,
-                   sizeof(GUID));
-    }
-
-    if (pInheritedObjectGuid != NULL)
-    {
-        pObjSid->InheritedObjectTypeGuid = *pInheritedObjectGuid;
-        ObjectsPresent |= ACE_INHERITED_OBJECT_TYPE_PRESENT;
-    }
-    else
-    {
-        ZeroMemory(&pObjSid->InheritedObjectTypeGuid,
-                   sizeof(GUID));
-    }
-
-    pObjSid->ObjectsPresent = ObjectsPresent;
-    pObjSid->pSid = pSid;
-
-    /* Fill the TRUSTEE structure */
-    pTrustee->pMultipleTrustee = NULL;
-    pTrustee->MultipleTrusteeOperation = NO_MULTIPLE_TRUSTEE;
-    pTrustee->TrusteeForm = TRUSTEE_IS_OBJECTS_AND_SID;
-    pTrustee->TrusteeType = TRUSTEE_IS_UNKNOWN;
-    pTrustee->ptstrName = (LPSTR) pObjSid;
-}
-
-
-/******************************************************************************
- * BuildTrusteeWithObjectsAndSidW [ADVAPI32.@]
- */
-VOID WINAPI
-BuildTrusteeWithObjectsAndSidW(PTRUSTEEW pTrustee,
-                               POBJECTS_AND_SID pObjSid,
-                               GUID *pObjectGuid,
-                               GUID *pInheritedObjectGuid,
-                               PSID pSid)
-{
-    DWORD ObjectsPresent = 0;
-
-    TRACE("%p %p %p %p %p\n", pTrustee, pObjSid, pObjectGuid, pInheritedObjectGuid, pSid);
-
-    /* Fill the OBJECTS_AND_SID structure */
-    if (pObjectGuid != NULL)
-    {
-        pObjSid->ObjectTypeGuid = *pObjectGuid;
-        ObjectsPresent |= ACE_OBJECT_TYPE_PRESENT;
-    }
-    else
-    {
-        ZeroMemory(&pObjSid->ObjectTypeGuid,
-                   sizeof(GUID));
-    }
-
-    if (pInheritedObjectGuid != NULL)
-    {
-        pObjSid->InheritedObjectTypeGuid = *pInheritedObjectGuid;
-        ObjectsPresent |= ACE_INHERITED_OBJECT_TYPE_PRESENT;
-    }
-    else
-    {
-        ZeroMemory(&pObjSid->InheritedObjectTypeGuid,
-                   sizeof(GUID));
-    }
-
-    pObjSid->ObjectsPresent = ObjectsPresent;
-    pObjSid->pSid = pSid;
-
-    /* Fill the TRUSTEE structure */
-    pTrustee->pMultipleTrustee = NULL;
-    pTrustee->MultipleTrusteeOperation = NO_MULTIPLE_TRUSTEE;
-    pTrustee->TrusteeForm = TRUSTEE_IS_OBJECTS_AND_SID;
-    pTrustee->TrusteeType = TRUSTEE_IS_UNKNOWN;
-    pTrustee->ptstrName = (LPWSTR) pObjSid;
-}
-
-
 /******************************************************************************
  * GetMultipleTrusteeA [ADVAPI32.@]
  */
@@ -410,64 +116,4 @@ GetMultipleTrusteeOperationW(PTRUSTEE_W pTrustee)
     return pTrustee->MultipleTrusteeOperation;
 }
 
-
-/******************************************************************************
- * GetTrusteeFormW [ADVAPI32.@]
- */
-TRUSTEE_FORM WINAPI
-GetTrusteeFormA(PTRUSTEE_A pTrustee)
-{
-    return pTrustee->TrusteeForm;
-}
-
-
-/******************************************************************************
- * GetTrusteeFormW [ADVAPI32.@]
- */
-TRUSTEE_FORM WINAPI
-GetTrusteeFormW(PTRUSTEE_W pTrustee)
-{
-    return pTrustee->TrusteeForm;
-}
-
-
-/******************************************************************************
- * GetTrusteeNameA [ADVAPI32.@]
- */
-LPSTR WINAPI
-GetTrusteeNameA(PTRUSTEE_A pTrustee)
-{
-    return pTrustee->ptstrName;
-}
-
-
-/******************************************************************************
- * GetTrusteeNameW [ADVAPI32.@]
- */
-LPWSTR WINAPI
-GetTrusteeNameW(PTRUSTEE_W pTrustee)
-{
-    return pTrustee->ptstrName;
-}
-
-
-/******************************************************************************
- * GetTrusteeTypeA [ADVAPI32.@]
- */
-TRUSTEE_TYPE WINAPI
-GetTrusteeTypeA(PTRUSTEE_A pTrustee)
-{
-    return pTrustee->TrusteeType;
-}
-
-
-/******************************************************************************
- * GetTrusteeTypeW [ADVAPI32.@]
- */
-TRUSTEE_TYPE WINAPI
-GetTrusteeTypeW(PTRUSTEE_W pTrustee)
-{
-    return pTrustee->TrusteeType;
-}
-
 /* EOF */
index c3364a9..1b77f36 100644 (file)
@@ -1813,6 +1813,339 @@ GetSecurityInfoExW(HANDLE hObject,
     return ERROR_BAD_PROVIDER;
 }
 
+/******************************************************************************
+ * BuildExplicitAccessWithNameA [ADVAPI32.@]
+ */
+VOID WINAPI
+BuildExplicitAccessWithNameA(PEXPLICIT_ACCESSA pExplicitAccess,
+                             LPSTR pTrusteeName,
+                             DWORD AccessPermissions,
+                             ACCESS_MODE AccessMode,
+                             DWORD Inheritance)
+{
+    pExplicitAccess->grfAccessPermissions = AccessPermissions;
+    pExplicitAccess->grfAccessMode = AccessMode;
+    pExplicitAccess->grfInheritance = Inheritance;
+
+    pExplicitAccess->Trustee.pMultipleTrustee = NULL;
+    pExplicitAccess->Trustee.MultipleTrusteeOperation = NO_MULTIPLE_TRUSTEE;
+    pExplicitAccess->Trustee.TrusteeForm = TRUSTEE_IS_NAME;
+    pExplicitAccess->Trustee.TrusteeType = TRUSTEE_IS_UNKNOWN;
+    pExplicitAccess->Trustee.ptstrName = pTrusteeName;
+}
+
+
+/******************************************************************************
+ * BuildExplicitAccessWithNameW [ADVAPI32.@]
+ */
+VOID WINAPI
+BuildExplicitAccessWithNameW(PEXPLICIT_ACCESSW pExplicitAccess,
+                             LPWSTR pTrusteeName,
+                             DWORD AccessPermissions,
+                             ACCESS_MODE AccessMode,
+                             DWORD Inheritance)
+{
+    pExplicitAccess->grfAccessPermissions = AccessPermissions;
+    pExplicitAccess->grfAccessMode = AccessMode;
+    pExplicitAccess->grfInheritance = Inheritance;
+
+    pExplicitAccess->Trustee.pMultipleTrustee = NULL;
+    pExplicitAccess->Trustee.MultipleTrusteeOperation = NO_MULTIPLE_TRUSTEE;
+    pExplicitAccess->Trustee.TrusteeForm = TRUSTEE_IS_NAME;
+    pExplicitAccess->Trustee.TrusteeType = TRUSTEE_IS_UNKNOWN;
+    pExplicitAccess->Trustee.ptstrName = pTrusteeName;
+}
+
+/******************************************************************************
+ * BuildTrusteeWithObjectsAndNameA [ADVAPI32.@]
+ */
+VOID WINAPI BuildTrusteeWithObjectsAndNameA( PTRUSTEEA pTrustee, POBJECTS_AND_NAME_A pObjName,
+                                             SE_OBJECT_TYPE ObjectType, LPSTR ObjectTypeName,
+                                             LPSTR InheritedObjectTypeName, LPSTR Name )
+{
+    DWORD ObjectsPresent = 0;
+
+    TRACE("%p %p 0x%08x %p %p %s\n", pTrustee, pObjName,
+          ObjectType, ObjectTypeName, InheritedObjectTypeName, debugstr_a(Name));
+
+    /* Fill the OBJECTS_AND_NAME structure */
+    pObjName->ObjectType = ObjectType;
+    if (ObjectTypeName != NULL)
+    {
+        ObjectsPresent |= ACE_OBJECT_TYPE_PRESENT;
+    }
+
+    pObjName->InheritedObjectTypeName = InheritedObjectTypeName;
+    if (InheritedObjectTypeName != NULL)
+    {
+        ObjectsPresent |= ACE_INHERITED_OBJECT_TYPE_PRESENT;
+    }
+
+    pObjName->ObjectsPresent = ObjectsPresent;
+    pObjName->ptstrName = Name;
+
+    /* Fill the TRUSTEE structure */
+    pTrustee->pMultipleTrustee = NULL;
+    pTrustee->MultipleTrusteeOperation = NO_MULTIPLE_TRUSTEE;
+    pTrustee->TrusteeForm = TRUSTEE_IS_OBJECTS_AND_NAME;
+    pTrustee->TrusteeType = TRUSTEE_IS_UNKNOWN;
+    pTrustee->ptstrName = (LPSTR)pObjName;
+}
+
+/******************************************************************************
+ * BuildTrusteeWithObjectsAndNameW [ADVAPI32.@]
+ */
+VOID WINAPI BuildTrusteeWithObjectsAndNameW( PTRUSTEEW pTrustee, POBJECTS_AND_NAME_W pObjName,
+                                             SE_OBJECT_TYPE ObjectType, LPWSTR ObjectTypeName,
+                                             LPWSTR InheritedObjectTypeName, LPWSTR Name )
+{
+    DWORD ObjectsPresent = 0;
+
+    TRACE("%p %p 0x%08x %p %p %s\n", pTrustee, pObjName,
+          ObjectType, ObjectTypeName, InheritedObjectTypeName, debugstr_w(Name));
+
+    /* Fill the OBJECTS_AND_NAME structure */
+    pObjName->ObjectType = ObjectType;
+    if (ObjectTypeName != NULL)
+    {
+        ObjectsPresent |= ACE_OBJECT_TYPE_PRESENT;
+    }
+
+    pObjName->InheritedObjectTypeName = InheritedObjectTypeName;
+    if (InheritedObjectTypeName != NULL)
+    {
+        ObjectsPresent |= ACE_INHERITED_OBJECT_TYPE_PRESENT;
+    }
+
+    pObjName->ObjectsPresent = ObjectsPresent;
+    pObjName->ptstrName = Name;
+
+    /* Fill the TRUSTEE structure */
+    pTrustee->pMultipleTrustee = NULL;
+    pTrustee->MultipleTrusteeOperation = NO_MULTIPLE_TRUSTEE;
+    pTrustee->TrusteeForm = TRUSTEE_IS_OBJECTS_AND_NAME;
+    pTrustee->TrusteeType = TRUSTEE_IS_UNKNOWN;
+    pTrustee->ptstrName = (LPWSTR)pObjName;
+}
+
+/******************************************************************************
+ * BuildTrusteeWithObjectsAndSidA [ADVAPI32.@]
+ */
+VOID WINAPI
+BuildTrusteeWithObjectsAndSidA(PTRUSTEEA pTrustee,
+                               POBJECTS_AND_SID pObjSid,
+                               GUID *pObjectGuid,
+                               GUID *pInheritedObjectGuid,
+                               PSID pSid)
+{
+    DWORD ObjectsPresent = 0;
+
+    TRACE("%p %p %p %p %p\n", pTrustee, pObjSid, pObjectGuid, pInheritedObjectGuid, pSid);
+
+    /* Fill the OBJECTS_AND_SID structure */
+    if (pObjectGuid != NULL)
+    {
+        pObjSid->ObjectTypeGuid = *pObjectGuid;
+        ObjectsPresent |= ACE_OBJECT_TYPE_PRESENT;
+    }
+    else
+    {
+        ZeroMemory(&pObjSid->ObjectTypeGuid,
+                   sizeof(GUID));
+    }
+
+    if (pInheritedObjectGuid != NULL)
+    {
+        pObjSid->InheritedObjectTypeGuid = *pInheritedObjectGuid;
+        ObjectsPresent |= ACE_INHERITED_OBJECT_TYPE_PRESENT;
+    }
+    else
+    {
+        ZeroMemory(&pObjSid->InheritedObjectTypeGuid,
+                   sizeof(GUID));
+    }
+
+    pObjSid->ObjectsPresent = ObjectsPresent;
+    pObjSid->pSid = pSid;
+
+    /* Fill the TRUSTEE structure */
+    pTrustee->pMultipleTrustee = NULL;
+    pTrustee->MultipleTrusteeOperation = NO_MULTIPLE_TRUSTEE;
+    pTrustee->TrusteeForm = TRUSTEE_IS_OBJECTS_AND_SID;
+    pTrustee->TrusteeType = TRUSTEE_IS_UNKNOWN;
+    pTrustee->ptstrName = (LPSTR) pObjSid;
+}
+
+
+/******************************************************************************
+ * BuildTrusteeWithObjectsAndSidW [ADVAPI32.@]
+ */
+VOID WINAPI
+BuildTrusteeWithObjectsAndSidW(PTRUSTEEW pTrustee,
+                               POBJECTS_AND_SID pObjSid,
+                               GUID *pObjectGuid,
+                               GUID *pInheritedObjectGuid,
+                               PSID pSid)
+{
+    DWORD ObjectsPresent = 0;
+
+    TRACE("%p %p %p %p %p\n", pTrustee, pObjSid, pObjectGuid, pInheritedObjectGuid, pSid);
+
+    /* Fill the OBJECTS_AND_SID structure */
+    if (pObjectGuid != NULL)
+    {
+        pObjSid->ObjectTypeGuid = *pObjectGuid;
+        ObjectsPresent |= ACE_OBJECT_TYPE_PRESENT;
+    }
+    else
+    {
+        ZeroMemory(&pObjSid->ObjectTypeGuid,
+                   sizeof(GUID));
+    }
+
+    if (pInheritedObjectGuid != NULL)
+    {
+        pObjSid->InheritedObjectTypeGuid = *pInheritedObjectGuid;
+        ObjectsPresent |= ACE_INHERITED_OBJECT_TYPE_PRESENT;
+    }
+    else
+    {
+        ZeroMemory(&pObjSid->InheritedObjectTypeGuid,
+                   sizeof(GUID));
+    }
+
+    pObjSid->ObjectsPresent = ObjectsPresent;
+    pObjSid->pSid = pSid;
+
+    /* Fill the TRUSTEE structure */
+    pTrustee->pMultipleTrustee = NULL;
+    pTrustee->MultipleTrusteeOperation = NO_MULTIPLE_TRUSTEE;
+    pTrustee->TrusteeForm = TRUSTEE_IS_OBJECTS_AND_SID;
+    pTrustee->TrusteeType = TRUSTEE_IS_UNKNOWN;
+    pTrustee->ptstrName = (LPWSTR) pObjSid;
+}
+
+/******************************************************************************
+ * BuildTrusteeWithSidA [ADVAPI32.@]
+ */
+VOID WINAPI
+BuildTrusteeWithSidA(PTRUSTEE_A pTrustee,
+                     PSID pSid)
+{
+    TRACE("%p %p\n", pTrustee, pSid);
+
+    pTrustee->pMultipleTrustee = NULL;
+    pTrustee->MultipleTrusteeOperation = NO_MULTIPLE_TRUSTEE;
+    pTrustee->TrusteeForm = TRUSTEE_IS_SID;
+    pTrustee->TrusteeType = TRUSTEE_IS_UNKNOWN;
+    pTrustee->ptstrName = (LPSTR) pSid;
+}
+
+
+/******************************************************************************
+ * BuildTrusteeWithSidW [ADVAPI32.@]
+ */
+VOID WINAPI
+BuildTrusteeWithSidW(PTRUSTEE_W pTrustee,
+                     PSID pSid)
+{
+    TRACE("%p %p\n", pTrustee, pSid);
+
+    pTrustee->pMultipleTrustee = NULL;
+    pTrustee->MultipleTrusteeOperation = NO_MULTIPLE_TRUSTEE;
+    pTrustee->TrusteeForm = TRUSTEE_IS_SID;
+    pTrustee->TrusteeType = TRUSTEE_IS_UNKNOWN;
+    pTrustee->ptstrName = (LPWSTR) pSid;
+}
+
+/******************************************************************************
+ * BuildTrusteeWithNameA [ADVAPI32.@]
+ */
+VOID WINAPI
+BuildTrusteeWithNameA(PTRUSTEE_A pTrustee,
+                      LPSTR name)
+{
+    TRACE("%p %s\n", pTrustee, name);
+
+    pTrustee->pMultipleTrustee = NULL;
+    pTrustee->MultipleTrusteeOperation = NO_MULTIPLE_TRUSTEE;
+    pTrustee->TrusteeForm = TRUSTEE_IS_NAME;
+    pTrustee->TrusteeType = TRUSTEE_IS_UNKNOWN;
+    pTrustee->ptstrName = name;
+}
+
+/******************************************************************************
+ * BuildTrusteeWithNameW [ADVAPI32.@]
+ */
+VOID WINAPI
+BuildTrusteeWithNameW(PTRUSTEE_W pTrustee,
+                      LPWSTR name)
+{
+    TRACE("%p %s\n", pTrustee, name);
+
+    pTrustee->pMultipleTrustee = NULL;
+    pTrustee->MultipleTrusteeOperation = NO_MULTIPLE_TRUSTEE;
+    pTrustee->TrusteeForm = TRUSTEE_IS_NAME;
+    pTrustee->TrusteeType = TRUSTEE_IS_UNKNOWN;
+    pTrustee->ptstrName = name;
+}
+
+/******************************************************************************
+ * GetTrusteeFormW [ADVAPI32.@]
+ */
+TRUSTEE_FORM WINAPI
+GetTrusteeFormA(PTRUSTEE_A pTrustee)
+{
+    return pTrustee->TrusteeForm;
+}
+
+
+/******************************************************************************
+ * GetTrusteeFormW [ADVAPI32.@]
+ */
+TRUSTEE_FORM WINAPI
+GetTrusteeFormW(PTRUSTEE_W pTrustee)
+{
+    return pTrustee->TrusteeForm;
+}
+
+/******************************************************************************
+ * GetTrusteeNameA [ADVAPI32.@]
+ */
+LPSTR WINAPI
+GetTrusteeNameA(PTRUSTEE_A pTrustee)
+{
+    return pTrustee->ptstrName;
+}
+
+
+/******************************************************************************
+ * GetTrusteeNameW [ADVAPI32.@]
+ */
+LPWSTR WINAPI
+GetTrusteeNameW(PTRUSTEE_W pTrustee)
+{
+    return pTrustee->ptstrName;
+}
+
+/******************************************************************************
+ * GetTrusteeTypeA [ADVAPI32.@]
+ */
+TRUSTEE_TYPE WINAPI
+GetTrusteeTypeA(PTRUSTEE_A pTrustee)
+{
+    return pTrustee->TrusteeType;
+}
+
+/******************************************************************************
+ * GetTrusteeTypeW [ADVAPI32.@]
+ */
+TRUSTEE_TYPE WINAPI
+GetTrusteeTypeW(PTRUSTEE_W pTrustee)
+{
+    return pTrustee->TrusteeType;
+}
+
 /*
  * @implemented
  */