| 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 __dsclient_h |
| 7 | #define __dsclient_h |
| 8 | |
| 9 | #include <_mingw_unicode.h> |
| 10 | #include <shlobj.h> |
| 11 | |
| 12 | DEFINE_GUID(CLSID_MicrosoftDS,0xfe1290f0,0xcfbd,0x11cf,0xa3,0x30,0x0,0xaa,0x0,0xc1,0x6e,0x65); |
| 13 | #define CLSID_DsFolder CLSID_MicrosoftDS |
| 14 | DEFINE_GUID(CLSID_DsPropertyPages,0xd45d530,0x764b,0x11d0,0xa1,0xca,0x0,0xaa,0x0,0xc1,0x6e,0x65); |
| 15 | DEFINE_GUID(CLSID_DsDomainTreeBrowser,0x1698790a,0xe2b4,0x11d0,0xb0,0xb1,0x00,0xc0,0x4f,0xd8,0xdc,0xa6); |
| 16 | DEFINE_GUID(IID_IDsBrowseDomainTree,0x7cabcf1e,0x78f5,0x11d2,0x96,0xc,0x0,0xc0,0x4f,0xa3,0x1a,0x86); |
| 17 | DEFINE_GUID(CLSID_DsDisplaySpecifier,0x1ab4a8c0,0x6a0b,0x11d2,0xad,0x49,0x0,0xc0,0x4f,0xa3,0x1a,0x86); |
| 18 | #define IID_IDsDisplaySpecifier CLSID_DsDisplaySpecifier |
| 19 | DEFINE_GUID(CLSID_DsFolderProperties,0x9e51e0d0,0x6e0f,0x11d2,0x96,0x1,0x0,0xc0,0x4f,0xa3,0x1a,0x86); |
| 20 | #define IID_IDsFolderProperties CLSID_DsFolderProperties |
| 21 | |
| 22 | #ifndef GUID_DEFS_ONLY |
| 23 | |
| 24 | #include "activeds.h" |
| 25 | |
| 26 | #define DSOBJECT_ISCONTAINER 0x00000001 |
| 27 | #define DSOBJECT_READONLYPAGES 0x80000000 |
| 28 | |
| 29 | #define DSPROVIDER_UNUSED_0 0x00000001 |
| 30 | #define DSPROVIDER_UNUSED_1 0x00000002 |
| 31 | #define DSPROVIDER_UNUSED_2 0x00000004 |
| 32 | #define DSPROVIDER_UNUSED_3 0x00000008 |
| 33 | #define DSPROVIDER_ADVANCED 0x00000010 |
| 34 | |
| 35 | #define CFSTR_DSOBJECTNAMES TEXT("DsObjectNames") |
| 36 | |
| 37 | typedef struct { |
| 38 | DWORD dwFlags; |
| 39 | DWORD dwProviderFlags; |
| 40 | DWORD offsetName; |
| 41 | DWORD offsetClass; |
| 42 | } DSOBJECT,*LPDSOBJECT; |
| 43 | |
| 44 | typedef struct { |
| 45 | CLSID clsidNamespace; |
| 46 | UINT cItems; |
| 47 | DSOBJECT aObjects[1]; |
| 48 | } DSOBJECTNAMES,*LPDSOBJECTNAMES; |
| 49 | |
| 50 | #define CFSTR_DS_DISPLAY_SPEC_OPTIONS TEXT("DsDisplaySpecOptions") |
| 51 | #define CFSTR_DSDISPLAYSPECOPTIONS CFSTR_DS_DISPLAY_SPEC_OPTIONS |
| 52 | |
| 53 | typedef struct _DSDISPLAYSPECOPTIONS { |
| 54 | DWORD dwSize; |
| 55 | DWORD dwFlags; |
| 56 | DWORD offsetAttribPrefix; |
| 57 | DWORD offsetUserName; |
| 58 | DWORD offsetPassword; |
| 59 | DWORD offsetServer; |
| 60 | DWORD offsetServerConfigPath; |
| 61 | } DSDISPLAYSPECOPTIONS,*PDSDISPLAYSPECOPTIONS,*LPDSDISPLAYSPECOPTIONS; |
| 62 | |
| 63 | #define DS_PROP_SHELL_PREFIX L"shell" |
| 64 | #define DS_PROP_ADMIN_PREFIX L"admin" |
| 65 | |
| 66 | #define DSDSOF_HASUSERANDSERVERINFO 0x00000001 |
| 67 | #define DSDSOF_SIMPLEAUTHENTICATE 0x00000002 |
| 68 | #define DSDSOF_DONTSIGNSEAL 0x00000004 |
| 69 | #define DSDSOF_DSAVAILABLE 0x40000000 |
| 70 | |
| 71 | #define CFSTR_DSPROPERTYPAGEINFO TEXT("DsPropPageInfo") |
| 72 | |
| 73 | typedef struct { |
| 74 | DWORD offsetString; |
| 75 | } DSPROPERTYPAGEINFO,*LPDSPROPERTYPAGEINFO; |
| 76 | |
| 77 | #define DSPROP_ATTRCHANGED_MSG TEXT("DsPropAttrChanged") |
| 78 | |
| 79 | #define DBDTF_RETURNFQDN 0x00000001 |
| 80 | #define DBDTF_RETURNMIXEDDOMAINS 0x00000002 |
| 81 | #define DBDTF_RETURNEXTERNAL 0x00000004 |
| 82 | #define DBDTF_RETURNINBOUND 0x00000008 |
| 83 | #define DBDTF_RETURNINOUTBOUND 0x00000010 |
| 84 | |
| 85 | typedef struct _DOMAINDESC { |
| 86 | LPWSTR pszName; |
| 87 | LPWSTR pszPath; |
| 88 | LPWSTR pszNCName; |
| 89 | LPWSTR pszTrustParent; |
| 90 | LPWSTR pszObjectClass; |
| 91 | ULONG ulFlags; |
| 92 | WINBOOL fDownLevel; |
| 93 | struct _DOMAINDESC *pdChildList; |
| 94 | struct _DOMAINDESC *pdNextSibling; |
| 95 | } DOMAIN_DESC,DOMAINDESC,*PDOMAIN_DESC,*LPDOMAINDESC; |
| 96 | |
| 97 | typedef struct { |
| 98 | DWORD dsSize; |
| 99 | DWORD dwCount; |
| 100 | DOMAINDESC aDomains[1]; |
| 101 | } DOMAIN_TREE,DOMAINTREE,*PDOMAIN_TREE,*LPDOMAINTREE; |
| 102 | |
| 103 | #undef INTERFACE |
| 104 | #define INTERFACE IDsBrowseDomainTree |
| 105 | DECLARE_INTERFACE_(IDsBrowseDomainTree,IUnknown) { |
| 106 | STDMETHOD(QueryInterface)(THIS_ REFIID riid,LPVOID *ppvObj) PURE; |
| 107 | STDMETHOD_(ULONG,AddRef)(THIS) PURE; |
| 108 | STDMETHOD_(ULONG,Release)(THIS) PURE; |
| 109 | STDMETHOD(BrowseTo)(THIS_ HWND hwndParent,LPWSTR *ppszTargetPath,DWORD dwFlags) PURE; |
| 110 | STDMETHOD(GetDomains)(THIS_ PDOMAIN_TREE *ppDomainTree,DWORD dwFlags) PURE; |
| 111 | STDMETHOD(FreeDomains)(THIS_ PDOMAIN_TREE *ppDomainTree) PURE; |
| 112 | STDMETHOD(FlushCachedDomains)(THIS) PURE; |
| 113 | STDMETHOD(SetComputer)(THIS_ LPCWSTR pszComputerName,LPCWSTR pszUserName,LPCWSTR pszPassword) PURE; |
| 114 | }; |
| 115 | |
| 116 | #define DSSSF_SIMPLEAUTHENTICATE 0x00000001 |
| 117 | #define DSSSF_DONTSIGNSEAL 0x00000002 |
| 118 | #define DSSSF_DSAVAILABLE 0x80000000 |
| 119 | |
| 120 | #define DSGIF_ISNORMAL 0x0000000 |
| 121 | #define DSGIF_ISOPEN 0x0000001 |
| 122 | #define DSGIF_ISDISABLED 0x0000002 |
| 123 | #define DSGIF_ISMASK 0x000000f |
| 124 | #define DSGIF_GETDEFAULTICON 0x0000010 |
| 125 | #define DSGIF_DEFAULTISCONTAINER 0x0000020 |
| 126 | |
| 127 | #define DSICCF_IGNORETREATASLEAF 0x00000001 |
| 128 | |
| 129 | #define DSECAF_NOTLISTED 0x00000001 |
| 130 | |
| 131 | typedef HRESULT (CALLBACK *LPDSENUMATTRIBUTES)(LPARAM lParam,LPCWSTR pszAttributeName,LPCWSTR pszDisplayName,DWORD dwFlags); |
| 132 | |
| 133 | #define DSCCIF_HASWIZARDDIALOG 0x00000001 |
| 134 | #define DSCCIF_HASWIZARDPRIMARYPAGE 0x00000002 |
| 135 | |
| 136 | typedef struct { |
| 137 | DWORD dwFlags; |
| 138 | CLSID clsidWizardDialog; |
| 139 | CLSID clsidWizardPrimaryPage; |
| 140 | DWORD cWizardExtensions; |
| 141 | CLSID aWizardExtensions[1]; |
| 142 | } DSCLASSCREATIONINFO,*LPDSCLASSCREATIONINFO; |
| 143 | |
| 144 | #undef INTERFACE |
| 145 | #define INTERFACE IDsDisplaySpecifier |
| 146 | DECLARE_INTERFACE_(IDsDisplaySpecifier,IUnknown) { |
| 147 | STDMETHOD(QueryInterface)(THIS_ REFIID riid,LPVOID *ppvObj) PURE; |
| 148 | STDMETHOD_(ULONG,AddRef)(THIS) PURE; |
| 149 | STDMETHOD_(ULONG,Release)(THIS) PURE; |
| 150 | STDMETHOD(SetServer)(THIS_ LPCWSTR pszServer,LPCWSTR pszUserName,LPCWSTR pszPassword,DWORD dwFlags) PURE; |
| 151 | STDMETHOD(SetLanguageID)(THIS_ LANGID langid) PURE; |
| 152 | STDMETHOD(GetDisplaySpecifier)(THIS_ LPCWSTR pszObjectClass,REFIID riid,void **ppv) PURE; |
| 153 | STDMETHOD(GetIconLocation)(THIS_ LPCWSTR pszObjectClass,DWORD dwFlags,LPWSTR pszBuffer,INT cchBuffer,INT *presid) PURE; |
| 154 | STDMETHOD_(HICON,GetIcon)(THIS_ LPCWSTR pszObjectClass,DWORD dwFlags,INT cxIcon,INT cyIcon) PURE; |
| 155 | STDMETHOD(GetFriendlyClassName)(THIS_ LPCWSTR pszObjectClass,LPWSTR pszBuffer,INT cchBuffer) PURE; |
| 156 | STDMETHOD(GetFriendlyAttributeName)(THIS_ LPCWSTR pszObjectClass,LPCWSTR pszAttributeName,LPWSTR pszBuffer,UINT cchBuffer) PURE; |
| 157 | STDMETHOD_(WINBOOL,IsClassContainer)(THIS_ LPCWSTR pszObjectClass,LPCWSTR pszADsPath,DWORD dwFlags) PURE; |
| 158 | STDMETHOD(GetClassCreationInfo)(THIS_ LPCWSTR pszObjectClass,LPDSCLASSCREATIONINFO *ppdscci) PURE; |
| 159 | STDMETHOD(EnumClassAttributes)(THIS_ LPCWSTR pszObjectClass,LPDSENUMATTRIBUTES pcbEnum,LPARAM lParam) PURE; |
| 160 | STDMETHOD_(ADSTYPE,GetAttributeADsType)(THIS_ LPCWSTR pszAttributeName) PURE; |
| 161 | }; |
| 162 | |
| 163 | typedef struct { |
| 164 | DWORD cbStruct; |
| 165 | HWND hwndOwner; |
| 166 | LPCWSTR pszCaption; |
| 167 | LPCWSTR pszTitle; |
| 168 | LPCWSTR pszRoot; |
| 169 | LPWSTR pszPath; |
| 170 | ULONG cchPath; |
| 171 | DWORD dwFlags; |
| 172 | BFFCALLBACK pfnCallback; |
| 173 | LPARAM lParam; |
| 174 | DWORD dwReturnFormat; |
| 175 | LPCWSTR pUserName; |
| 176 | LPCWSTR pPassword; |
| 177 | LPWSTR pszObjectClass; |
| 178 | ULONG cchObjectClass; |
| 179 | } DSBROWSEINFOW,*PDSBROWSEINFOW; |
| 180 | |
| 181 | typedef struct { |
| 182 | DWORD cbStruct; |
| 183 | HWND hwndOwner; |
| 184 | LPCSTR pszCaption; |
| 185 | LPCSTR pszTitle; |
| 186 | LPCWSTR pszRoot; |
| 187 | LPWSTR pszPath; |
| 188 | ULONG cchPath; |
| 189 | DWORD dwFlags; |
| 190 | BFFCALLBACK pfnCallback; |
| 191 | LPARAM lParam; |
| 192 | DWORD dwReturnFormat; |
| 193 | LPCWSTR pUserName; |
| 194 | LPCWSTR pPassword; |
| 195 | LPWSTR pszObjectClass; |
| 196 | ULONG cchObjectClass; |
| 197 | } DSBROWSEINFOA,*PDSBROWSEINFOA; |
| 198 | |
| 199 | #define DSBROWSEINFO __MINGW_NAME_AW(DSBROWSEINFO) |
| 200 | #define PDSBROWSEINFO __MINGW_NAME_AW(PDSBROWSEINFO) |
| 201 | |
| 202 | #define DSBI_NOBUTTONS 0x00000001 |
| 203 | #define DSBI_NOLINES 0x00000002 |
| 204 | #define DSBI_NOLINESATROOT 0x00000004 |
| 205 | #define DSBI_CHECKBOXES 0x00000100 |
| 206 | #define DSBI_NOROOT 0x00010000 |
| 207 | #define DSBI_INCLUDEHIDDEN 0x00020000 |
| 208 | #define DSBI_EXPANDONOPEN 0x00040000 |
| 209 | #define DSBI_ENTIREDIRECTORY 0x00090000 |
| 210 | #define DSBI_RETURN_FORMAT 0x00100000 |
| 211 | #define DSBI_HASCREDENTIALS 0x00200000 |
| 212 | #define DSBI_IGNORETREATASLEAF 0x00400000 |
| 213 | #define DSBI_SIMPLEAUTHENTICATE 0x00800000 |
| 214 | #define DSBI_RETURNOBJECTCLASS 0x01000000 |
| 215 | #define DSBI_DONTSIGNSEAL 0x02000000 |
| 216 | |
| 217 | #define DSB_MAX_DISPLAYNAME_CHARS 64 |
| 218 | |
| 219 | typedef struct { |
| 220 | DWORD cbStruct; |
| 221 | LPCWSTR pszADsPath; |
| 222 | LPCWSTR pszClass; |
| 223 | DWORD dwMask; |
| 224 | DWORD dwState; |
| 225 | DWORD dwStateMask; |
| 226 | WCHAR szDisplayName[DSB_MAX_DISPLAYNAME_CHARS]; |
| 227 | WCHAR szIconLocation[MAX_PATH]; |
| 228 | INT iIconResID; |
| 229 | } DSBITEMW,*PDSBITEMW; |
| 230 | |
| 231 | typedef struct { |
| 232 | DWORD cbStruct; |
| 233 | LPCWSTR pszADsPath; |
| 234 | LPCWSTR pszClass; |
| 235 | DWORD dwMask; |
| 236 | DWORD dwState; |
| 237 | DWORD dwStateMask; |
| 238 | CHAR szDisplayName[DSB_MAX_DISPLAYNAME_CHARS]; |
| 239 | CHAR szIconLocation[MAX_PATH]; |
| 240 | INT iIconResID; |
| 241 | } DSBITEMA,*PDSBITEMA; |
| 242 | |
| 243 | #define DSBITEM __MINGW_NAME_AW(DSBITEM) |
| 244 | #define PDSBITEM __MINGW_NAME_AW(PDSBITEM) |
| 245 | |
| 246 | #define DSBF_STATE 0x00000001 |
| 247 | #define DSBF_ICONLOCATION 0x00000002 |
| 248 | #define DSBF_DISPLAYNAME 0x00000004 |
| 249 | |
| 250 | #define DSBS_CHECKED 0x00000001 |
| 251 | #define DSBS_HIDDEN 0x00000002 |
| 252 | #define DSBS_ROOT 0x00000004 |
| 253 | |
| 254 | #define DSBM_QUERYINSERTW 100 |
| 255 | #define DSBM_QUERYINSERTA 101 |
| 256 | |
| 257 | #define DSBM_QUERYINSERT __MINGW_NAME_AW(DSBM_QUERYINSERT) |
| 258 | |
| 259 | #define DSBM_CHANGEIMAGESTATE 102 |
| 260 | #define DSBM_HELP 103 |
| 261 | #define DSBM_CONTEXTMENU 104 |
| 262 | |
| 263 | #define DSBID_BANNER 256 |
| 264 | #define DSBID_CONTAINERLIST 257 |
| 265 | |
| 266 | STDAPI_(int) DsBrowseForContainerW(PDSBROWSEINFOW pInfo); |
| 267 | STDAPI_(int) DsBrowseForContainerA(PDSBROWSEINFOA pInfo); |
| 268 | |
| 269 | #define DsBrowseForContainer __MINGW_NAME_AW(DsBrowseForContainer) |
| 270 | |
| 271 | STDAPI_(HICON) DsGetIcon(DWORD dwFlags,LPWSTR pszObjectClass,INT cxImage,INT cyImage); |
| 272 | STDAPI DsGetFriendlyClassName(LPWSTR pszObjectClass,LPWSTR pszBuffer,UINT cchBuffer); |
| 273 | #endif |
| 274 | #endif |