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 _INC_WDSCLIENTAPI
7#define _INC_WDSCLIENTAPI
8#if (_WIN32_WINNT >= 0x0600)
9
10#ifdef __cplusplus
11extern "C" {
12#endif
13
14#define WDS_CLI_MSG_START 0
15#define WDS_CLI_MSG_COMPLETE 1
16#define WDS_CLI_MSG_PROGRESS 2
17#define WDS_CLI_MSG_TEXT 3
18
19#ifndef WDSCLIAPI
20#define WDSCLIAPI WINAPI
21#endif
22
23/* WdsClientAPI.dll is missing an implib because Vista clients don't have the dll to generate it from */
24
25typedef VOID (CALLBACK *PFN_WdsCliCallback)(
26  DWORD dwMessageId,
27  WPARAM wParam,
28  LPARAM lParam,
29  PVOID pvUserData
30);
31
32typedef VOID (WDSCLIAPI *PFN_WdsCliTraceFunction)(
33  LPCWSTR pwszFormat,
34  va_list Params
35);
36
37
38typedef enum _WDS_LOG_LEVEL {
39  WDS_LOG_LEVEL_DISABLED   = 0,
40  WDS_LOG_LEVEL_ERROR      = 1,
41  WDS_LOG_LEVEL_WARNING    = 2,
42  WDS_LOG_LEVEL_INFO       = 3
43} WDS_LOG_LEVEL;
44
45typedef enum _WDS_LOG_TYPE_CLIENT {
46  WDS_LOG_TYPE_CLIENT_ERROR             = 1,
47  WDS_LOG_TYPE_CLIENT_STARTED,
48  WDS_LOG_TYPE_CLIENT_FINISHED,
49  WDS_LOG_TYPE_CLIENT_IMAGE_SELECTED,
50  WDS_LOG_TYPE_CLIENT_APPLY_STARTED,
51  WDS_LOG_TYPE_CLIENT_APPLY_FINISHED,
52  WDS_LOG_TYPE_CLIENT_GENERIC_MESSAGE,
53  WDS_LOG_TYPE_CLIENT_MAX_CODE
54} WDS_LOG_TYPE_CLIENT;
55
56typedef struct tagWDS_CLI_CRED {
57  PCWSTR  pwszUserName;
58  PCWSTR pwszDomain;
59  PCWSTR pwszPassword;
60} WDS_CLI_CRED, *PWDS_CLI_CRED, *LPWDS_CLI_CRED;
61
62HRESULT WDSCLIAPI WdsCliAuthorizeSession(
63  HANDLE hSession,
64  PWDS_CLI_CRED pCred
65);
66
67HRESULT WDSCLIAPI WdsCliCancelTransfer(
68  HANDLE hTransfer
69);
70
71HRESULT WDSCLIAPI WdsCliClose(
72  HANDLE Handle
73);
74
75HRESULT WDSCLIAPI WdsCliCreateSession(
76  PWSTR pwszServer,
77  PWDS_CLI_CRED pCred,
78  PHANDLE phSession
79);
80
81HRESULT WDSCLIAPI WdsCliFindFirstImage(
82  HANDLE hSession,
83  PHANDLE phFindHandle
84);
85
86HRESULT WDSCLIAPI WdsCliFindNextImage(
87  HANDLE Handle
88);
89
90#define WdsCliFlagEnumFilterVersion 1
91
92HRESULT WDSCLIAPI WdsCliGetEnumerationFlags(
93  HANDLE Handle,
94  PDWORD pdwFlags
95);
96
97#define PROCESSOR_ARCHITECTURE_AMD64 9
98#define PROCESSOR_ARCHITECTURE_IA64 6
99#define PROCESSOR_ARCHITECTURE_INTEL 0
100
101HRESULT WDSCLIAPI WdsCliGetImageArchitecture(
102  HANDLE hIfh,
103  PDWORD pdwValue
104);
105
106HRESULT WDSCLIAPI WdsCliGetImageDescription(
107  HANDLE hIfh,
108  PWSTR *ppwszValue
109);
110
111HRESULT WDSCLIAPI WdsCliGetImageGroup(
112  HANDLE hIfh,
113  PWSTR *ppwszValue
114);
115
116HRESULT WDSCLIAPI WdsCliGetImageHalName(
117  HANDLE hIfh,
118  PWSTR *ppwszValue
119);
120
121HRESULT WDSCLIAPI WdsCliGetImageHandleFromFindHandle(
122  HANDLE FindHandle,
123  PHANDLE phImageHandle
124);
125
126HRESULT WDSCLIAPI WdsCliGetImageHandleFromTransferHandle(
127  HANDLE hTransfer,
128  PHANDLE phImageHandle
129);
130
131HRESULT WDSCLIAPI WdsCliGetImageIndex(
132  HANDLE hIfh,
133  PDWORD pdwValue
134);
135
136HRESULT WDSCLIAPI WdsCliGetImageLanguage(
137  HANDLE hIfh,
138  PWSTR *ppwszValue
139);
140
141HRESULT WDSCLIAPI WdsCliGetImageLanguages(
142  HANDLE hIfh,
143  PTSTR **pppszValues,
144  PDWORD pdwNumValues
145);
146
147HRESULT WDSCLIAPI WdsCliGetImageLastModifiedTime(
148  HANDLE hIfh,
149  PSYSTEMTIME *ppSysTimeValue
150);
151
152HRESULT WINAPI WdsCliGetImageName(
153  HANDLE hIfh,
154  PWSTR *ppwszValue
155);
156
157HRESULT WDSCLIAPI WdsCliGetImageNamespace(
158  HANDLE hIfh,
159  PWSTR *ppwszValue
160);
161
162HRESULT WDSCLIAPI WdsCliGetImagePath(
163  HANDLE hIfh,
164  PWSTR *ppwszValue
165);
166
167HRESULT WDSCLIAPI WdsCliGetImageSize(
168  HANDLE hIfh,
169  PULONGLONG pullValue
170);
171
172HRESULT WDSCLIAPI WdsCliGetImageVersion(
173  HANDLE hIfh,
174  PWSTR *ppwszValue
175);
176
177HRESULT WDSCLIAPI WdsCliGetTransferSize(
178  HANDLE hIfh,
179  PULONGLONG pullValue
180);
181
182HRESULT WDSCLIAPI WdsCliInitializeLog(
183  HANDLE hSession,
184  ULONG ulClientArchitecture,
185  PWSTR pwszClientId,
186  PWSTR pwszClientAddress
187);
188
189#define WDS_LOG_LEVEL_DISABLED 0
190#define WDS_LOG_LEVEL_ERROR 1
191#define WDS_LOG_LEVEL_WARNING 2
192#define WDS_LOG_LEVEL_INFO 3
193
194#define WDS_LOG_TYPE_CLIENT_ERROR 1
195#define WDS_LOG_TYPE_CLIENT_STARTED 2
196#define WDS_LOG_TYPE_CLIENT_FINISHED 3
197#define WDS_LOG_TYPE_CLIENT_IMAGE_SELECTED 4
198#define WDS_LOG_TYPE_CLIENT_APPLY_STARTED 5
199#define WDS_LOG_TYPE_CLIENT_APPLY_FINISHED 6
200#define WDS_LOG_TYPE_CLIENT_GENERIC_MESSAGE 7
201#define WDS_LOG_TYPE_CLIENT_MAX_CODE 8
202
203HRESULT __cdecl WdsCliLog(
204  HANDLE hSession,
205  ULONG ulLogLevel,
206  ULONG ulMessageCode,
207  ...
208);
209
210HRESULT WDSCLIAPI WdsCliRegisterTrace(
211  PFN_WdsCliTraceFunction pfn
212);
213
214HRESULT WDSCLIAPI WdsCliTransferFile(
215  PCWSTR pwszServer,
216  PCWSTR pwszNamespace,
217  PCWSTR pwszRemoteFilePath,
218  PCWSTR pwszLocalFilePath,
219  DWORD dwFlags,
220  DWORD dwReserved,
221  PFN_WdsCliCallback pfnWdsCliCallback,
222  PVOID pvUserData,
223  PHANDLE phTransfer
224);
225
226HRESULT WDSCLIAPI WdsCliTransferImage(
227  HANDLE hImage,
228  PWSTR pwszLocalPath,
229  DWORD dwFlags,
230  DWORD dwReserved,
231  PFN_WdsCliCallback pfnWdsCliCallback,
232  PVOID pvUserData,
233  PHANDLE phTransfer
234);
235
236HRESULT WDSCLIAPI WdsCliWaitForTransfer(
237  HANDLE hTransfer
238);
239
240#ifdef __cplusplus
241}
242#endif
243#endif /*(_WIN32_WINNT >= 0x0600)*/
244#endif /*_INC_WDSCLIENTAPI*/
245