|  | /* | 
|  | * Copyright (C) 2002 Alexandre Julliard | 
|  | * | 
|  | * This library is free software; you can redistribute it and/or | 
|  | * modify it under the terms of the GNU Lesser General Public | 
|  | * License as published by the Free Software Foundation; either | 
|  | * version 2.1 of the License, or (at your option) any later version. | 
|  | * | 
|  | * This library is distributed in the hope that it will be useful, | 
|  | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
|  | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | 
|  | * Lesser General Public License for more details. | 
|  | * | 
|  | * You should have received a copy of the GNU Lesser General Public | 
|  | * License along with this library; if not, write to the Free Software | 
|  | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA | 
|  | */ | 
|  |  | 
|  | #ifndef __WINE_ACCCTRL_H | 
|  | #define __WINE_ACCCTRL_H | 
|  |  | 
|  | #include <wtypes.h> | 
|  |  | 
|  | #ifdef __cplusplus | 
|  | extern "C" { | 
|  | #endif | 
|  |  | 
|  | typedef enum _SE_OBJECT_TYPE | 
|  | { | 
|  | SE_UNKNOWN_OBJECT_TYPE = 0, | 
|  | SE_FILE_OBJECT, | 
|  | SE_SERVICE, | 
|  | SE_PRINTER, | 
|  | SE_REGISTRY_KEY, | 
|  | SE_LMSHARE, | 
|  | SE_KERNEL_OBJECT, | 
|  | SE_WINDOW_OBJECT, | 
|  | SE_DS_OBJECT, | 
|  | SE_DS_OBJECT_ALL, | 
|  | SE_PROVIDER_DEFINED_OBJECT, | 
|  | SE_WMIGUID_OBJECT, | 
|  | SE_REGISTRY_WOW64_32KEY | 
|  | } SE_OBJECT_TYPE; | 
|  |  | 
|  | typedef enum _TRUSTEE_TYPE | 
|  | { | 
|  | TRUSTEE_IS_UNKNOWN, | 
|  | TRUSTEE_IS_USER, | 
|  | TRUSTEE_IS_GROUP, | 
|  | TRUSTEE_IS_DOMAIN, | 
|  | TRUSTEE_IS_ALIAS, | 
|  | TRUSTEE_IS_WELL_KNOWN_GROUP, | 
|  | TRUSTEE_IS_DELETED, | 
|  | TRUSTEE_IS_INVALID, | 
|  | TRUSTEE_IS_COMPUTER | 
|  | } TRUSTEE_TYPE; | 
|  |  | 
|  | typedef enum _TRUSTEE_FORM | 
|  | { | 
|  | TRUSTEE_IS_SID, | 
|  | TRUSTEE_IS_NAME, | 
|  | TRUSTEE_BAD_FORM, | 
|  | TRUSTEE_IS_OBJECTS_AND_SID, | 
|  | TRUSTEE_IS_OBJECTS_AND_NAME | 
|  | } TRUSTEE_FORM; | 
|  |  | 
|  | typedef enum _MULTIPLE_TRUSTEE_OPERATION | 
|  | { | 
|  | NO_MULTIPLE_TRUSTEE, | 
|  | TRUSTEE_IS_IMPERSONATE, | 
|  | } MULTIPLE_TRUSTEE_OPERATION; | 
|  |  | 
|  | typedef struct  _OBJECTS_AND_SID | 
|  | { | 
|  | DWORD   ObjectsPresent; | 
|  | GUID    ObjectTypeGuid; | 
|  | GUID    InheritedObjectTypeGuid; | 
|  | SID    *pSid; | 
|  | } OBJECTS_AND_SID, *POBJECTS_AND_SID; | 
|  |  | 
|  | typedef struct  _OBJECTS_AND_NAME_A | 
|  | { | 
|  | DWORD          ObjectsPresent; | 
|  | SE_OBJECT_TYPE ObjectType; | 
|  | LPSTR          ObjectTypeName; | 
|  | LPSTR          InheritedObjectTypeName; | 
|  | LPSTR          ptstrName; | 
|  | } OBJECTS_AND_NAME_A, *POBJECTS_AND_NAME_A; | 
|  |  | 
|  | typedef struct  _OBJECTS_AND_NAME_W | 
|  | { | 
|  | DWORD          ObjectsPresent; | 
|  | SE_OBJECT_TYPE ObjectType; | 
|  | LPWSTR         ObjectTypeName; | 
|  | LPWSTR         InheritedObjectTypeName; | 
|  | LPWSTR         ptstrName; | 
|  | } OBJECTS_AND_NAME_W, *POBJECTS_AND_NAME_W; | 
|  |  | 
|  | DECL_WINELIB_TYPE_AW(OBJECTS_AND_NAME_) | 
|  | DECL_WINELIB_TYPE_AW(POBJECTS_AND_NAME_) | 
|  |  | 
|  | typedef struct _TRUSTEE_A | 
|  | { | 
|  | struct _TRUSTEE_A          *pMultipleTrustee; | 
|  | MULTIPLE_TRUSTEE_OPERATION  MultipleTrusteeOperation; | 
|  | TRUSTEE_FORM                TrusteeForm; | 
|  | TRUSTEE_TYPE                TrusteeType; | 
|  | LPSTR                       ptstrName; | 
|  | } TRUSTEE_A, *PTRUSTEE_A, TRUSTEEA, *PTRUSTEEA; | 
|  |  | 
|  | typedef struct _TRUSTEE_W | 
|  | { | 
|  | struct _TRUSTEE_W          *pMultipleTrustee; | 
|  | MULTIPLE_TRUSTEE_OPERATION  MultipleTrusteeOperation; | 
|  | TRUSTEE_FORM                TrusteeForm; | 
|  | TRUSTEE_TYPE                TrusteeType; | 
|  | LPWSTR                      ptstrName; | 
|  | } TRUSTEE_W, *PTRUSTEE_W, TRUSTEEW, *PTRUSTEEW; | 
|  |  | 
|  | DECL_WINELIB_TYPE_AW(TRUSTEE_) | 
|  | DECL_WINELIB_TYPE_AW(PTRUSTEE_) | 
|  | DECL_WINELIB_TYPE_AW(TRUSTEE) | 
|  | DECL_WINELIB_TYPE_AW(PTRUSTEE) | 
|  |  | 
|  | typedef enum _ACCESS_MODE | 
|  | { | 
|  | NOT_USED_ACCESS = 0, | 
|  | GRANT_ACCESS, | 
|  | SET_ACCESS, | 
|  | DENY_ACCESS, | 
|  | REVOKE_ACCESS, | 
|  | SET_AUDIT_SUCCESS, | 
|  | SET_AUDIT_FAILURE | 
|  | } ACCESS_MODE; | 
|  |  | 
|  | #define NO_INHERITANCE                      0x0 | 
|  | #define SUB_OBJECTS_ONLY_INHERIT            0x1 | 
|  | #define SUB_CONTAINERS_ONLY_INHERIT         0x2 | 
|  | #define SUB_CONTAINERS_AND_OBJECTS_INHERIT  0x3 | 
|  | #define INHERIT_NO_PROPAGATE                0x4 | 
|  | #define INHERIT_ONLY                        0x8 | 
|  | #define INHERITED_ACCESS_ENTRY              0x10 | 
|  | #define INHERITED_PARENT                    0x10000000 | 
|  | #define INHERITED_GRANDPARENT               0x20000000 | 
|  |  | 
|  | typedef struct _EXPLICIT_ACCESS_A | 
|  | { | 
|  | DWORD        grfAccessPermissions; | 
|  | ACCESS_MODE  grfAccessMode; | 
|  | DWORD        grfInheritance; | 
|  | TRUSTEE_A    Trustee; | 
|  | } EXPLICIT_ACCESS_A, *PEXPLICIT_ACCESS_A, EXPLICIT_ACCESSA, *PEXPLICIT_ACCESSA; | 
|  |  | 
|  | typedef struct _EXPLICIT_ACCESS_W | 
|  | { | 
|  | DWORD        grfAccessPermissions; | 
|  | ACCESS_MODE  grfAccessMode; | 
|  | DWORD        grfInheritance; | 
|  | TRUSTEE_W    Trustee; | 
|  | } EXPLICIT_ACCESS_W, *PEXPLICIT_ACCESS_W, EXPLICIT_ACCESSW, *PEXPLICIT_ACCESSW; | 
|  |  | 
|  | DECL_WINELIB_TYPE_AW(EXPLICIT_ACCESS_) | 
|  | DECL_WINELIB_TYPE_AW(PEXPLICIT_ACCESS_) | 
|  | DECL_WINELIB_TYPE_AW(EXPLICIT_ACCESS) | 
|  | DECL_WINELIB_TYPE_AW(PEXPLICIT_ACCESS) | 
|  |  | 
|  | typedef ULONG ACCESS_RIGHTS, *PACCESS_RIGHTS; | 
|  | typedef ULONG INHERIT_FLAGS, *PINHERIT_FLAGS; | 
|  |  | 
|  | typedef struct _ACTRL_ACCESS_ENTRYA | 
|  | { | 
|  | TRUSTEE_A     Trustee; | 
|  | ULONG         fAccessFlags; | 
|  | ACCESS_RIGHTS Access; | 
|  | ACCESS_RIGHTS ProvSpecificAccess; | 
|  | INHERIT_FLAGS Inheritance; | 
|  | LPSTR         lpInheritProperty; | 
|  | } ACTRL_ACCESS_ENTRYA, *PACTRL_ACCESS_ENTRYA; | 
|  |  | 
|  | typedef struct _ACTRL_ACCESS_ENTRYW | 
|  | { | 
|  | TRUSTEE_W     Trustee; | 
|  | ULONG         fAccessFlags; | 
|  | ACCESS_RIGHTS Access; | 
|  | ACCESS_RIGHTS ProvSpecificAccess; | 
|  | INHERIT_FLAGS Inheritance; | 
|  | LPWSTR        lpInheritProperty; | 
|  | } ACTRL_ACCESS_ENTRYW, *PACTRL_ACCESS_ENTRYW; | 
|  |  | 
|  | DECL_WINELIB_TYPE_AW(ACTRL_ACCESS_ENTRY) | 
|  | DECL_WINELIB_TYPE_AW(PACTRL_ACCESS_ENTRY) | 
|  |  | 
|  |  | 
|  | typedef struct _ACTRL_ACCESS_ENTRY_LISTA | 
|  | { | 
|  | ULONG                cEntries; | 
|  | ACTRL_ACCESS_ENTRYA *pAccessList; | 
|  | } ACTRL_ACCESS_ENTRY_LISTA, *PACTRL_ACCESS_ENTRY_LISTA; | 
|  |  | 
|  | typedef struct _ACTRL_ACCESS_ENTRY_LISTW | 
|  | { | 
|  | ULONG                cEntries; | 
|  | ACTRL_ACCESS_ENTRYW *pAccessList; | 
|  | } ACTRL_ACCESS_ENTRY_LISTW, *PACTRL_ACCESS_ENTRY_LISTW; | 
|  |  | 
|  | DECL_WINELIB_TYPE_AW(ACTRL_ACCESS_ENTRY_LIST) | 
|  | DECL_WINELIB_TYPE_AW(PACTRL_ACCESS_ENTRY_LIST) | 
|  |  | 
|  | typedef struct _ACTRL_PROPERTY_ENTRYA | 
|  | { | 
|  | LPSTR                     lpProperty; | 
|  | PACTRL_ACCESS_ENTRY_LISTA pAccessEntryList; | 
|  | ULONG                     fListFlags; | 
|  | } ACTRL_PROPERTY_ENTRYA, *PACTRL_PROPERTY_ENTRYA; | 
|  |  | 
|  | typedef struct _ACTRL_PROPERTY_ENTRYW | 
|  | { | 
|  | LPWSTR                    lpProperty; | 
|  | PACTRL_ACCESS_ENTRY_LISTW pAccessEntryList; | 
|  | ULONG                     fListFlags; | 
|  | } ACTRL_PROPERTY_ENTRYW, *PACTRL_PROPERTY_ENTRYW; | 
|  |  | 
|  | DECL_WINELIB_TYPE_AW(ACTRL_PROPERTY_ENTRY) | 
|  | DECL_WINELIB_TYPE_AW(PACTRL_PROPERTY_ENTRY) | 
|  |  | 
|  | typedef struct _ACTRL_ALISTA | 
|  | { | 
|  | ULONG                  cEntries; | 
|  | PACTRL_PROPERTY_ENTRYA pPropertyAccessList; | 
|  | } ACTRL_ACCESSA, *PACTRL_ACCESSA, ACTRL_AUDITA, *PACTRL_AUDITA; | 
|  |  | 
|  | typedef struct _ACTRL_ALISTW | 
|  | { | 
|  | ULONG                  cEntries; | 
|  | PACTRL_PROPERTY_ENTRYW pPropertyAccessList; | 
|  | } ACTRL_ACCESSW, *PACTRL_ACCESSW, ACTRL_AUDITW, *PACTRL_AUDITW; | 
|  |  | 
|  | DECL_WINELIB_TYPE_AW(ACTRL_ACCESS) | 
|  | DECL_WINELIB_TYPE_AW(PACTRL_ACCESS) | 
|  | DECL_WINELIB_TYPE_AW(ACTRL_AUDIT) | 
|  | DECL_WINELIB_TYPE_AW(PACTRL_AUDIT) | 
|  |  | 
|  | #define TRUSTEE_ACCESS_ALLOWED      0x00000001 | 
|  | #define TRUSTEE_ACCESS_READ         0x00000002 | 
|  | #define TRUSTEE_ACCESS_WRITE        0x00000004 | 
|  |  | 
|  | #define TRUSTEE_ACCESS_EXPLICIT     0x00000001 | 
|  | #define TRUSTEE_ACCESS_READ_WRITE   (TRUSTEE_ACCESS_READ|TRUSTEE_ACCESS_WRITE) | 
|  | #define TRUSTEE_ACCESS_ALL          0xFFFFFFFF | 
|  |  | 
|  | typedef struct _TRUSTEE_ACCESSA | 
|  | { | 
|  | LPSTR         lpProperty; | 
|  | ACCESS_RIGHTS Access; | 
|  | ULONG         fAccessFlags; | 
|  | ULONG         fReturnedAccess; | 
|  | } TRUSTEE_ACCESSA, *PTRUSTEE_ACCESSA; | 
|  |  | 
|  | typedef struct _TRUSTEE_ACCESSW | 
|  | { | 
|  | LPWSTR        lpProperty; | 
|  | ACCESS_RIGHTS Access; | 
|  | ULONG         fAccessFlags; | 
|  | ULONG         fReturnedAccess; | 
|  | } TRUSTEE_ACCESSW, *PTRUSTEE_ACCESSW; | 
|  |  | 
|  | DECL_WINELIB_TYPE_AW(TRUSTEE_ACCESS) | 
|  | DECL_WINELIB_TYPE_AW(PTRUSTEE_ACCESS) | 
|  |  | 
|  | #define ACTRL_RESERVED              0x00000000 | 
|  | #define ACTRL_PERM_1                0x00000001 | 
|  | #define ACTRL_PERM_2                0x00000002 | 
|  | #define ACTRL_PERM_3                0x00000004 | 
|  | #define ACTRL_PERM_4                0x00000008 | 
|  | #define ACTRL_PERM_5                0x00000010 | 
|  | #define ACTRL_PERM_6                0x00000020 | 
|  | #define ACTRL_PERM_7                0x00000040 | 
|  | #define ACTRL_PERM_8                0x00000080 | 
|  | #define ACTRL_PERM_9                0x00000100 | 
|  | #define ACTRL_PERM_10               0x00000200 | 
|  | #define ACTRL_PERM_11               0x00000400 | 
|  | #define ACTRL_PERM_12               0x00000800 | 
|  | #define ACTRL_PERM_13               0x00001000 | 
|  | #define ACTRL_PERM_14               0x00002000 | 
|  | #define ACTRL_PERM_15               0x00004000 | 
|  | #define ACTRL_PERM_16               0x00008000 | 
|  | #define ACTRL_PERM_17               0x00010000 | 
|  | #define ACTRL_PERM_18               0x00020000 | 
|  | #define ACTRL_PERM_19               0x00040000 | 
|  | #define ACTRL_PERM_20               0x00080000 | 
|  |  | 
|  | #define ACTRL_ACCESS_ALLOWED        0x00000001 | 
|  | #define ACTRL_ACCESS_DENIED         0x00000002 | 
|  | #define ACTRL_AUDIT_SUCCESS         0x00000004 | 
|  | #define ACTRL_AUDIT_FAILURE         0x00000008 | 
|  |  | 
|  | #define ACTRL_ACCESS_PROTECTED      0x00000001 | 
|  |  | 
|  | #define ACTRL_SYSTEM_ACCESS         0x04000000 | 
|  | #define ACTRL_DELETE                0x08000000 | 
|  | #define ACTRL_READ_CONTROL          0x10000000 | 
|  | #define ACTRL_CHANGE_ACCESS         0x20000000 | 
|  | #define ACTRL_CHANGE_OWNER          0x40000000 | 
|  | #define ACTRL_SYNCHRONIZE           0x80000000 | 
|  | #define ACTRL_STD_RIGHTS_ALL        0xf8000000 | 
|  | #define ACTRL_STD_RIGHT_REQUIRED    (ACTRL_STD_RIGHTS_ALL & ~ACTRL_SYNCHRONIZE) | 
|  |  | 
|  | #define ACTRL_DS_OPEN               ACTRL_RESERVED | 
|  | #define ACTRL_DS_CREATE_CHILD       ACTRL_PERM_1 | 
|  | #define ACTRL_DS_DELETE_CHILD       ACTRL_PERM_2 | 
|  | #define ACTRL_DS_LIST               ACTRL_PERM_3 | 
|  | #define ACTRL_DS_SELF               ACTRL_PERM_4 | 
|  | #define ACTRL_DS_READ_PROP          ACTRL_PERM_5 | 
|  | #define ACTRL_DS_WRITE_PROP         ACTRL_PERM_6 | 
|  | #define ACTRL_DS_DELETE_TREE        ACTRL_PERM_7 | 
|  | #define ACTRL_DS_LIST_OBJECT        ACTRL_PERM_8 | 
|  | #define ACTRL_DS_CONTROL_ACCESS     ACTRL_PERM_9 | 
|  |  | 
|  | #define ACTRL_FILE_READ             ACTRL_PERM_1 | 
|  | #define ACTRL_FILE_WRITE            ACTRL_PERM_2 | 
|  | #define ACTRL_FILE_APPEND           ACTRL_PERM_3 | 
|  | #define ACTRL_FILE_READ_PROP        ACTRL_PERM_4 | 
|  | #define ACTRL_FILE_WRITE_PROP       ACTRL_PERM_5 | 
|  | #define ACTRL_FILE_EXECUTE          ACTRL_PERM_6 | 
|  | #define ACTRL_FILE_READ_ATTRIB      ACTRL_PERM_8 | 
|  | #define ACTRL_FILE_WRITE_ATTRIB     ACTRL_PERM_9 | 
|  | #define ACTRL_FILE_CREATE_PIPE      ACTRL_PERM_10 | 
|  | #define ACTRL_DIR_LIST              ACTRL_PERM_1 | 
|  | #define ACTRL_DIR_CREATE_OBJECT     ACTRL_PERM_2 | 
|  | #define ACTRL_DIR_CREATE_CHILD      ACTRL_PERM_3 | 
|  | #define ACTRL_DIR_DELETE_CHILD      ACTRL_PERM_7 | 
|  | #define ACTRL_DIR_TRAVERSE          ACTRL_PERM_6 | 
|  | #define ACTRL_KERNEL_TERMINATE      ACTRL_PERM_1 | 
|  | #define ACTRL_KERNEL_THREAD         ACTRL_PERM_2 | 
|  | #define ACTRL_KERNEL_VM             ACTRL_PERM_3 | 
|  | #define ACTRL_KERNEL_VM_READ        ACTRL_PERM_4 | 
|  | #define ACTRL_KERNEL_VM_WRITE       ACTRL_PERM_5 | 
|  | #define ACTRL_KERNEL_DUP_HANDLE     ACTRL_PERM_6 | 
|  | #define ACTRL_KERNEL_PROCESS        ACTRL_PERM_7 | 
|  | #define ACTRL_KERNEL_SET_INFO       ACTRL_PERM_8 | 
|  | #define ACTRL_KERNEL_GET_INFO       ACTRL_PERM_9 | 
|  | #define ACTRL_KERNEL_CONTROL        ACTRL_PERM_10 | 
|  | #define ACTRL_KERNEL_ALERT          ACTRL_PERM_11 | 
|  | #define ACTRL_KERNEL_GET_CONTEXT    ACTRL_PERM_12 | 
|  | #define ACTRL_KERNEL_SET_CONTEXT    ACTRL_PERM_13 | 
|  | #define ACTRL_KERNEL_TOKEN          ACTRL_PERM_14 | 
|  | #define ACTRL_KERNEL_IMPERSONATE    ACTRL_PERM_15 | 
|  | #define ACTRL_KERNEL_DIMPERSONATE   ACTRL_PERM_16 | 
|  | #define ACTRL_PRINT_SADMIN          ACTRL_PERM_1 | 
|  | #define ACTRL_PRINT_SLIST           ACTRL_PERM_2 | 
|  | #define ACTRL_PRINT_PADMIN          ACTRL_PERM_3 | 
|  | #define ACTRL_PRINT_PUSE            ACTRL_PERM_4 | 
|  | #define ACTRL_PRINT_JADMIN          ACTRL_PERM_5 | 
|  | #define ACTRL_SVC_GET_INFO          ACTRL_PERM_1 | 
|  | #define ACTRL_SVC_SET_INFO          ACTRL_PERM_2 | 
|  | #define ACTRL_SVC_STATUS            ACTRL_PERM_3 | 
|  | #define ACTRL_SVC_LIST              ACTRL_PERM_4 | 
|  | #define ACTRL_SVC_START             ACTRL_PERM_5 | 
|  | #define ACTRL_SVC_STOP              ACTRL_PERM_6 | 
|  | #define ACTRL_SVC_PAUSE             ACTRL_PERM_7 | 
|  | #define ACTRL_SVC_INTERROGATE       ACTRL_PERM_8 | 
|  | #define ACTRL_SVC_UCONTROL          ACTRL_PERM_9 | 
|  | #define ACTRL_REG_QUERY             ACTRL_PERM_1 | 
|  | #define ACTRL_REG_SET               ACTRL_PERM_2 | 
|  | #define ACTRL_REG_CREATE_CHILD      ACTRL_PERM_3 | 
|  | #define ACTRL_REG_LIST              ACTRL_PERM_4 | 
|  | #define ACTRL_REG_NOTIFY            ACTRL_PERM_5 | 
|  | #define ACTRL_REG_LINK              ACTRL_PERM_6 | 
|  | #define ACTRL_WIN_CLIPBRD           ACTRL_PERM_1 | 
|  | #define ACTRL_WIN_GLOBAL_ATOMS      ACTRL_PERM_2 | 
|  | #define ACTRL_WIN_CREATE            ACTRL_PERM_3 | 
|  | #define ACTRL_WIN_LIST_DESK         ACTRL_PERM_4 | 
|  | #define ACTRL_WIN_LIST              ACTRL_PERM_5 | 
|  | #define ACTRL_WIN_READ_ATTRIBS      ACTRL_PERM_6 | 
|  | #define ACTRL_WIN_WRITE_ATTRIBS     ACTRL_PERM_7 | 
|  | #define ACTRL_WIN_SCREEN            ACTRL_PERM_8 | 
|  | #define ACTRL_WIN_EXIT              ACTRL_PERM_9 | 
|  |  | 
|  | #define ACTRL_ACCESS_NO_OPTIONS                 0x00000000 | 
|  | #define ACTRL_ACCESS_SUPPORTS_OBJECT_ENTRIES    0x00000001 | 
|  |  | 
|  | typedef struct _ACTRL_OVERLAPPED | 
|  | { | 
|  | union { | 
|  | PVOID Provider; | 
|  | ULONG Reserved1; | 
|  | } DUMMYUNIONNAME; | 
|  | ULONG  Reserved2; | 
|  | HANDLE hEvent; | 
|  | } ACTRL_OVERLAPPED, *PACTRL_OVERLAPPED; | 
|  |  | 
|  | typedef struct _ACTRL_ACCESS_INFOA | 
|  | { | 
|  | ULONG  fAccessPermission; | 
|  | LPSTR  lpAccessPermissionName; | 
|  | } ACTRL_ACCESS_INFOA, *PACTRL_ACCESS_INFOA; | 
|  |  | 
|  | typedef struct _ACTRL_ACCESS_INFOW | 
|  | { | 
|  | ULONG  fAccessPermission; | 
|  | LPWSTR lpAccessPermissionName; | 
|  | } ACTRL_ACCESS_INFOW, *PACTRL_ACCESS_INFOW; | 
|  |  | 
|  | DECL_WINELIB_TYPE_AW(ACTRL_ACCESS_INFO) | 
|  | DECL_WINELIB_TYPE_AW(PACTRL_ACCESS_INFO) | 
|  |  | 
|  | typedef struct _ACTRL_CONTROL_INFOA | 
|  | { | 
|  | LPSTR  lpControlId; | 
|  | LPSTR  lpControlName; | 
|  | } ACTRL_CONTROL_INFOA, *PACTRL_CONTROL_INFOA; | 
|  |  | 
|  | typedef struct _ACTRL_CONTROL_INFOW | 
|  | { | 
|  | LPWSTR lpControlId; | 
|  | LPWSTR lpControlName; | 
|  | } ACTRL_CONTROL_INFOW, *PACTRL_CONTROL_INFOW; | 
|  |  | 
|  | DECL_WINELIB_TYPE_AW(ACTRL_CONTROL_INFO) | 
|  | DECL_WINELIB_TYPE_AW(PACTRL_CONTROL_INFO) | 
|  |  | 
|  | typedef enum _PROGRESS_INVOKE_SETTING { | 
|  | ProgressInvokeNever = 1, | 
|  | ProgressInvokeEveryObject, | 
|  | ProgressInvokeOnError, | 
|  | ProgressCancelOperation, | 
|  | ProgressRetryOperation | 
|  | } PROG_INVOKE_SETTING, *PPROG_INVOKE_SETTING; | 
|  |  | 
|  | typedef struct _INHERITED_FROMA | 
|  | { | 
|  | LONG   GenerationGap; | 
|  | LPSTR  AncestorName; | 
|  | } INHERITED_FROMA, *PINHERITED_FROMA; | 
|  |  | 
|  | typedef struct _INHERITED_FROMW | 
|  | { | 
|  | LONG   GenerationGap; | 
|  | LPWSTR AncestorName; | 
|  | } INHERITED_FROMW, *PINHERITED_FROMW; | 
|  |  | 
|  | DECL_WINELIB_TYPE_AW(INHERITED_FROM) | 
|  | DECL_WINELIB_TYPE_AW(PINHERITED_FROM) | 
|  |  | 
|  | #define AccFree LocalFree | 
|  |  | 
|  | #ifdef __cplusplus | 
|  | } | 
|  | #endif | 
|  |  | 
|  | #endif /* __WINE_ACCCTRL_H */ |