wsman.h 18 KB

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