1/**
2 * This file is part of the mingw-w64 runtime package.
3 * No warranty is given; refer to the file DISCLAIMER within this package.
4 */
5
6#include <winapifamily.h>
7
8#ifndef _WSMAN_H_
9#define _WSMAN_H_
10
11#if WINAPI_FAMILY_PARTITION (WINAPI_PARTITION_DESKTOP)
12
13#if !defined (WSMAN_API_VERSION_1_0) && !defined (WSMAN_API_VERSION_1_1)
14#error Either WSMAN_API_VERSION_1_0 or WSMAN_API_VERSION_1_1 need to be defined before including this header.
15#endif
16
17#define WSMAN_FLAG_REQUESTED_API_VERSION_1_0 0x0
18#define WSMAN_FLAG_REQUESTED_API_VERSION_1_1 0x1
19
20#define WSMAN_OPERATION_INFOV1 0x00000000
21#define WSMAN_OPERATION_INFOV2 0xaabbccdd
22
23#define WSMAN_STREAM_ID_STDIN L"stdin"
24#define WSMAN_STREAM_ID_STDOUT L"stdout"
25#define WSMAN_STREAM_ID_STDERR L"stderr"
26
27#define WSMAN_DEFAULT_TIMEOUT_MS 60000
28
29#define WSMAN_FLAG_RECEIVE_RESULT_NO_MORE_DATA 1
30#define WSMAN_FLAG_RECEIVE_FLUSH 2
31#define WSMAN_FLAG_RECEIVE_RESULT_DATA_BOUNDARY 4
32
33#define WSMAN_PLUGIN_PARAMS_MAX_ENVELOPE_SIZE 1
34#define WSMAN_PLUGIN_PARAMS_TIMEOUT 2
35#define WSMAN_PLUGIN_PARAMS_REMAINING_RESULT_SIZE 3
36#define WSMAN_PLUGIN_PARAMS_LARGEST_RESULT_SIZE 4
37#define WSMAN_PLUGIN_PARAMS_GET_REQUESTED_LOCALE 5
38#define WSMAN_PLUGIN_PARAMS_GET_REQUESTED_DATA_LOCALE 6
39
40#define WSMAN_PLUGIN_PARAMS_SHAREDHOST 1
41#define WSMAN_PLUGIN_PARAMS_RUNAS_USER 2
42#define WSMAN_PLUGIN_PARAMS_AUTORESTART 3
43#define WSMAN_PLUGIN_PARAMS_HOSTIDLETIMEOUTSECONDS 4
44#define WSMAN_PLUGIN_PARAMS_NAME 5
45
46#define WSMAN_PLUGIN_STARTUP_REQUEST_RECEIVED 0x0
47#define WSMAN_PLUGIN_STARTUP_AUTORESTARTED_REBOOT 0x1
48#define WSMAN_PLUGIN_STARTUP_AUTORESTARTED_CRASH 0x2
49
50#define WSMAN_PLUGIN_SHUTDOWN_SYSTEM 1
51#define WSMAN_PLUGIN_SHUTDOWN_SERVICE 2
52#define WSMAN_PLUGIN_SHUTDOWN_IISHOST 3
53#define WSMAN_PLUGIN_SHUTDOWN_IDLETIMEOUT_ELAPSED 4
54
55#define WSMAN_FLAG_SEND_NO_MORE_DATA 1
56
57#define WSMAN_SHELL_NS L"http://schemas.microsoft.com/wbem/wsman/1/windows/shell"
58#define WSMAN_SHELL_NS_LEN (sizeof (WSMAN_SHELL_NS)/sizeof (WCHAR)-1)
59
60#define WSMAN_CMDSHELL_URI WSMAN_SHELL_NS L"/cmd"
61
62#define WSMAN_CMDSHELL_OPTION_CODEPAGE L"WINRS_CODEPAGE"
63#define WSMAN_SHELL_OPTION_NOPROFILE L"WINRS_NOPROFILE"
64
65#define WSMAN_CMDSHELL_OPTION_CONSOLEMODE_STDIN L"WINRS_CONSOLEMODE_STDIN"
66#define WSMAN_CMDSHELL_OPTION_SKIP_CMD_SHELL L"WINRS_SKIP_CMD_SHELL"
67
68#define WSMAN_COMMAND_STATE_DONE WSMAN_SHELL_NS L"/CommandState/Done"
69#define WSMAN_COMMAND_STATE_PENDING WSMAN_SHELL_NS L"/CommandState/Pending"
70#define WSMAN_COMMAND_STATE_RUNNING WSMAN_SHELL_NS L"/CommandState/Running"
71
72#define WSMAN_SIGNAL_SHELL_CODE_TERMINATE WSMAN_SHELL_NS L"/signal/terminate"
73#define WSMAN_SIGNAL_SHELL_CODE_CTRL_C WSMAN_SHELL_NS L"/signal/ctrl_c"
74#define WSMAN_SIGNAL_SHELL_CODE_CTRL_BREAK WSMAN_SHELL_NS L"/signal/ctrl_break"
75
76#ifdef __cplusplus
77extern "C" {
78#endif
79
80  typedef enum WSManDataType {
81    WSMAN_DATA_NONE = 0,
82    WSMAN_DATA_TYPE_TEXT = 1,
83    WSMAN_DATA_TYPE_BINARY = 2,
84    WSMAN_DATA_TYPE_DWORD = 4
85  } WSManDataType;
86
87  typedef enum WSManAuthenticationFlags {
88    WSMAN_FLAG_DEFAULT_AUTHENTICATION = 0x0,
89    WSMAN_FLAG_NO_AUTHENTICATION = 0x1,
90    WSMAN_FLAG_AUTH_DIGEST = 0x2,
91    WSMAN_FLAG_AUTH_NEGOTIATE = 0x4,
92    WSMAN_FLAG_AUTH_BASIC = 0x8,
93    WSMAN_FLAG_AUTH_KERBEROS = 0x10,
94    WSMAN_FLAG_AUTH_CLIENT_CERTIFICATE = 0x20
95#if WINVER >= 0x600
96    ,WSMAN_FLAG_AUTH_CREDSSP = 0x80
97#endif
98  } WSManAuthenticationFlags;
99
100  enum WSManProxyAccessType {
101    WSMAN_OPTION_PROXY_IE_PROXY_CONFIG = 1,
102    WSMAN_OPTION_PROXY_WINHTTP_PROXY_CONFIG = 2,
103    WSMAN_OPTION_PROXY_AUTO_DETECT = 4,
104    WSMAN_OPTION_PROXY_NO_PROXY_SERVER = 8,
105  };
106
107  typedef enum WSManSessionOption {
108    WSMAN_OPTION_DEFAULT_OPERATION_TIMEOUTMS = 1,
109    WSMAN_OPTION_MAX_RETRY_TIME = 11,
110    WSMAN_OPTION_TIMEOUTMS_CREATE_SHELL = 12,
111    WSMAN_OPTION_TIMEOUTMS_RUN_SHELL_COMMAND = 13,
112    WSMAN_OPTION_TIMEOUTMS_RECEIVE_SHELL_OUTPUT = 14,
113    WSMAN_OPTION_TIMEOUTMS_SEND_SHELL_INPUT = 15,
114    WSMAN_OPTION_TIMEOUTMS_SIGNAL_SHELL = 16,
115    WSMAN_OPTION_TIMEOUTMS_CLOSE_SHELL = 17,
116    WSMAN_OPTION_SKIP_CA_CHECK = 18,
117    WSMAN_OPTION_SKIP_CN_CHECK = 19,
118    WSMAN_OPTION_UNENCRYPTED_MESSAGES = 20,
119    WSMAN_OPTION_UTF16 = 21,
120    WSMAN_OPTION_ENABLE_SPN_SERVER_PORT = 22,
121    WSMAN_OPTION_MACHINE_ID = 23,
122    WSMAN_OPTION_LOCALE = 25,
123    WSMAN_OPTION_UI_LANGUAGE = 26,
124    WSMAN_OPTION_MAX_ENVELOPE_SIZE_KB = 28,
125    WSMAN_OPTION_SHELL_MAX_DATA_SIZE_PER_MESSAGE_KB = 29,
126    WSMAN_OPTION_REDIRECT_LOCATION = 30,
127    WSMAN_OPTION_SKIP_REVOCATION_CHECK = 31,
128    WSMAN_OPTION_ALLOW_NEGOTIATE_IMPLICIT_CREDENTIALS = 32,
129    WSMAN_OPTION_USE_SSL = 33,
130    WSMAN_OPTION_USE_INTEARACTIVE_TOKEN = 34
131  } WSManSessionOption;
132
133  typedef enum WSManShellFlag {
134    WSMAN_FLAG_NO_COMPRESSION = 0x1,
135    WSMAN_FLAG_DELETE_SERVER_SESSION = 0x2,
136    WSMAN_FLAG_SERVER_BUFFERING_MODE_DROP = 0x4,
137    WSMAN_FLAG_SERVER_BUFFERING_MODE_BLOCK = 0x8,
138    WSMAN_FLAG_RECEIVE_DELAY_OUTPUT_STREAM = 0x10
139  } WSManShellFlag;
140
141  typedef enum WSManCallbackFlags {
142    WSMAN_FLAG_CALLBACK_END_OF_OPERATION = 0x1,
143    WSMAN_FLAG_CALLBACK_END_OF_STREAM = 0x8,
144    WSMAN_FLAG_CALLBACK_SHELL_SUPPORTS_DISCONNECT = 0x20,
145    WSMAN_FLAG_CALLBACK_SHELL_AUTODISCONNECTED = 0x40,
146    WSMAN_FLAG_CALLBACK_NETWORK_FAILURE_DETECTED = 0x100,
147    WSMAN_FLAG_CALLBACK_RETRYING_AFTER_NETWORK_FAILURE = 0x200,
148    WSMAN_FLAG_CALLBACK_RECONNECTED_AFTER_NETWORK_FAILURE = 0x400,
149    WSMAN_FLAG_CALLBACK_SHELL_AUTODISCONNECTING = 0x800,
150    WSMAN_FLAG_CALLBACK_RETRY_ABORTED_DUE_TO_INTERNAL_ERROR = 0x1000,
151    WSMAN_FLAG_CALLBACK_RECEIVE_DELAY_STREAM_REQUEST_PROCESSED = 0x2000
152  } WSManCallbackFlags;
153
154  typedef struct _WSMAN_DATA_TEXT {
155    DWORD bufferLength;
156    PCWSTR buffer;
157  } WSMAN_DATA_TEXT;
158
159  typedef struct _WSMAN_DATA_BINARY {
160    DWORD dataLength;
161    BYTE *data;
162  } WSMAN_DATA_BINARY;
163
164  typedef struct _WSMAN_DATA {
165    WSManDataType type;
166    __C89_NAMELESS union {
167      WSMAN_DATA_TEXT text;
168      WSMAN_DATA_BINARY binaryData;
169      DWORD number;
170    };
171  } WSMAN_DATA;
172
173  typedef struct _WSMAN_ERROR {
174    DWORD code;
175    PCWSTR errorDetail;
176    PCWSTR language;
177    PCWSTR machineName;
178    PCWSTR pluginName;
179  } WSMAN_ERROR;
180
181  typedef struct _WSMAN_USERNAME_PASSWORD_CREDS {
182    PCWSTR username;
183    PCWSTR password;
184  } WSMAN_USERNAME_PASSWORD_CREDS;
185
186  typedef struct _WSMAN_AUTHENTICATION_CREDENTIALS {
187    DWORD authenticationMechanism;
188    __C89_NAMELESS union {
189      WSMAN_USERNAME_PASSWORD_CREDS userAccount;
190      PCWSTR certificateThumbprint;
191    };
192  } WSMAN_AUTHENTICATION_CREDENTIALS;
193
194  typedef struct _WSMAN_OPTION {
195    PCWSTR name;
196    PCWSTR value;
197    WINBOOL mustComply;
198  } WSMAN_OPTION;
199
200  typedef struct _WSMAN_OPTION_SET {
201    DWORD optionsCount;
202    WSMAN_OPTION *options;
203    WINBOOL optionsMustUnderstand;
204  } WSMAN_OPTION_SET;
205
206  typedef struct _WSMAN_OPTION_SETEX {
207    DWORD optionsCount;
208    WSMAN_OPTION *options;
209    WINBOOL optionsMustUnderstand;
210    PCWSTR *optionTypes;
211  } WSMAN_OPTION_SETEX;
212
213  typedef struct _WSMAN_KEY {
214    PCWSTR key;
215    PCWSTR value;
216  } WSMAN_KEY;
217
218  typedef struct _WSMAN_SELECTOR_SET {
219    DWORD numberKeys;
220    WSMAN_KEY *keys;
221  } WSMAN_SELECTOR_SET;
222
223  typedef struct _WSMAN_FRAGMENT {
224    PCWSTR path;
225    PCWSTR dialect;
226  } WSMAN_FRAGMENT;
227
228  typedef struct _WSMAN_FILTER {
229    PCWSTR filter;
230    PCWSTR dialect;
231  } WSMAN_FILTER;
232
233  typedef struct _WSMAN_OPERATION_INFO {
234    WSMAN_FRAGMENT fragment;
235    WSMAN_FILTER filter;
236    WSMAN_SELECTOR_SET selectorSet;
237    WSMAN_OPTION_SET optionSet;
238    void *reserved;
239    DWORD version;
240  } WSMAN_OPERATION_INFO;
241
242  typedef struct _WSMAN_OPERATION_INFOEX {
243    WSMAN_FRAGMENT fragment;
244    WSMAN_FILTER filter;
245    WSMAN_SELECTOR_SET selectorSet;
246    WSMAN_OPTION_SETEX optionSet;
247    DWORD version;
248    PCWSTR uiLocale;
249    PCWSTR dataLocale;
250  } WSMAN_OPERATION_INFOEX;
251
252  typedef struct _WSMAN_PROXY_INFO {
253    DWORD accessType;
254    WSMAN_AUTHENTICATION_CREDENTIALS authenticationCredentials;
255  } WSMAN_PROXY_INFO;
256
257  typedef struct WSMAN_API *WSMAN_API_HANDLE;
258  typedef struct WSMAN_SESSION *WSMAN_SESSION_HANDLE;
259  typedef struct WSMAN_OPERATION *WSMAN_OPERATION_HANDLE;
260  typedef struct WSMAN_SHELL *WSMAN_SHELL_HANDLE;
261  typedef struct WSMAN_COMMAND *WSMAN_COMMAND_HANDLE;
262
263  typedef struct _WSMAN_STREAM_ID_SET {
264    DWORD streamIDsCount;
265    PCWSTR *streamIDs;
266  } WSMAN_STREAM_ID_SET;
267
268  typedef struct _WSMAN_ENVIRONMENT_VARIABLE {
269    PCWSTR name;
270    PCWSTR value;
271  } WSMAN_ENVIRONMENT_VARIABLE;
272
273  typedef struct _WSMAN_ENVIRONMENT_VARIABLE_SET {
274    DWORD varsCount;
275    WSMAN_ENVIRONMENT_VARIABLE *vars;
276  } WSMAN_ENVIRONMENT_VARIABLE_SET;
277
278  typedef struct _WSMAN_SHELL_STARTUP_INFO_V10 {
279    WSMAN_STREAM_ID_SET *inputStreamSet;
280    WSMAN_STREAM_ID_SET *outputStreamSet;
281    DWORD idleTimeoutMs;
282    PCWSTR workingDirectory;
283    WSMAN_ENVIRONMENT_VARIABLE_SET *variableSet;
284  } WSMAN_SHELL_STARTUP_INFO_V10;
285
286  typedef struct _WSMAN_SHELL_STARTUP_INFO_V11 {
287    WSMAN_STREAM_ID_SET *inputStreamSet;
288    WSMAN_STREAM_ID_SET *outputStreamSet;
289    DWORD idleTimeoutMs;
290    PCWSTR workingDirectory;
291    WSMAN_ENVIRONMENT_VARIABLE_SET *variableSet;
292    PCWSTR name;
293  } WSMAN_SHELL_STARTUP_INFO_V11;
294
295  typedef struct _WSMAN_SHELL_DISCONNECT_INFO {
296    DWORD idleTimeoutMs;
297  } WSMAN_SHELL_DISCONNECT_INFO;
298
299  typedef struct _WSMAN_RECEIVE_DATA_RESULT {
300    PCWSTR streamId;
301    WSMAN_DATA streamData;
302    PCWSTR commandState;
303    DWORD exitCode;
304  } WSMAN_RECEIVE_DATA_RESULT;
305
306#ifdef WSMAN_API_VERSION_1_0
307  typedef WSMAN_SHELL_STARTUP_INFO_V10 WSMAN_SHELL_STARTUP_INFO;
308  typedef void (CALLBACK *WSMAN_SHELL_COMPLETION_FUNCTION) (PVOID operationContext, DWORD flags, WSMAN_ERROR *error, WSMAN_SHELL_HANDLE shell, WSMAN_COMMAND_HANDLE command, WSMAN_OPERATION_HANDLE operationHandle, WSMAN_RECEIVE_DATA_RESULT *data);
309#else
310  typedef WSMAN_SHELL_STARTUP_INFO_V11 WSMAN_SHELL_STARTUP_INFO;
311  typedef void (CALLBACK *WSMAN_SHELL_COMPLETION_FUNCTION) (PVOID operationContext, DWORD flags, WSMAN_ERROR *error, WSMAN_SHELL_HANDLE shell, WSMAN_COMMAND_HANDLE command, WSMAN_OPERATION_HANDLE operationHandle, WSMAN_RESPONSE_DATA *data);
312
313  typedef struct _WSMAN_CONNECT_DATA {
314    WSMAN_DATA data;
315  } WSMAN_CONNECT_DATA;
316
317  typedef struct _WSMAN_CREATE_SHELL_DATA {
318    WSMAN_DATA data;
319  } WSMAN_CREATE_SHELL_DATA;
320
321  typedef union _WSMAN_RESPONSE_DATA {
322    WSMAN_RECEIVE_DATA_RESULT receiveData;
323    WSMAN_CONNECT_DATA connectData;
324    WSMAN_CREATE_SHELL_DATA createData;
325  } WSMAN_RESPONSE_DATA;
326#endif
327
328  typedef struct _WSMAN_SHELL_ASYNC {
329    PVOID operationContext;
330    WSMAN_SHELL_COMPLETION_FUNCTION completionFunction;
331  } WSMAN_SHELL_ASYNC;
332
333  typedef struct _WSMAN_COMMAND_ARG_SET {
334    DWORD argsCount;
335    PCWSTR *args;
336  } WSMAN_COMMAND_ARG_SET;
337
338  typedef struct _WSMAN_CERTIFICATE_DETAILS {
339    PCWSTR subject;
340    PCWSTR issuerName;
341    PCWSTR issuerThumbprint;
342    PCWSTR subjectName;
343  } WSMAN_CERTIFICATE_DETAILS;
344
345  typedef struct _WSMAN_SENDER_DETAILS {
346    PCWSTR senderName;
347    PCWSTR authenticationMechanism;
348    WSMAN_CERTIFICATE_DETAILS *certificateDetails;
349    HANDLE clientToken;
350    PCWSTR httpURL;
351  } WSMAN_SENDER_DETAILS;
352
353  typedef struct _WSMAN_PLUGIN_REQUEST {
354    WSMAN_SENDER_DETAILS *senderDetails;
355    PCWSTR locale;
356    PCWSTR resourceUri;
357    WSMAN_OPERATION_INFO *operationInfo;
358    volatile WINBOOL shutdownNotification;
359    HANDLE shutdownNotificationHandle;
360    PCWSTR dataLocale;
361  } WSMAN_PLUGIN_REQUEST;
362
363  typedef struct _WSMAN_AUTHZ_QUOTA {
364    DWORD maxAllowedConcurrentShells;
365    DWORD maxAllowedConcurrentOperations;
366    DWORD timeslotSize;
367    DWORD maxAllowedOperationsPerTimeslot;
368  } WSMAN_AUTHZ_QUOTA;
369
370  typedef VOID (WINAPI *WSMAN_PLUGIN_RELEASE_SHELL_CONTEXT) (PVOID shellContext);
371  typedef VOID (WINAPI *WSMAN_PLUGIN_RELEASE_COMMAND_CONTEXT) (PVOID shellContext, PVOID commandContext);
372  typedef DWORD (WINAPI *WSMAN_PLUGIN_STARTUP) (DWORD flags, PCWSTR applicationIdentification, PCWSTR extraInfo, PVOID *pluginContext);
373  typedef DWORD (WINAPI *WSMAN_PLUGIN_SHUTDOWN) (PVOID pluginContext, DWORD flags, DWORD reason);
374  typedef VOID (WINAPI *WSMAN_PLUGIN_SHELL) (PVOID pluginContext, WSMAN_PLUGIN_REQUEST *requestDetails, DWORD flags, WSMAN_SHELL_STARTUP_INFO *startupInfo, WSMAN_DATA *inboundShellInformation);
375  typedef VOID (WINAPI *WSMAN_PLUGIN_COMMAND) (WSMAN_PLUGIN_REQUEST *requestDetails, DWORD flags, PVOID shellContext, PCWSTR commandLine, WSMAN_COMMAND_ARG_SET *arguments);
376  typedef VOID (WINAPI *WSMAN_PLUGIN_SEND) (WSMAN_PLUGIN_REQUEST *requestDetails, DWORD flags, PVOID shellContext, PVOID commandContext, PCWSTR stream, WSMAN_DATA *inboundData);
377  typedef VOID (WINAPI *WSMAN_PLUGIN_RECEIVE) (WSMAN_PLUGIN_REQUEST *requestDetails, DWORD flags, PVOID shellContext, PVOID commandContext, WSMAN_STREAM_ID_SET *streamSet);
378  typedef VOID (WINAPI *WSMAN_PLUGIN_SIGNAL) (WSMAN_PLUGIN_REQUEST *requestDetails, DWORD flags, PVOID shellContext, PVOID commandContext, PCWSTR code);
379  typedef VOID (WINAPI *WSMAN_PLUGIN_CONNECT) (WSMAN_PLUGIN_REQUEST *requestDetails, DWORD flags, PVOID shellContext, PVOID commandContext, WSMAN_DATA *inboundConnectInformation);
380  typedef VOID (WINAPI *WSMAN_PLUGIN_AUTHORIZE_USER) (PVOID pluginContext, WSMAN_SENDER_DETAILS *senderDetails, DWORD flags);
381  typedef VOID (WINAPI *WSMAN_PLUGIN_AUTHORIZE_OPERATION) (PVOID pluginContext, WSMAN_SENDER_DETAILS *senderDetails, DWORD flags, DWORD operation, PCWSTR action, PCWSTR resourceUri);
382  typedef VOID (WINAPI *WSMAN_PLUGIN_AUTHORIZE_QUERY_QUOTA) (PVOID pluginContext, WSMAN_SENDER_DETAILS *senderDetails, DWORD flags);
383  typedef VOID (WINAPI *WSMAN_PLUGIN_AUTHORIZE_RELEASE_CONTEXT) (PVOID userAuthorizationContext);
384
385  DWORD WINAPI WSManInitialize (DWORD flags, WSMAN_API_HANDLE *apiHandle);
386  DWORD WINAPI WSManDeinitialize (WSMAN_API_HANDLE apiHandle, DWORD flags);
387  DWORD WINAPI WSManGetErrorMessage (WSMAN_API_HANDLE apiHandle, DWORD flags, PCWSTR languageCode, DWORD errorCode, DWORD messageLength, PWSTR message, DWORD *messageLengthUsed);
388  DWORD WINAPI WSManCreateSession (WSMAN_API_HANDLE apiHandle, PCWSTR connection, DWORD flags, WSMAN_AUTHENTICATION_CREDENTIALS *serverAuthenticationCredentials, WSMAN_PROXY_INFO *proxyInfo, WSMAN_SESSION_HANDLE *session);
389  DWORD WINAPI WSManCloseSession (WSMAN_SESSION_HANDLE session, DWORD flags);
390  DWORD WINAPI WSManSetSessionOption (WSMAN_SESSION_HANDLE session, WSManSessionOption option, WSMAN_DATA *data);
391  DWORD WINAPI WSManGetSessionOptionAsDword (WSMAN_SESSION_HANDLE session, WSManSessionOption option, DWORD *value);
392  DWORD WINAPI WSManGetSessionOptionAsString (WSMAN_SESSION_HANDLE session, WSManSessionOption option, DWORD stringLength, PWSTR string, DWORD *stringLengthUsed);
393  DWORD WINAPI WSManCloseOperation (WSMAN_OPERATION_HANDLE operationHandle, DWORD flags);
394  void WINAPI WSManCreateShell (WSMAN_SESSION_HANDLE session, DWORD flags, PCWSTR resourceUri, WSMAN_SHELL_STARTUP_INFO *startupInfo, WSMAN_OPTION_SET *options, WSMAN_DATA *createXml, WSMAN_SHELL_ASYNC *async, WSMAN_SHELL_HANDLE *shell);
395  void WINAPI WSManRunShellCommand (WSMAN_SHELL_HANDLE shell, DWORD flags, PCWSTR commandLine, WSMAN_COMMAND_ARG_SET *args, WSMAN_OPTION_SET *options, WSMAN_SHELL_ASYNC *async, WSMAN_COMMAND_HANDLE *command);
396  void WINAPI WSManSignalShell (WSMAN_SHELL_HANDLE shell, WSMAN_COMMAND_HANDLE command, DWORD flags, PCWSTR code, WSMAN_SHELL_ASYNC *async, WSMAN_OPERATION_HANDLE *signalOperation);
397  void WINAPI WSManReceiveShellOutput (WSMAN_SHELL_HANDLE shell, WSMAN_COMMAND_HANDLE command, DWORD flags, WSMAN_STREAM_ID_SET *desiredStreamSet, WSMAN_SHELL_ASYNC *async, WSMAN_OPERATION_HANDLE *receiveOperation);
398  void WINAPI WSManSendShellInput (WSMAN_SHELL_HANDLE shell, WSMAN_COMMAND_HANDLE command, DWORD flags, PCWSTR streamId, WSMAN_DATA *streamData, WINBOOL endOfStream, WSMAN_SHELL_ASYNC *async, WSMAN_OPERATION_HANDLE *sendOperation);
399  void WINAPI WSManCloseCommand (WSMAN_COMMAND_HANDLE commandHandle, DWORD flags, WSMAN_SHELL_ASYNC *async);
400  void WINAPI WSManCloseShell (WSMAN_SHELL_HANDLE shellHandle, DWORD flags, WSMAN_SHELL_ASYNC *async);
401  DWORD WINAPI WSManPluginReportContext (WSMAN_PLUGIN_REQUEST *requestDetails, DWORD flags, PVOID context);
402  DWORD WINAPI WSManPluginReceiveResult (WSMAN_PLUGIN_REQUEST *requestDetails, DWORD flags, PCWSTR stream, WSMAN_DATA *streamResult, PCWSTR commandState, DWORD exitCode);
403  DWORD WINAPI WSManPluginOperationComplete (WSMAN_PLUGIN_REQUEST *requestDetails, DWORD flags, DWORD errorCode, PCWSTR extendedInformation);
404  DWORD WINAPI WSManPluginGetOperationParameters (WSMAN_PLUGIN_REQUEST *requestDetails, DWORD flags, WSMAN_DATA *data);
405  DWORD WINAPI WSManPluginGetConfiguration (PVOID pluginContext, DWORD flags, WSMAN_DATA *data);
406  DWORD WINAPI WSManPluginReportCompletion (PVOID pluginContext, DWORD flags);
407  DWORD WINAPI WSManPluginFreeRequestDetails (WSMAN_PLUGIN_REQUEST *requestDetails);
408  DWORD WINAPI WSManPluginAuthzUserComplete (WSMAN_SENDER_DETAILS *senderDetails, DWORD flags, PVOID userAuthorizationContext, HANDLE impersonationToken, WINBOOL userIsAdministrator, DWORD errorCode, PCWSTR extendedErrorInformation);
409  DWORD WINAPI WSManPluginAuthzOperationComplete (WSMAN_SENDER_DETAILS *senderDetails, DWORD flags, PVOID userAuthorizationContext, DWORD errorCode, PCWSTR extendedErrorInformation);
410  DWORD WINAPI WSManPluginAuthzQueryQuotaComplete (WSMAN_SENDER_DETAILS *senderDetails, DWORD flags, WSMAN_AUTHZ_QUOTA *quota, DWORD errorCode, PCWSTR extendedErrorInformation);
411#ifdef WSMAN_API_VERSION_1_1
412  void WINAPI WSManCreateShellEx (WSMAN_SESSION_HANDLE session, DWORD flags, PCWSTR resourceUri, PCWSTR shellId, WSMAN_SHELL_STARTUP_INFO *startupInfo, WSMAN_OPTION_SET *options, WSMAN_DATA *createXml, WSMAN_SHELL_ASYNC *async, WSMAN_SHELL_HANDLE *shell);
413  void WINAPI WSManRunShellCommandEx (WSMAN_SHELL_HANDLE shell, DWORD flags, PCWSTR commandId, PCWSTR commandLine, WSMAN_COMMAND_ARG_SET *args, WSMAN_OPTION_SET *options, WSMAN_SHELL_ASYNC *async, WSMAN_COMMAND_HANDLE *command);
414  void WINAPI WSManDisconnectShell (WSMAN_SHELL_HANDLE shell, DWORD flags, WSMAN_SHELL_DISCONNECT_INFO *disconnectInfo, WSMAN_SHELL_ASYNC *async);
415  void WINAPI WSManReconnectShell (WSMAN_SHELL_HANDLE shell, DWORD flags, WSMAN_SHELL_ASYNC *async);
416  void WINAPI WSManReconnectShellCommand (WSMAN_COMMAND_HANDLE commandHandle, DWORD flags, WSMAN_SHELL_ASYNC *async);
417  void WINAPI WSManConnectShell (WSMAN_SESSION_HANDLE session, DWORD flags, PCWSTR resourceUri, PCWSTR shellID, WSMAN_OPTION_SET *options, WSMAN_DATA *connectXml, WSMAN_SHELL_ASYNC *async, WSMAN_SHELL_HANDLE *shell);
418  void WINAPI WSManConnectShellCommand (WSMAN_SHELL_HANDLE shell, DWORD flags, PCWSTR commandID, WSMAN_OPTION_SET *options, WSMAN_DATA *connectXml, WSMAN_SHELL_ASYNC *async, WSMAN_COMMAND_HANDLE *command);
419#endif
420
421#ifdef __cplusplus
422}
423#endif
424
425#endif
426#endif
427