Home | History | Annotate | Download | only in include
      1 /**
      2  * This file has no copyright assigned and is placed in the Public Domain.
      3  * This file is part of the mingw-w64 runtime package.
      4  * No warranty is given; refer to the file DISCLAIMER.PD within this package.
      5  */
      6 #ifndef __OBJSEL_H_
      7 #define __OBJSEL_H_
      8 
      9 #ifndef DECLSPEC_SELECTANY
     10 #define DECLSPEC_SELECTANY __declspec(selectany)
     11 #endif
     12 
     13 #ifndef EXTERN_C
     14 #ifdef __cplusplus
     15 #define EXTERN_C extern "C"
     16 #else
     17 #define EXTERN_C extern
     18 #endif
     19 #endif
     20 
     21 EXTERN_C const GUID DECLSPEC_SELECTANY CLSID_DsObjectPicker = {0x17d6ccd8,0x3b7b,0x11d2,{0xb9,0xe0,0x00,0xc0,0x4f,0xd8,0xdb,0xf7}};
     22 EXTERN_C const GUID DECLSPEC_SELECTANY IID_IDsObjectPicker = {0x0c87e64e,0x3b7a,0x11d2,{0xb9,0xe0,0x00,0xc0,0x4f,0xd8,0xdb,0xf7}};
     23 
     24 #define CFSTR_DSOP_DS_SELECTION_LIST TEXT("CFSTR_DSOP_DS_SELECTION_LIST")
     25 
     26 #define DSOP_SCOPE_TYPE_TARGET_COMPUTER 0x00000001
     27 #define DSOP_SCOPE_TYPE_UPLEVEL_JOINED_DOMAIN 0x00000002
     28 #define DSOP_SCOPE_TYPE_DOWNLEVEL_JOINED_DOMAIN 0x00000004
     29 #define DSOP_SCOPE_TYPE_ENTERPRISE_DOMAIN 0x00000008
     30 #define DSOP_SCOPE_TYPE_GLOBAL_CATALOG 0x00000010
     31 #define DSOP_SCOPE_TYPE_EXTERNAL_UPLEVEL_DOMAIN 0x00000020
     32 #define DSOP_SCOPE_TYPE_EXTERNAL_DOWNLEVEL_DOMAIN 0x00000040
     33 #define DSOP_SCOPE_TYPE_WORKGROUP 0x00000080
     34 #define DSOP_SCOPE_TYPE_USER_ENTERED_UPLEVEL_SCOPE 0x00000100
     35 #define DSOP_SCOPE_TYPE_USER_ENTERED_DOWNLEVEL_SCOPE 0x00000200
     36 
     37 #define DSOP_SCOPE_FLAG_STARTING_SCOPE 0x00000001
     38 #define DSOP_SCOPE_FLAG_WANT_PROVIDER_WINNT 0x00000002
     39 #define DSOP_SCOPE_FLAG_WANT_PROVIDER_LDAP 0x00000004
     40 #define DSOP_SCOPE_FLAG_WANT_PROVIDER_GC 0x00000008
     41 #define DSOP_SCOPE_FLAG_WANT_SID_PATH 0x00000010
     42 #define DSOP_SCOPE_FLAG_WANT_DOWNLEVEL_BUILTIN_PATH 0x00000020
     43 #define DSOP_SCOPE_FLAG_DEFAULT_FILTER_USERS 0x00000040
     44 #define DSOP_SCOPE_FLAG_DEFAULT_FILTER_GROUPS 0x00000080
     45 #define DSOP_SCOPE_FLAG_DEFAULT_FILTER_COMPUTERS 0x00000100
     46 #define DSOP_SCOPE_FLAG_DEFAULT_FILTER_CONTACTS 0x00000200
     47 
     48 #define DSOP_FILTER_INCLUDE_ADVANCED_VIEW 0x00000001
     49 #define DSOP_FILTER_USERS 0x00000002
     50 #define DSOP_FILTER_BUILTIN_GROUPS 0x00000004
     51 #define DSOP_FILTER_WELL_KNOWN_PRINCIPALS 0x00000008
     52 #define DSOP_FILTER_UNIVERSAL_GROUPS_DL 0x00000010
     53 #define DSOP_FILTER_UNIVERSAL_GROUPS_SE 0x00000020
     54 #define DSOP_FILTER_GLOBAL_GROUPS_DL 0x00000040
     55 #define DSOP_FILTER_GLOBAL_GROUPS_SE 0x00000080
     56 #define DSOP_FILTER_DOMAIN_LOCAL_GROUPS_DL 0x00000100
     57 #define DSOP_FILTER_DOMAIN_LOCAL_GROUPS_SE 0x00000200
     58 #define DSOP_FILTER_CONTACTS 0x00000400
     59 #define DSOP_FILTER_COMPUTERS 0x00000800
     60 
     61 #define DSOP_DOWNLEVEL_FILTER_USERS 0x80000001
     62 #define DSOP_DOWNLEVEL_FILTER_LOCAL_GROUPS 0x80000002
     63 #define DSOP_DOWNLEVEL_FILTER_GLOBAL_GROUPS 0x80000004
     64 #define DSOP_DOWNLEVEL_FILTER_COMPUTERS 0x80000008
     65 #define DSOP_DOWNLEVEL_FILTER_WORLD 0x80000010
     66 #define DSOP_DOWNLEVEL_FILTER_AUTHENTICATED_USER 0x80000020
     67 #define DSOP_DOWNLEVEL_FILTER_ANONYMOUS 0x80000040
     68 #define DSOP_DOWNLEVEL_FILTER_BATCH 0x80000080
     69 #define DSOP_DOWNLEVEL_FILTER_CREATOR_OWNER 0x80000100
     70 #define DSOP_DOWNLEVEL_FILTER_CREATOR_GROUP 0x80000200
     71 #define DSOP_DOWNLEVEL_FILTER_DIALUP 0x80000400
     72 #define DSOP_DOWNLEVEL_FILTER_INTERACTIVE 0x80000800
     73 #define DSOP_DOWNLEVEL_FILTER_NETWORK 0x80001000
     74 #define DSOP_DOWNLEVEL_FILTER_SERVICE 0x80002000
     75 #define DSOP_DOWNLEVEL_FILTER_SYSTEM 0x80004000
     76 #define DSOP_DOWNLEVEL_FILTER_EXCLUDE_BUILTIN_GROUPS 0x80008000
     77 #define DSOP_DOWNLEVEL_FILTER_TERMINAL_SERVER 0x80010000
     78 #define DSOP_DOWNLEVEL_FILTER_ALL_WELLKNOWN_SIDS 0x80020000
     79 #define DSOP_DOWNLEVEL_FILTER_LOCAL_SERVICE 0x80040000
     80 #define DSOP_DOWNLEVEL_FILTER_NETWORK_SERVICE 0x80080000
     81 #define DSOP_DOWNLEVEL_FILTER_REMOTE_LOGON 0x80100000
     82 
     83 typedef struct _DSOP_UPLEVEL_FILTER_FLAGS {
     84   ULONG flBothModes;
     85   ULONG flMixedModeOnly;
     86   ULONG flNativeModeOnly;
     87 } DSOP_UPLEVEL_FILTER_FLAGS;
     88 
     89 typedef struct _DSOP_FILTER_FLAGS {
     90   DSOP_UPLEVEL_FILTER_FLAGS Uplevel;
     91   ULONG flDownlevel;
     92 } DSOP_FILTER_FLAGS;
     93 
     94 typedef struct _DSOP_SCOPE_INIT_INFO {
     95   ULONG cbSize;
     96   ULONG flType;
     97   ULONG flScope;
     98   DSOP_FILTER_FLAGS FilterFlags;
     99   PCWSTR pwzDcName;
    100   PCWSTR pwzADsPath;
    101   HRESULT hr;
    102 } DSOP_SCOPE_INIT_INFO,*PDSOP_SCOPE_INIT_INFO;
    103 
    104 typedef const DSOP_SCOPE_INIT_INFO *PCDSOP_SCOPE_INIT_INFO;
    105 
    106 #define DSOP_FLAG_MULTISELECT 0x00000001
    107 #define DSOP_FLAG_SKIP_TARGET_COMPUTER_DC_CHECK 0x00000002
    108 
    109 typedef struct _DSOP_INIT_INFO {
    110   ULONG cbSize;
    111   PCWSTR pwzTargetComputer;
    112   ULONG cDsScopeInfos;
    113   PDSOP_SCOPE_INIT_INFO aDsScopeInfos;
    114   ULONG flOptions;
    115   ULONG cAttributesToFetch;
    116   PCWSTR *apwzAttributeNames;
    117 } DSOP_INIT_INFO,*PDSOP_INIT_INFO;
    118 
    119 typedef const DSOP_INIT_INFO *PCDSOP_INIT_INFO;
    120 
    121 typedef struct _DS_SELECTION {
    122   PWSTR pwzName;
    123   PWSTR pwzADsPath;
    124   PWSTR pwzClass;
    125   PWSTR pwzUPN;
    126   VARIANT *pvarFetchedAttributes;
    127   ULONG flScopeType;
    128 } DS_SELECTION,*PDS_SELECTION;
    129 
    130 typedef struct _DS_SELECTION_LIST {
    131   ULONG cItems;
    132   ULONG cFetchedAttributes;
    133   DS_SELECTION aDsSelection[ANYSIZE_ARRAY];
    134 } DS_SELECTION_LIST,*PDS_SELECTION_LIST;
    135 
    136 #undef INTERFACE
    137 #define INTERFACE IDsObjectPicker
    138 
    139 DECLARE_INTERFACE_(IDsObjectPicker,IUnknown) {
    140   STDMETHOD(QueryInterface)(THIS_ REFIID riid,PVOID *ppv) PURE;
    141   STDMETHOD_(ULONG,AddRef)(THIS) PURE;
    142   STDMETHOD_(ULONG,Release)(THIS) PURE;
    143   STDMETHOD(Initialize)(THIS_ PDSOP_INIT_INFO pInitInfo) PURE;
    144   STDMETHOD(InvokeDialog)(THIS_ HWND hwndParent,IDataObject **ppdoSelections) PURE;
    145 };
    146 #endif
    147