aboutsummaryrefslogtreecommitdiff
path: root/x86_64-w64-mingw32/include/dsclient.h
blob: 24dc57e77271a8608710e1fb49dfbdbbd1eca3f0 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
/**
 * This file has no copyright assigned and is placed in the Public Domain.
 * This file is part of the mingw-w64 runtime package.
 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
 */
#ifndef __dsclient_h
#define __dsclient_h

#include <_mingw_unicode.h>
#include <shlobj.h>

DEFINE_GUID(CLSID_MicrosoftDS,0xfe1290f0,0xcfbd,0x11cf,0xa3,0x30,0x0,0xaa,0x0,0xc1,0x6e,0x65);
#define CLSID_DsFolder CLSID_MicrosoftDS
DEFINE_GUID(CLSID_DsPropertyPages,0xd45d530,0x764b,0x11d0,0xa1,0xca,0x0,0xaa,0x0,0xc1,0x6e,0x65);
DEFINE_GUID(CLSID_DsDomainTreeBrowser,0x1698790a,0xe2b4,0x11d0,0xb0,0xb1,0x00,0xc0,0x4f,0xd8,0xdc,0xa6);
DEFINE_GUID(IID_IDsBrowseDomainTree,0x7cabcf1e,0x78f5,0x11d2,0x96,0xc,0x0,0xc0,0x4f,0xa3,0x1a,0x86);
DEFINE_GUID(CLSID_DsDisplaySpecifier,0x1ab4a8c0,0x6a0b,0x11d2,0xad,0x49,0x0,0xc0,0x4f,0xa3,0x1a,0x86);
#define IID_IDsDisplaySpecifier CLSID_DsDisplaySpecifier
DEFINE_GUID(CLSID_DsFolderProperties,0x9e51e0d0,0x6e0f,0x11d2,0x96,0x1,0x0,0xc0,0x4f,0xa3,0x1a,0x86);
#define IID_IDsFolderProperties CLSID_DsFolderProperties

#ifndef GUID_DEFS_ONLY

#include "activeds.h"

#define DSOBJECT_ISCONTAINER 0x00000001
#define DSOBJECT_READONLYPAGES 0x80000000

#define DSPROVIDER_UNUSED_0 0x00000001
#define DSPROVIDER_UNUSED_1 0x00000002
#define DSPROVIDER_UNUSED_2 0x00000004
#define DSPROVIDER_UNUSED_3 0x00000008
#define DSPROVIDER_ADVANCED 0x00000010

#define CFSTR_DSOBJECTNAMES TEXT("DsObjectNames")

typedef struct {
  DWORD dwFlags;
  DWORD dwProviderFlags;
  DWORD offsetName;
  DWORD offsetClass;
} DSOBJECT,*LPDSOBJECT;

typedef struct {
  CLSID clsidNamespace;
  UINT cItems;
  DSOBJECT aObjects[1];
} DSOBJECTNAMES,*LPDSOBJECTNAMES;

#define CFSTR_DS_DISPLAY_SPEC_OPTIONS TEXT("DsDisplaySpecOptions")
#define CFSTR_DSDISPLAYSPECOPTIONS CFSTR_DS_DISPLAY_SPEC_OPTIONS

typedef struct _DSDISPLAYSPECOPTIONS {
  DWORD dwSize;
  DWORD dwFlags;
  DWORD offsetAttribPrefix;
  DWORD offsetUserName;
  DWORD offsetPassword;
  DWORD offsetServer;
  DWORD offsetServerConfigPath;
} DSDISPLAYSPECOPTIONS,*PDSDISPLAYSPECOPTIONS,*LPDSDISPLAYSPECOPTIONS;

#define DS_PROP_SHELL_PREFIX L"shell"
#define DS_PROP_ADMIN_PREFIX L"admin"

#define DSDSOF_HASUSERANDSERVERINFO 0x00000001
#define DSDSOF_SIMPLEAUTHENTICATE 0x00000002
#define DSDSOF_DONTSIGNSEAL 0x00000004
#define DSDSOF_DSAVAILABLE 0x40000000

#define CFSTR_DSPROPERTYPAGEINFO TEXT("DsPropPageInfo")

typedef struct {
  DWORD offsetString;
} DSPROPERTYPAGEINFO,*LPDSPROPERTYPAGEINFO;

#define DSPROP_ATTRCHANGED_MSG TEXT("DsPropAttrChanged")

#define DBDTF_RETURNFQDN 0x00000001
#define DBDTF_RETURNMIXEDDOMAINS 0x00000002
#define DBDTF_RETURNEXTERNAL 0x00000004
#define DBDTF_RETURNINBOUND 0x00000008
#define DBDTF_RETURNINOUTBOUND 0x00000010

