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
11 extern "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 
25 typedef VOID (CALLBACK *PFN_WdsCliCallback)(
26   DWORD dwMessageId,
27   WPARAM wParam,
28   LPARAM lParam,
29   PVOID pvUserData
30 );
31 
32 typedef VOID (WDSCLIAPI *PFN_WdsCliTraceFunction)(
33   LPCWSTR pwszFormat,
34   va_list Params
35 );
36 
37 
38 typedef 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 
45 typedef 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 
56 typedef struct tagWDS_CLI_CRED {
57   PCWSTR  pwszUserName;
58   PCWSTR pwszDomain;
59   PCWSTR pwszPassword;
60 } WDS_CLI_CRED, *PWDS_CLI_CRED, *LPWDS_CLI_CRED;
61 
62 HRESULT WDSCLIAPI WdsCliAuthorizeSession(
63   HANDLE hSession,
64   PWDS_CLI_CRED pCred
65 );
66 
67 HRESULT WDSCLIAPI WdsCliCancelTransfer(
68   HANDLE hTransfer
69 );
70 
71 HRESULT WDSCLIAPI WdsCliClose(
72   HANDLE Handle
73 );
74 
75 HRESULT WDSCLIAPI WdsCliCreateSession(
76   PWSTR pwszServer,
77   PWDS_CLI_CRED pCred,
78   PHANDLE phSession
79 );
80 
81 HRESULT WDSCLIAPI WdsCliFindFirstImage(
82   HANDLE hSession,
83   PHANDLE phFindHandle
84 );
85 
86 HRESULT WDSCLIAPI WdsCliFindNextImage(
87   HANDLE Handle
88 );
89 
90 #define WdsCliFlagEnumFilterVersion 1
91 
92 HRESULT 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 
101 HRESULT WDSCLIAPI WdsCliGetImageArchitecture(
102   HANDLE hIfh,
103   PDWORD pdwValue
104 );
105 
106 HRESULT WDSCLIAPI WdsCliGetImageDescription(
107   HANDLE hIfh,
108   PWSTR *ppwszValue
109 );
110 
111 HRESULT WDSCLIAPI WdsCliGetImageGroup(
112   HANDLE hIfh,
113   PWSTR *ppwszValue
114 );
115 
116 HRESULT WDSCLIAPI WdsCliGetImageHalName(
117   HANDLE hIfh,
118   PWSTR *ppwszValue
119 );
120 
121 HRESULT WDSCLIAPI WdsCliGetImageHandleFromFindHandle(
122   HANDLE FindHandle,
123   PHANDLE phImageHandle
124 );
125 
126 HRESULT WDSCLIAPI WdsCliGetImageHandleFromTransferHandle(
127   HANDLE hTransfer,
128   PHANDLE phImageHandle
129 );
130 
131 HRESULT WDSCLIAPI WdsCliGetImageIndex(
132   HANDLE hIfh,
133   PDWORD pdwValue
134 );
135 
136 HRESULT WDSCLIAPI WdsCliGetImageLanguage(
137   HANDLE hIfh,
138   PWSTR *ppwszValue
139 );
140 
141 HRESULT WDSCLIAPI WdsCliGetImageLanguages(
142   HANDLE hIfh,
143   PTSTR **pppszValues,
144   PDWORD pdwNumValues
145 );
146 
147 HRESULT WDSCLIAPI WdsCliGetImageLastModifiedTime(
148   HANDLE hIfh,
149   PSYSTEMTIME *ppSysTimeValue
150 );
151 
152 HRESULT WINAPI WdsCliGetImageName(
153   HANDLE hIfh,
154   PWSTR *ppwszValue
155 );
156 
157 HRESULT WDSCLIAPI WdsCliGetImageNamespace(
158   HANDLE hIfh,
159   PWSTR *ppwszValue
160 );
161 
162 HRESULT WDSCLIAPI WdsCliGetImagePath(
163   HANDLE hIfh,
164   PWSTR *ppwszValue
165 );
166 
167 HRESULT WDSCLIAPI WdsCliGetImageSize(
168   HANDLE hIfh,
169   PULONGLONG pullValue
170 );
171 
172 HRESULT WDSCLIAPI WdsCliGetImageVersion(
173   HANDLE hIfh,
174   PWSTR *ppwszValue
175 );
176 
177 HRESULT WDSCLIAPI WdsCliGetTransferSize(
178   HANDLE hIfh,
179   PULONGLONG pullValue
180 );
181 
182 HRESULT 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 
203 HRESULT __cdecl WdsCliLog(
204   HANDLE hSession,
205   ULONG ulLogLevel,
206   ULONG ulMessageCode,
207   ...
208 );
209 
210 HRESULT WDSCLIAPI WdsCliRegisterTrace(
211   PFN_WdsCliTraceFunction pfn
212 );
213 
214 HRESULT 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 
226 HRESULT 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 
236 HRESULT WDSCLIAPI WdsCliWaitForTransfer(
237   HANDLE hTransfer
238 );
239 
240 #ifdef __cplusplus
241 }
242 #endif
243 #endif /*(_WIN32_WINNT >= 0x0600)*/
244 #endif /*_INC_WDSCLIENTAPI*/
245