typedef struct _DOMAINDESC {
  LPWSTR pszName;
  LPWSTR pszPath;
  LPWSTR pszNCName;
  LPWSTR pszTrustParent;
  LPWSTR pszObjectClass;
  ULONG ulFlags;
  WINBOOL fDownLevel;
  struct _DOMAINDESC *pdChildList;
  struct _DOMAINDESC *pdNextSibling;
} DOMAIN_DESC,DOMAINDESC,*PDOMAIN_DESC,*LPDOMAINDESC;

typedef struct {
  DWORD dsSize;
  DWORD dwCount;
  DOMAINDESC aDomains[1];
} DOMAIN_TREE,DOMAINTREE,*PDOMAIN_TREE,*LPDOMAINTREE;

#undef INTERFACE
#define INTERFACE IDsBrowseDomainTree
DECLARE_INTERFACE_(IDsBrowseDomainTree,IUnknown) {
  STDMETHOD(QueryInterface)(THIS_ REFIID riid,LPVOID *ppvObj) PURE;
  STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  STDMETHOD_(ULONG,Release)(THIS) PURE;
  STDMETHOD(BrowseTo)(THIS_ HWND hwndParent,LPWSTR *ppszTargetPath,DWORD dwFlags) PURE;
  STDMETHOD(GetDomains)(THIS_ PDOMAIN_TREE *ppDomainTree,DWORD dwFlags) PURE;
  STDMETHOD(FreeDomains)(THIS_ PDOMAIN_TREE *ppDomainTree) PURE;
  STDMETHOD(FlushCachedDomains)(THIS) PURE;
  STDMETHOD(SetComputer)(THIS_ LPCWSTR pszComputerName,LPCWSTR pszUserName,LPCWSTR pszPassword) PURE;
};

#define DSSSF_SIMPLEAUTHENTICATE 0x00000001
#define DSSSF_DONTSIGNSEAL 0x00000002
#define DSSSF_DSAVAILABLE 0x80000000

#define DSGIF_ISNORMAL 0x0000000
#define DSGIF_ISOPEN 0x0000001
#define DSGIF_ISDISABLED 0x0000002
#define DSGIF_ISMASK 0x000000f
#define DSGIF_GETDEFAULTICON 0x0000010
#define DSGIF_DEFAULTISCONTAINER 0x0000020

#define DSICCF_IGNORETREATASLEAF 0x00000001

#define DSECAF_NOTLISTED 0x00000001

typedef HRESULT (CALLBACK *LPDSENUMATTRIBUTES)(LPARAM lParam,LPCWSTR pszAttributeName,LPCWSTR pszDisplayName,DWORD dwFlags);

#define DSCCIF_HASWIZARDDIALOG 0x00000001
#define DSCCIF_HASWIZARDPRIMARYPAGE 0x00000002

typedef struct {
  DWORD dwFlags;
  CLSID clsidWizardDialog;
  CLSID clsidWizardPrimaryPage;
  DWORD cWizardExtensions;
  CLSID aWizardExtensions[1];
} DSCLASSCREATIONINFO,*LPDSCLASSCREATIONINFO;

#undef INTERFACE
#define INTERFACE IDsDisplaySpecifier
DECLARE_INTERFACE_(IDsDisplaySpecifier,IUnknown) {
  STDMETHOD(QueryInterface)(THIS_ REFIID riid,LPVOID *ppvObj) PURE;
  STDMETHOD_(ULONG,AddRef)(THIS) PURE;
  STDMETHOD_(ULONG,Release)(THIS) PURE;
  STDMETHOD(SetServer)(THIS_ LPCWSTR pszServer,LPCWSTR pszUserName,LPCWSTR pszPassword,DWORD dwFlags) PURE;
  STDMETHOD(SetLanguageID)(THIS_ LANGID langid) PURE;
  STDMETHOD(GetDisplaySpecifier)(THIS_ LPCWSTR pszObjectClass,REFIID riid,void **ppv) PURE;
  STDMETHOD(GetIconLocation)(THIS_ LPCWSTR pszObjectClass,DWORD dwFlags,LPWSTR pszBuffer,INT cchBuffer,INT *presid) PURE;
  STDMETHOD_(HICON,GetIcon)(THIS_ LPCWSTR pszObjectClass,DWORD dwFlags,INT cxIcon,INT cyIcon) PURE;
  STDMETHOD(GetFriendlyClassName)(THIS_ LPCWSTR pszObjectClass,LPWSTR pszBuffer,INT cchBuffer) PURE;
  STDMETHOD(GetFriendlyAttributeName)(THIS_ LPCWSTR pszObjectClass,LPCWSTR pszAttributeName,LPWSTR pszBuffer,UINT cchBuffer) PURE;
  STDMETHOD_(WINBOOL,IsClassContainer)(THIS_ LPCWSTR pszObjectClass,LPCWSTR pszADsPath,DWORD dwFlags) PURE;
  STDMETHOD(GetClassCreationInfo)(THIS_ LPCWSTR pszObjectClass,LPDSCLASSCREATIONINFO *ppdscci) PURE;
  STDMETHOD(EnumClassAttributes)(THIS_ LPCWSTR pszObjectClass,LPDSENUMATTRIBUTES pcbEnum,LPARAM lParam) PURE;
  STDMETHOD_(ADSTYPE,GetAttributeADsType)(THIS_ LPCWSTR pszAttributeName) PURE;
};

typedef struct {
  DWORD cbStruct;
  HWND hwndOwner;
  LPCWSTR pszCaption;
  LPCWSTR pszTitle;
  LPCWSTR pszRoot;
  LPWSTR pszPath;
  ULONG cchPath;
  DWORD dwFlags;
  BFFCALLBACK pfnCallback;
  LPARAM lParam;
  DWORD dwReturnFormat;
  LPCWSTR pUserName;
  LPCWSTR pPassword;
  LPWSTR pszObjectClass;
  ULONG cchObjectClass;
} DSBROWSEINFOW,*PDSBROWSEINFOW;

typedef struct {
  DWORD cbStruct;
  HWND hwndOwner;
  LPCSTR pszCaption;
  LPCSTR pszTitle;
  LPCWSTR pszRoot;
  LPWSTR pszPath;
  ULONG cchPath;
  DWORD dwFlags;
  BFFCALLBACK pfnCallback;
  LPARAM lParam;
  DWORD dwReturnFormat;
  LPCWSTR pUserName;
  LPCWSTR pPassword;
  LPWSTR pszObjectClass;
  ULONG cchObjectClass;
} DSBROWSEINFOA,*PDSBROWSEINFOA;

#define DSBROWSEINFO __MINGW_NAME_AW(DSBROWSEINFO)
#define PDSBROWSEINFO __MINGW_NAME_AW(PDSBROWSEINFO)

#define DSBI_NOBUTTONS 0x00000001
#define DSBI_NOLINES 0x00000002
#define DSBI_NOLINESATROOT 0x00000004
#define DSBI_CHECKBOXES 0x00000100
#define DSBI_NOROOT 0x00010000
#define DSBI_INCLUDEHIDDEN 0x00020000
#define DSBI_EXPANDONOPEN 0x00040000
#define DSBI_ENTIREDIRECTORY 0x00090000
#define DSBI_RETURN_FORMAT 0x00100000
#define DSBI_HASCREDENTIALS 0x00200000
#define DSBI_IGNORETREATASLEAF 0x00400000
#define DSBI_SIMPLEAUTHENTICATE 0x00800000
#define DSBI_RETURNOBJECTCLASS 0x01000000
#define DSBI_DONTSIGNSEAL 0x02000000

#define DSB_MAX_DISPLAYNAME_CHARS 64

typedef struct {
  DWORD cbStruct;
  LPCWSTR pszADsPath;
  LPCWSTR pszClass;
  DWORD dwMask;
  DWORD dwState;
  DWORD dwStateMask;
  WCHAR szDisplayName[DSB_MAX_DISPLAYNAME_CHARS];
  WCHAR szIconLocation[MAX_PATH];
  INT iIconResID;
} DSBITEMW,*PDSBITEMW;

typedef struct {
  DWORD cbStruct;
  LPCWSTR pszADsPath;
  LPCWSTR pszClass;
  DWORD dwMask;
  DWORD dwState;
  DWORD dwStateMask;
  CHAR szDisplayName[DSB_MAX_DISPLAYNAME_CHARS];
  CHAR szIconLocation[MAX_PATH];
  INT iIconResID;
} DSBITEMA,*PDSBITEMA;

#define DSBITEM __MINGW_NAME_AW(DSBITEM)
#define PDSBITEM __MINGW_NAME_AW(PDSBITEM)

#define DSBF_STATE 0x00000001
#define DSBF_ICONLOCATION 0x00000002
#define DSBF_DISPLAYNAME 0x00000004

#define DSBS_CHECKED 0x00000001
#define DSBS_HIDDEN 0x00000002
#define DSBS_ROOT 0x00000004

#define DSBM_QUERYINSERTW 100
#define DSBM_QUERYINSERTA 101

#define DSBM_QUERYINSERT __MINGW_NAME_AW(DSBM_QUERYINSERT)

#define DSBM_CHANGEIMAGESTATE 102
#define DSBM_HELP 103
#define DSBM_CONTEXTMENU 104

#define DSBID_BANNER 256
#define DSBID_CONTAINERLIST 257

STDAPI_(int) DsBrowseForContainerW(PDSBROWSEINFOW pInfo);
STDAPI_(int) DsBrowseForContainerA(PDSBROWSEINFOA pInfo);

#define DsBrowseForContainer __MINGW_NAME_AW(DsBrowseForContainer)

STDAPI_(HICON) DsGetIcon(DWORD dwFlags,LPWSTR pszObjectClass,INT cxImage,INT cyImage);
STDAPI DsGetFriendlyClassName(LPWSTR pszObjectClass,LPWSTR pszBuffer,UINT cchBuffer);
#endif
#endif