webservices: Add support for reading GUID values.
[wine.git] / include / webservices.h
blob78d53bc49bb5e11fbb84703edef10329dbf3bb92
1 /*
2 * Copyright 2015 Nikolay Sivov for CodeWeavers
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 #ifndef __WINE_WEBSERVICES_H
20 #define __WINE_WEBSERVICES_H
22 #ifdef __cplusplus
23 extern "C" {
24 #endif /* __cplusplus */
26 typedef struct _WS_ERROR WS_ERROR;
27 typedef struct _WS_HEAP WS_HEAP;
28 typedef struct _WS_XML_BUFFER WS_XML_BUFFER;
29 typedef struct _WS_XML_READER WS_XML_READER;
30 typedef struct _WS_XML_WRITER WS_XML_WRITER;
31 typedef struct _WS_PROXY_PROPERTY WS_PROXY_PROPERTY;
32 typedef struct _WS_SECURITY_DESCRIPTION WS_SECURITY_DESCRIPTION;
33 typedef struct _WS_CHANNEL_PROPERTY WS_CHANNEL_PROPERTY;
34 typedef struct _WS_SERVICE_PROXY WS_SERVICE_PROXY;
35 typedef struct _WS_SECURITY_BINDING_PROPERTY WS_SECURITY_BINDING_PROPERTY;
36 typedef struct _WS_SECURITY_PROPERTY WS_SECURITY_PROPERTY;
37 typedef struct _WS_SECURITY_PROPERTIES WS_SECURITY_PROPERTIES;
38 typedef struct _WS_SECURITY_BINDING WS_SECURITY_BINDING;
39 typedef struct _WS_CHANNEL WS_CHANNEL;
40 typedef struct _WS_MESSAGE_PROPERTY WS_MESSAGE_PROPERTY;
41 typedef struct _WS_MESSAGE_PROPERTIES WS_MESSAGE_PROPERTIES;
42 typedef struct _WS_HTTP_BINDING_TEMPLATE WS_HTTP_BINDING_TEMPLATE;
43 typedef struct _WS_HTTP_SSL_BINDING_TEMPLATE WS_HTTP_SSL_BINDING_TEMPLATE;
44 typedef struct _WS_CHANNEL_PROPERTIES WS_CHANNEL_PROPERTIES;
45 typedef struct _WS_SSL_TRANSPORT_SECURITY_BINDING_TEMPLATE WS_SSL_TRANSPORT_SECURITY_BINDING_TEMPLATE;
46 typedef struct _WS_SECURITY_BINDING_PROPERTIES WS_SECURITY_BINDING_PROPERTIES;
47 typedef struct _WS_CERT_CREDENTIAL WS_CERT_CREDENTIAL;
48 typedef struct _WS_ENDPOINT_ADDRESS WS_ENDPOINT_ADDRESS;
49 typedef struct _WS_ENDPOINT_IDENTITY WS_ENDPOINT_IDENTITY;
50 typedef struct _WS_ENUM_DESCRIPTION WS_ENUM_DESCRIPTION;
51 typedef struct _WS_ENUM_VALUE WS_ENUM_VALUE;
52 typedef struct _WS_HTTP_POLICY_DESCRIPTION WS_HTTP_POLICY_DESCRIPTION;
53 typedef struct _WS_MESSAGE WS_MESSAGE;
54 typedef struct _WS_MESSAGE_DESCRIPTION WS_MESSAGE_DESCRIPTION;
55 typedef struct _WS_OPERATION_DESCRIPTION WS_OPERATION_DESCRIPTION;
56 typedef struct _WS_PARAMETER_DESCRIPTION WS_PARAMETER_DESCRIPTION;
57 typedef struct _WS_OPERATION_CONTEXT WS_OPERATION_CONTEXT;
58 typedef struct _WS_CALL_PROPERTY WS_CALL_PROPERTY;
59 typedef struct _WS_DOUBLE_DESCRIPTION WS_DOUBLE_DESCRIPTION;
60 typedef struct _WS_DATETIME WS_DATETIME;
61 typedef struct _WS_DATETIME_DESCRIPTION WS_DATETIME_DESCRIPTION;
62 typedef struct _WS_GUID_DESCRIPTION WS_GUID_DESCRIPTION;
63 typedef struct _WS_URL WS_URL;
64 typedef struct _WS_HTTP_URL WS_HTTP_URL;
65 typedef struct _WS_HTTPS_URL WS_HTTPS_URL;
66 typedef struct _WS_NETTCP_URL WS_NETTCP_URL;
67 typedef struct _WS_SOAPUDP_URL WS_SOAPUDP_URL;
68 typedef struct _WS_NETPIPE_URL WS_NETPIPE_URL;
70 struct _WS_STRUCT_DESCRIPTION;
71 struct _WS_XML_STRING;
73 typedef enum {
74 WS_ERROR_PROPERTY_STRING_COUNT,
75 WS_ERROR_PROPERTY_ORIGINAL_ERROR_CODE,
76 WS_ERROR_PROPERTY_LANGID
77 } WS_ERROR_PROPERTY_ID;
79 typedef struct _WS_ERROR_PROPERTY {
80 WS_ERROR_PROPERTY_ID id;
81 void *value;
82 ULONG valueSize;
83 } WS_ERROR_PROPERTY;
85 typedef enum {
86 WS_HEAP_PROPERTY_MAX_SIZE,
87 WS_HEAP_PROPERTY_TRIM_SIZE,
88 WS_HEAP_PROPERTY_REQUESTED_SIZE,
89 WS_HEAP_PROPERTY_ACTUAL_SIZE
90 } WS_HEAP_PROPERTY_ID;
92 typedef struct _WS_HEAP_PROPERTY {
93 WS_HEAP_PROPERTY_ID id;
94 void *value;
95 ULONG valueSize;
96 } WS_HEAP_PROPERTY;
98 typedef ULONG WS_XML_BUFFER_PROPERTY_ID;
100 typedef struct _WS_XML_BUFFER_PROPERTY {
101 WS_XML_BUFFER_PROPERTY_ID id;
102 void *value;
103 ULONG valueSize;
104 } WS_XML_BUFFER_PROPERTY;
106 typedef enum {
107 WS_XML_READER_PROPERTY_MAX_DEPTH,
108 WS_XML_READER_PROPERTY_ALLOW_FRAGMENT,
109 WS_XML_READER_PROPERTY_MAX_ATTRIBUTES,
110 WS_XML_READER_PROPERTY_READ_DECLARATION,
111 WS_XML_READER_PROPERTY_CHARSET,
112 WS_XML_READER_PROPERTY_ROW,
113 WS_XML_READER_PROPERTY_COLUMN,
114 WS_XML_READER_PROPERTY_UTF8_TRIM_SIZE,
115 WS_XML_READER_PROPERTY_STREAM_BUFFER_SIZE,
116 WS_XML_READER_PROPERTY_IN_ATTRIBUTE,
117 WS_XML_READER_PROPERTY_STREAM_MAX_ROOT_MIME_PART_SIZE,
118 WS_XML_READER_PROPERTY_STREAM_MAX_MIME_HEADERS_SIZE,
119 WS_XML_READER_PROPERTY_MAX_MIME_PARTS,
120 WS_XML_READER_PROPERTY_ALLOW_INVALID_CHARACTER_REFERENCES,
121 WS_XML_READER_PROPERTY_MAX_NAMESPACES
122 } WS_XML_READER_PROPERTY_ID;
124 typedef struct _WS_XML_READER_PROPERTY {
125 WS_XML_READER_PROPERTY_ID id;
126 void *value;
127 ULONG valueSize;
128 } WS_XML_READER_PROPERTY;
130 typedef enum {
131 WS_XML_WRITER_PROPERTY_MAX_DEPTH,
132 WS_XML_WRITER_PROPERTY_ALLOW_FRAGMENT,
133 WS_XML_WRITER_PROPERTY_MAX_ATTRIBUTES,
134 WS_XML_WRITER_PROPERTY_WRITE_DECLARATION,
135 WS_XML_WRITER_PROPERTY_INDENT,
136 WS_XML_WRITER_PROPERTY_BUFFER_TRIM_SIZE,
137 WS_XML_WRITER_PROPERTY_CHARSET,
138 WS_XML_WRITER_PROPERTY_BUFFERS,
139 WS_XML_WRITER_PROPERTY_BUFFER_MAX_SIZE,
140 WS_XML_WRITER_PROPERTY_BYTES,
141 WS_XML_WRITER_PROPERTY_IN_ATTRIBUTE,
142 WS_XML_WRITER_PROPERTY_MAX_MIME_PARTS_BUFFER_SIZE,
143 WS_XML_WRITER_PROPERTY_INITIAL_BUFFER,
144 WS_XML_WRITER_PROPERTY_ALLOW_INVALID_CHARACTER_REFERENCES,
145 WS_XML_WRITER_PROPERTY_MAX_NAMESPACES,
146 WS_XML_WRITER_PROPERTY_BYTES_WRITTEN,
147 WS_XML_WRITER_PROPERTY_BYTES_TO_CLOSE,
148 WS_XML_WRITER_PROPERTY_COMPRESS_EMPTY_ELEMENTS,
149 WS_XML_WRITER_PROPERTY_EMIT_UNCOMPRESSED_EMPTY_ELEMENTS
150 } WS_XML_WRITER_PROPERTY_ID;
152 typedef struct _WS_XML_WRITER_PROPERTY {
153 WS_XML_WRITER_PROPERTY_ID id;
154 void *value;
155 ULONG valueSize;
156 } WS_XML_WRITER_PROPERTY;
158 typedef struct _WS_BYTES {
159 ULONG length;
160 BYTE *bytes;
161 } WS_BYTES;
163 typedef struct _WS_BUFFERS {
164 ULONG bufferCount;
165 WS_BYTES *buffers;
166 } WS_BUFFERS;
168 typedef enum {
169 WS_XML_READER_ENCODING_TYPE_TEXT = 1,
170 WS_XML_READER_ENCODING_TYPE_BINARY = 2,
171 WS_XML_READER_ENCODING_TYPE_MTOM = 3,
172 WS_XML_READER_ENCODING_TYPE_RAW = 4
173 } WS_XML_READER_ENCODING_TYPE;
175 typedef struct _WS_XML_READER_ENCODING {
176 WS_XML_READER_ENCODING_TYPE encodingType;
177 } WS_XML_READER_ENCODING;
179 typedef enum {
180 WS_XML_WRITER_ENCODING_TYPE_TEXT = 1,
181 WS_XML_WRITER_ENCODING_TYPE_BINARY = 2,
182 WS_XML_WRITER_ENCODING_TYPE_MTOM = 3,
183 WS_XML_WRITER_ENCODING_TYPE_RAW = 4
184 } WS_XML_WRITER_ENCODING_TYPE;
186 typedef struct _WS_XML_WRITER_ENCODING {
187 WS_XML_WRITER_ENCODING_TYPE encodingType;
188 } WS_XML_WRITER_ENCODING;
190 typedef enum {
191 WS_CHARSET_AUTO,
192 WS_CHARSET_UTF8,
193 WS_CHARSET_UTF16LE,
194 WS_CHARSET_UTF16BE
195 } WS_CHARSET;
197 typedef struct _WS_XML_READER_TEXT_ENCODING {
198 WS_XML_READER_ENCODING encoding;
199 WS_CHARSET charSet;
200 } WS_XML_READER_TEXT_ENCODING;
202 typedef struct _WS_XML_WRITER_TEXT_ENCODING {
203 WS_XML_WRITER_ENCODING encoding;
204 WS_CHARSET charSet;
205 } WS_XML_WRITER_TEXT_ENCODING;
207 typedef enum {
208 WS_XML_READER_INPUT_TYPE_BUFFER = 1,
209 WS_XML_READER_INPUT_TYPE_STREAM = 2
210 } WS_XML_READER_INPUT_TYPE;
212 typedef enum {
213 WS_XML_WRITER_OUTPUT_TYPE_BUFFER = 1,
214 WS_XML_WRITER_OUTPUT_TYPE_STREAM = 2
215 } WS_XML_WRITER_OUTPUT_TYPE;
217 typedef struct _WS_XML_READER_INPUT {
218 WS_XML_READER_INPUT_TYPE inputType;
219 } WS_XML_READER_INPUT;
221 typedef struct _WS_XML_WRITER_OUTPUT {
222 WS_XML_WRITER_OUTPUT_TYPE outputType;
223 } WS_XML_WRITER_OUTPUT;
225 typedef struct _WS_XML_READER_BUFFER_INPUT {
226 WS_XML_READER_INPUT input;
227 void *encodedData;
228 ULONG encodedDataSize;
229 } WS_XML_READER_BUFFER_INPUT;
231 typedef struct _WS_XML_WRITER_BUFFER_OUTPUT {
232 WS_XML_WRITER_OUTPUT output;
233 } WS_XML_WRITER_BUFFER_OUTPUT;
235 typedef enum {
236 WS_SHORT_CALLBACK,
237 WS_LONG_CALLBACK
238 } WS_CALLBACK_MODEL;
240 typedef void (CALLBACK *WS_ASYNC_CALLBACK)
241 (HRESULT, WS_CALLBACK_MODEL, void *);
243 typedef struct _WS_ASYNC_CONTEXT {
244 WS_ASYNC_CALLBACK callback;
245 void *callbackState;
246 } WS_ASYNC_CONTEXT;
248 typedef HRESULT (CALLBACK *WS_READ_CALLBACK)
249 (void*, void*, ULONG, ULONG*, const WS_ASYNC_CONTEXT*, WS_ERROR*);
251 typedef struct _WS_XML_READER_STREAM_INPUT {
252 WS_XML_READER_INPUT input;
253 WS_READ_CALLBACK readCallback;
254 void *readCallbackState;
255 } WS_XML_READER_STREAM_INPUT;
257 typedef struct _WS_XML_DICTIONARY {
258 GUID guid;
259 struct _WS_XML_STRING *strings;
260 ULONG stringCount;
261 BOOL isConst;
262 } WS_XML_DICTIONARY;
264 typedef struct _WS_XML_STRING {
265 ULONG length;
266 BYTE *bytes;
267 WS_XML_DICTIONARY *dictionary;
268 ULONG id;
269 } WS_XML_STRING;
271 typedef enum {
272 WS_ELEMENT_TYPE_MAPPING = 1,
273 WS_ATTRIBUTE_TYPE_MAPPING = 2,
274 WS_ELEMENT_CONTENT_TYPE_MAPPING = 3,
275 WS_ANY_ELEMENT_TYPE_MAPPING = 4
276 } WS_TYPE_MAPPING;
278 typedef enum {
279 WS_BOOL_TYPE,
280 WS_INT8_TYPE,
281 WS_INT16_TYPE,
282 WS_INT32_TYPE,
283 WS_INT64_TYPE,
284 WS_UINT8_TYPE,
285 WS_UINT16_TYPE,
286 WS_UINT32_TYPE,
287 WS_UINT64_TYPE,
288 WS_FLOAT_TYPE,
289 WS_DOUBLE_TYPE,
290 WS_DECIMAL_TYPE,
291 WS_DATETIME_TYPE,
292 WS_TIMESPAN_TYPE,
293 WS_GUID_TYPE,
294 WS_UNIQUE_ID_TYPE,
295 WS_STRING_TYPE,
296 WS_WSZ_TYPE,
297 WS_BYTES_TYPE,
298 WS_XML_STRING_TYPE,
299 WS_XML_QNAME_TYPE,
300 WS_XML_BUFFER_TYPE,
301 WS_CHAR_ARRAY_TYPE,
302 WS_UTF8_ARRAY_TYPE,
303 WS_BYTE_ARRAY_TYPE,
304 WS_DESCRIPTION_TYPE,
305 WS_STRUCT_TYPE,
306 WS_CUSTOM_TYPE,
307 WS_ENDPOINT_ADDRESS_TYPE,
308 WS_FAULT_TYPE,
309 WS_VOID_TYPE,
310 WS_ENUM_TYPE,
311 WS_DURATION_TYPE,
312 WS_UNION_TYPE,
313 WS_ANY_ATTRIBUTES_TYPE
314 } WS_TYPE;
316 typedef enum {
317 WS_READ_REQUIRED_VALUE = 1,
318 WS_READ_REQUIRED_POINTER = 2,
319 WS_READ_OPTIONAL_POINTER = 3,
320 WS_READ_NILLABLE_POINTER = 4,
321 WS_READ_NILLABLE_VALUE = 5
322 } WS_READ_OPTION;
324 typedef enum {
325 WS_WRITE_REQUIRED_VALUE = 1,
326 WS_WRITE_REQUIRED_POINTER = 2,
327 WS_WRITE_NILLABLE_VALUE = 3,
328 WS_WRITE_NILLABLE_POINTER = 4
329 } WS_WRITE_OPTION;
331 typedef struct _WS_BOOL_DESCRIPTION {
332 BOOL value;
333 } WS_BOOL_DESCRIPTION;
335 typedef struct _WS_INT8_DESCRIPTION {
336 char minValue;
337 char maxValue;
338 } WS_INT8_DESCRIPTION;
340 typedef struct _WS_INT16_DESCRIPTION {
341 short minValue;
342 short maxValue;
343 } WS_INT16_DESCRIPTION;
345 typedef struct _WS_INT32_DESCRIPTION {
346 int minValue;
347 int maxValue;
348 } WS_INT32_DESCRIPTION;
350 typedef struct _WS_INT64_DESCRIPTION {
351 __int64 minValue;
352 __int64 maxValue;
353 } WS_INT64_DESCRIPTION;
355 typedef struct _WS_UINT8_DESCRIPTION {
356 BYTE minValue;
357 BYTE maxValue;
358 } WS_UINT8_DESCRIPTION;
360 typedef struct _WS_UINT16_DESCRIPTION {
361 USHORT minValue;
362 USHORT maxValue;
363 } WS_UINT16_DESCRIPTION;
365 typedef struct _WS_UINT32_DESCRIPTION {
366 ULONG minValue;
367 ULONG maxValue;
368 } WS_UINT32_DESCRIPTION;
370 typedef struct _WS_UINT64_DESCRIPTION {
371 unsigned __int64 minValue;
372 unsigned __int64 maxValue;
373 } WS_UINT64_DESCRIPTION;
375 typedef struct _WS_WSZ_DESCRIPTION {
376 ULONG minCharCount;
377 ULONG maxCharCount;
378 } WS_WSZ_DESCRIPTION;
380 struct _WS_ENUM_VALUE {
381 int value;
382 WS_XML_STRING *name;
385 struct _WS_ENUM_DESCRIPTION {
386 WS_ENUM_VALUE *values;
387 ULONG valueCount;
388 ULONG maxByteCount;
389 ULONG *nameIndices;
392 struct _WS_DOUBLE_DESCRIPTION {
393 double minValue;
394 double maxValue;
397 typedef enum {
398 WS_TYPE_ATTRIBUTE_FIELD_MAPPING,
399 WS_ATTRIBUTE_FIELD_MAPPING,
400 WS_ELEMENT_FIELD_MAPPING,
401 WS_REPEATING_ELEMENT_FIELD_MAPPING,
402 WS_TEXT_FIELD_MAPPING,
403 WS_NO_FIELD_MAPPING,
404 WS_XML_ATTRIBUTE_FIELD_MAPPING,
405 WS_ELEMENT_CHOICE_FIELD_MAPPING,
406 WS_REPEATING_ELEMENT_CHOICE_FIELD_MAPPING,
407 WS_ANY_ELEMENT_FIELD_MAPPING,
408 WS_REPEATING_ANY_ELEMENT_FIELD_MAPPING,
409 WS_ANY_CONTENT_FIELD_MAPPING,
410 WS_ANY_ATTRIBUTES_FIELD_MAPPING
411 } WS_FIELD_MAPPING;
413 typedef struct _WS_DEFAULT_VALUE {
414 void *value;
415 ULONG valueSize;
416 } WS_DEFAULT_VALUE;
418 typedef struct _WS_ITEM_RANGE {
419 ULONG minItemCount;
420 ULONG maxItemCount;
421 } WS_ITEM_RANGE;
423 enum
425 WS_FIELD_POINTER = 0x1,
426 WS_FIELD_OPTIONAL = 0x2,
427 WS_FIELD_NILLABLE = 0x4,
428 WS_FIELD_NILLABLE_ITEM = 0x8,
429 WS_FIELD_OTHER_NAMESPACE = 0x10
432 typedef struct _WS_FIELD_DESCRIPTION {
433 WS_FIELD_MAPPING mapping;
434 WS_XML_STRING *localName;
435 WS_XML_STRING *ns;
436 WS_TYPE type;
437 void *typeDescription;
438 ULONG offset;
439 ULONG options;
440 WS_DEFAULT_VALUE *defaultValue;
441 ULONG countOffset;
442 WS_XML_STRING *itemLocalName;
443 WS_XML_STRING *itemNs;
444 WS_ITEM_RANGE *itemRange;
445 } WS_FIELD_DESCRIPTION;
447 enum
449 WS_STRUCT_ABSTRACT = 0x1,
450 WS_STRUCT_IGNORE_TRAILING_ELEMENT_CONTENT = 0x2,
451 WS_STRUCT_IGNORE_UNHANDLED_ATTRIBUTES = 0x4
454 typedef struct _WS_STRUCT_DESCRIPTION {
455 ULONG size;
456 ULONG alignment;
457 WS_FIELD_DESCRIPTION **fields;
458 ULONG fieldCount;
459 WS_XML_STRING *typeLocalName;
460 WS_XML_STRING *typeNs;
461 struct _WS_STRUCT_DESCRIPTION *parentType;
462 struct _WS_STRUCT_DESCRIPTION **subTypes;
463 ULONG subTypeCount;
464 ULONG structOptions;
465 } WS_STRUCT_DESCRIPTION;
467 typedef struct _WS_ATTRIBUTE_DESCRIPTION {
468 WS_XML_STRING *attributeLocalName;
469 WS_XML_STRING *attributeNs;
470 WS_TYPE type;
471 void *typeDescription;
472 } WS_ATTRIBUTE_DESCRIPTION;
474 typedef struct _WS_ELEMENT_DESCRIPTION {
475 WS_XML_STRING *elementLocalName;
476 WS_XML_STRING *elementNs;
477 WS_TYPE type;
478 void *typeDescription;
479 } WS_ELEMENT_DESCRIPTION;
481 typedef struct _WS_STRING {
482 ULONG length;
483 WCHAR *chars;
484 } WS_STRING;
486 typedef enum {
487 WS_XML_NODE_TYPE_ELEMENT = 1,
488 WS_XML_NODE_TYPE_TEXT = 2,
489 WS_XML_NODE_TYPE_END_ELEMENT = 3,
490 WS_XML_NODE_TYPE_COMMENT = 4,
491 WS_XML_NODE_TYPE_CDATA = 6,
492 WS_XML_NODE_TYPE_END_CDATA = 7,
493 WS_XML_NODE_TYPE_EOF = 8,
494 WS_XML_NODE_TYPE_BOF = 9
495 } WS_XML_NODE_TYPE;
497 typedef struct _WS_XML_NODE {
498 WS_XML_NODE_TYPE nodeType;
499 } WS_XML_NODE;
501 typedef enum {
502 WS_MOVE_TO_ROOT_ELEMENT,
503 WS_MOVE_TO_NEXT_ELEMENT,
504 WS_MOVE_TO_PREVIOUS_ELEMENT,
505 WS_MOVE_TO_CHILD_ELEMENT,
506 WS_MOVE_TO_END_ELEMENT,
507 WS_MOVE_TO_PARENT_ELEMENT,
508 WS_MOVE_TO_NEXT_NODE,
509 WS_MOVE_TO_PREVIOUS_NODE,
510 WS_MOVE_TO_FIRST_NODE,
511 WS_MOVE_TO_BOF,
512 WS_MOVE_TO_EOF,
513 WS_MOVE_TO_CHILD_NODE
514 } WS_MOVE_TO;
516 typedef enum {
517 WS_XML_TEXT_TYPE_UTF8 = 1,
518 WS_XML_TEXT_TYPE_UTF16 = 2,
519 WS_XML_TEXT_TYPE_BASE64 = 3,
520 WS_XML_TEXT_TYPE_BOOL = 4,
521 WS_XML_TEXT_TYPE_INT32 = 5,
522 WS_XML_TEXT_TYPE_INT64 = 6,
523 WS_XML_TEXT_TYPE_UINT64 = 7,
524 WS_XML_TEXT_TYPE_FLOAT = 8,
525 WS_XML_TEXT_TYPE_DOUBLE = 9,
526 WS_XML_TEXT_TYPE_DECIMAL = 10,
527 WS_XML_TEXT_TYPE_GUID = 11,
528 WS_XML_TEXT_TYPE_UNIQUE_ID = 12,
529 WS_XML_TEXT_TYPE_DATETIME = 13,
530 WS_XML_TEXT_TYPE_TIMESPAN = 14,
531 WS_XML_TEXT_TYPE_QNAME = 15,
532 WS_XML_TEXT_TYPE_LIST = 16
533 } WS_XML_TEXT_TYPE;
535 typedef struct _WS_XML_TEXT {
536 WS_XML_TEXT_TYPE textType;
537 } WS_XML_TEXT;
539 typedef struct _WS_XML_UTF8_TEXT {
540 WS_XML_TEXT text;
541 WS_XML_STRING value;
542 } WS_XML_UTF8_TEXT;
544 typedef enum {
545 WS_BOOL_VALUE_TYPE,
546 WS_INT8_VALUE_TYPE,
547 WS_INT16_VALUE_TYPE,
548 WS_INT32_VALUE_TYPE,
549 WS_INT64_VALUE_TYPE,
550 WS_UINT8_VALUE_TYPE,
551 WS_UINT16_VALUE_TYPE,
552 WS_UINT32_VALUE_TYPE,
553 WS_UINT64_VALUE_TYPE,
554 WS_FLOAT_VALUE_TYPE,
555 WS_DOUBLE_VALUE_TYPE,
556 WS_DECIMAL_VALUE_TYPE,
557 WS_DATETIME_VALUE_TYPE,
558 WS_TIMESPAN_VALUE_TYPE,
559 WS_GUID_VALUE_TYPE,
560 WS_DURATION_VALUE_TYPE
561 } WS_VALUE_TYPE;
563 typedef struct _WS_XML_ATTRIBUTE {
564 BYTE singleQuote;
565 BYTE isXmlNs;
566 WS_XML_STRING *prefix;
567 WS_XML_STRING *localName;
568 WS_XML_STRING *ns;
569 WS_XML_TEXT *value;
570 } WS_XML_ATTRIBUTE;
572 typedef struct _WS_XML_ELEMENT_NODE {
573 WS_XML_NODE node;
574 WS_XML_STRING *prefix;
575 WS_XML_STRING *localName;
576 WS_XML_STRING *ns;
577 ULONG attributeCount;
578 WS_XML_ATTRIBUTE **attributes;
579 BOOL isEmpty;
580 } WS_XML_ELEMENT_NODE;
582 typedef struct _WS_XML_TEXT_NODE {
583 WS_XML_NODE node;
584 WS_XML_TEXT *text;
585 } WS_XML_TEXT_NODE;
587 typedef struct _WS_XML_COMMENT_NODE {
588 WS_XML_NODE node;
589 WS_XML_STRING value;
590 } WS_XML_COMMENT_NODE;
592 typedef struct _WS_XML_NODE_POSITION {
593 WS_XML_BUFFER *buffer;
594 void *node;
595 } WS_XML_NODE_POSITION;
597 typedef enum {
598 WS_SERVICE_PROXY_STATE_CREATED,
599 WS_SERVICE_PROXY_STATE_OPENING,
600 WS_SERVICE_PROXY_STATE_OPEN,
601 WS_SERVICE_PROXY_STATE_CLOSING,
602 WS_SERVICE_PROXY_STATE_CLOSED,
603 WS_SERVICE_PROXY_STATE_FAULTED
604 } WS_SERVICE_PROXY_STATE;
606 typedef enum {
607 WS_PROXY_PROPERTY_CALL_TIMEOUT,
608 WS_PROXY_PROPERTY_MESSAGE_PROPERTIES,
609 WS_PROXY_PROPERTY_MAX_CALL_POOL_SIZE,
610 WS_PROXY_PROPERTY_STATE,
611 WS_PROXY_PROPERTY_MAX_PENDING_CALLS,
612 WS_PROXY_PROPERTY_MAX_CLOSE_TIMEOUT,
613 WS_PROXY_FAULT_LANG_ID
614 } WS_PROXY_PROPERTY_ID;
616 struct _WS_PROXY_PROPERTY {
617 WS_PROXY_PROPERTY_ID id;
618 void *value;
619 ULONG valueSize;
622 typedef enum {
623 WS_CHANNEL_TYPE_INPUT = 0x1,
624 WS_CHANNEL_TYPE_OUTPUT = 0x2,
625 WS_CHANNEL_TYPE_SESSION = 0x4,
626 WS_CHANNEL_TYPE_INPUT_SESSION = (WS_CHANNEL_TYPE_INPUT | WS_CHANNEL_TYPE_SESSION),
627 WS_CHANNEL_TYPE_OUTPUT_SESSION = (WS_CHANNEL_TYPE_OUTPUT | WS_CHANNEL_TYPE_SESSION),
628 WS_CHANNEL_TYPE_DUPLEX = (WS_CHANNEL_TYPE_INPUT | WS_CHANNEL_TYPE_OUTPUT),
629 WS_CHANNEL_TYPE_DUPLEX_SESSION = (WS_CHANNEL_TYPE_INPUT | WS_CHANNEL_TYPE_OUTPUT | WS_CHANNEL_TYPE_SESSION),
630 WS_CHANNEL_TYPE_REQUEST = 0x8,
631 WS_CHANNEL_TYPE_REPLY = 0x10
632 } WS_CHANNEL_TYPE;
634 typedef enum {
635 WS_ENCODING_XML_BINARY_1,
636 WS_ENCODING_XML_BINARY_SESSION_1,
637 WS_ENCODING_XML_MTOM_UTF8,
638 WS_ENCODING_XML_MTOM_UTF16BE,
639 WS_ENCODING_XML_MTOM_UTF16LE,
640 WS_ENCODING_XML_UTF8,
641 WS_ENCODING_XML_UTF16BE,
642 WS_ENCODING_XML_UTF16LE,
643 WS_ENCODING_RAW
644 } WS_ENCODING;
646 typedef enum {
647 WS_CHANNEL_STATE_CREATED,
648 WS_CHANNEL_STATE_OPENING,
649 WS_CHANNEL_STATE_ACCEPTING,
650 WS_CHANNEL_STATE_OPEN,
651 WS_CHANNEL_STATE_FAULTED,
652 WS_CHANNEL_STATE_CLOSING,
653 WS_CHANNEL_STATE_CLOSED
654 } WS_CHANNEL_STATE;
656 typedef enum {
657 WS_CHANNEL_PROPERTY_MAX_BUFFERED_MESSAGE_SIZE = 0,
658 WS_CHANNEL_PROPERTY_MAX_STREAMED_MESSAGE_SIZE = 1,
659 WS_CHANNEL_PROPERTY_MAX_STREAMED_START_SIZE = 2,
660 WS_CHANNEL_PROPERTY_MAX_STREAMED_FLUSH_SIZE = 3,
661 WS_CHANNEL_PROPERTY_ENCODING = 4,
662 WS_CHANNEL_PROPERTY_ENVELOPE_VERSION = 5,
663 WS_CHANNEL_PROPERTY_ADDRESSING_VERSION = 6,
664 WS_CHANNEL_PROPERTY_MAX_SESSION_DICTIONARY_SIZE = 7,
665 WS_CHANNEL_PROPERTY_STATE = 8,
666 WS_CHANNEL_PROPERTY_ASYNC_CALLBACK_MODEL = 9,
667 WS_CHANNEL_PROPERTY_IP_VERSION = 10,
668 WS_CHANNEL_PROPERTY_RESOLVE_TIMEOUT = 11,
669 WS_CHANNEL_PROPERTY_CONNECT_TIMEOUT = 12,
670 WS_CHANNEL_PROPERTY_SEND_TIMEOUT = 13,
671 WS_CHANNEL_PROPERTY_RECEIVE_RESPONSE_TIMEOUT = 14,
672 WS_CHANNEL_PROPERTY_RECEIVE_TIMEOUT = 15,
673 WS_CHANNEL_PROPERTY_CLOSE_TIMEOUT = 16,
674 WS_CHANNEL_PROPERTY_ENABLE_TIMEOUTS = 17,
675 WS_CHANNEL_PROPERTY_TRANSFER_MODE = 18,
676 WS_CHANNEL_PROPERTY_MULTICAST_INTERFACE = 19,
677 WS_CHANNEL_PROPERTY_MULTICAST_HOPS = 20,
678 WS_CHANNEL_PROPERTY_REMOTE_ADDRESS = 21,
679 WS_CHANNEL_PROPERTY_REMOTE_IP_ADDRESS = 22,
680 WS_CHANNEL_PROPERTY_HTTP_CONNECTION_ID = 23,
681 WS_CHANNEL_PROPERTY_CUSTOM_CHANNEL_CALLBACKS = 24,
682 WS_CHANNEL_PROPERTY_CUSTOM_CHANNEL_PARAMETERS = 25,
683 WS_CHANNEL_PROPERTY_CUSTOM_CHANNEL_INSTANCE = 26,
684 WS_CHANNEL_PROPERTY_TRANSPORT_URL = 27,
685 WS_CHANNEL_PROPERTY_NO_DELAY = 28,
686 WS_CHANNEL_PROPERTY_SEND_KEEP_ALIVES = 29,
687 WS_CHANNEL_PROPERTY_KEEP_ALIVE_TIME = 30,
688 WS_CHANNEL_PROPERTY_KEEP_ALIVE_INTERVAL = 31,
689 WS_CHANNEL_PROPERTY_MAX_HTTP_SERVER_CONNECTIONS = 32,
690 WS_CHANNEL_PROPERTY_IS_SESSION_SHUT_DOWN = 33,
691 WS_CHANNEL_PROPERTY_CHANNEL_TYPE = 34,
692 WS_CHANNEL_PROPERTY_TRIM_BUFFERED_MESSAGE_SIZE = 35,
693 WS_CHANNEL_PROPERTY_ENCODER = 36,
694 WS_CHANNEL_PROPERTY_DECODER = 37,
695 WS_CHANNEL_PROPERTY_PROTECTION_LEVEL = 38,
696 WS_CHANNEL_PROPERTY_COOKIE_MODE = 39,
697 WS_CHANNEL_PROPERTY_HTTP_PROXY_SETTING_MODE = 40,
698 WS_CHANNEL_PROPERTY_CUSTOM_HTTP_PROXY = 41,
699 WS_CHANNEL_PROPERTY_HTTP_MESSAGE_MAPPING = 42,
700 WS_CHANNEL_PROPERTY_ENABLE_HTTP_REDIRECT = 43,
701 WS_CHANNEL_PROPERTY_HTTP_REDIRECT_CALLBACK_CONTEXT = 44,
702 WS_CHANNEL_PROPERTY_FAULTS_AS_ERRORS = 45,
703 WS_CHANNEL_PROPERTY_ALLOW_UNSECURED_FAULTS = 46,
704 WS_CHANNEL_PROPERTY_HTTP_SERVER_SPN = 47,
705 WS_CHANNEL_PROPERTY_HTTP_PROXY_SPN = 48,
706 WS_CHANNEL_PROPERTY_MAX_HTTP_REQUEST_HEADERS_BUFFER_SIZE = 49
707 } WS_CHANNEL_PROPERTY_ID;
709 struct _WS_CHANNEL_PROPERTY {
710 WS_CHANNEL_PROPERTY_ID id;
711 void *value;
712 ULONG valueSize;
715 struct _WS_CHANNEL_PROPERTIES {
716 WS_CHANNEL_PROPERTY *properties;
717 ULONG propertyCount;
720 typedef enum {
721 WS_HTTP_CHANNEL_BINDING,
722 WS_TCP_CHANNEL_BINDING,
723 WS_UDP_CHANNEL_BINDING,
724 WS_CUSTOM_CHANNEL_BINDING,
725 WS_NAMEDPIPE_CHANNEL_BINDING
726 } WS_CHANNEL_BINDING;
728 typedef enum {
729 WS_SSL_TRANSPORT_SECURITY_BINDING_TYPE,
730 WS_TCP_SSPI_TRANSPORT_SECURITY_BINDING_TYPE,
731 WS_HTTP_HEADER_AUTH_SECURITY_BINDING_TYPE,
732 WS_USERNAME_MESSAGE_SECURITY_BINDING_TYPE,
733 WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING_TYPE,
734 WS_XML_TOKEN_MESSAGE_SECURITY_BINDING_TYPE,
735 WS_SAML_MESSAGE_SECURITY_BINDING_TYPE,
736 WS_SECURITY_CONTEXT_MESSAGE_SECURITY_BINDING_TYPE,
737 WS_NAMEDPIPE_SSPI_TRANSPORT_SECURITY_BINDING_TYPE
738 } WS_SECURITY_BINDING_TYPE;
740 typedef enum {
741 WS_SECURITY_BINDING_PROPERTY_REQUIRE_SSL_CLIENT_CERT = 1,
742 WS_SECURITY_BINDING_PROPERTY_WINDOWS_INTEGRATED_AUTH_PACKAGE = 2,
743 WS_SECURITY_BINDING_PROPERTY_REQUIRE_SERVER_AUTH = 3,
744 WS_SECURITY_BINDING_PROPERTY_ALLOW_ANONYMOUS_CLIENTS = 4,
745 WS_SECURITY_BINDING_PROPERTY_ALLOWED_IMPERSONATION_LEVEL = 5,
746 WS_SECURITY_BINDING_PROPERTY_HTTP_HEADER_AUTH_SCHEME = 6,
747 WS_SECURITY_BINDING_PROPERTY_HTTP_HEADER_AUTH_TARGET = 7,
748 WS_SECURITY_BINDING_PROPERTY_HTTP_HEADER_AUTH_BASIC_REALM = 8,
749 WS_SECURITY_BINDING_PROPERTY_HTTP_HEADER_AUTH_DIGEST_REALM = 9,
750 WS_SECURITY_BINDING_PROPERTY_HTTP_HEADER_AUTH_DIGEST_DOMAIN = 10,
751 WS_SECURITY_BINDING_PROPERTY_SECURITY_CONTEXT_KEY_SIZE = 11,
752 WS_SECURITY_BINDING_PROPERTY_SECURITY_CONTEXT_KEY_ENTROPY_MODE = 12,
753 WS_SECURITY_BINDING_PROPERTY_MESSAGE_PROPERTIES = 13,
754 WS_SECURITY_BINDING_PROPERTY_SECURITY_CONTEXT_MAX_PENDING_CONTEXTS = 14,
755 WS_SECURITY_BINDING_PROPERTY_SECURITY_CONTEXT_MAX_ACTIVE_CONTEXTS = 15,
756 WS_SECURITY_BINDING_PROPERTY_SECURE_CONVERSATION_VERSION = 16,
757 WS_SECURITY_BINDING_PROPERTY_SECURITY_CONTEXT_SUPPORT_RENEW = 17,
758 WS_SECURITY_BINDING_PROPERTY_SECURITY_CONTEXT_RENEWAL_INTERVAL = 18,
759 WS_SECURITY_BINDING_PROPERTY_SECURITY_CONTEXT_ROLLOVER_INTERVAL = 19,
760 WS_SECURITY_BINDING_PROPERTY_CERT_FAILURES_TO_IGNORE = 20,
761 WS_SECURITY_BINDING_PROPERTY_DISABLE_CERT_REVOCATION_CHECK = 21,
762 WS_SECURITY_BINDING_PROPERTY_DISALLOWED_SECURE_PROTOCOLS = 22,
763 WS_SECURITY_BINDING_PROPERTY_CERTIFICATE_VALIDATION_CALLBACK_CONTEXT = 23
764 } WS_SECURITY_BINDING_PROPERTY_ID;
766 struct _WS_SECURITY_BINDING_PROPERTY {
767 WS_SECURITY_BINDING_PROPERTY_ID id;
768 void *value;
769 ULONG valueSize;
772 struct _WS_SECURITY_BINDING_PROPERTIES {
773 WS_SECURITY_BINDING_PROPERTY *properties;
774 ULONG propertyCount;
777 struct _WS_SECURITY_BINDING {
778 WS_SECURITY_BINDING_TYPE bindingType;
779 WS_SECURITY_BINDING_PROPERTY *properties;
780 ULONG propertyCount;
783 typedef enum {
784 WS_SECURITY_PROPERTY_TRANSPORT_PROTECTION_LEVEL = 1,
785 WS_SECURITY_PROPERTY_ALGORITHM_SUITE = 2,
786 WS_SECURITY_PROPERTY_ALGORITHM_SUITE_NAME = 3,
787 WS_SECURITY_PROPERTY_MAX_ALLOWED_LATENCY = 4,
788 WS_SECURITY_PROPERTY_TIMESTAMP_VALIDITY_DURATION = 5,
789 WS_SECURITY_PROPERTY_MAX_ALLOWED_CLOCK_SKEW = 6,
790 WS_SECURITY_PROPERTY_TIMESTAMP_USAGE = 7,
791 WS_SECURITY_PROPERTY_SECURITY_HEADER_LAYOUT = 8,
792 WS_SECURITY_PROPERTY_SECURITY_HEADER_VERSION = 9,
793 WS_SECURITY_PROPERTY_EXTENDED_PROTECTION_POLICY = 10,
794 WS_SECURITY_PROPERTY_EXTENDED_PROTECTION_SCENARIO = 11,
795 WS_SECURITY_PROPERTY_SERVICE_IDENTITIES = 12
796 } WS_SECURITY_PROPERTY_ID;
798 struct _WS_SECURITY_PROPERTY {
799 WS_SECURITY_PROPERTY_ID id;
800 void *value;
801 ULONG valueSize;
804 struct _WS_SECURITY_PROPERTIES {
805 WS_SECURITY_PROPERTY *properties;
806 ULONG propertyCount;
809 struct _WS_SECURITY_DESCRIPTION {
810 WS_SECURITY_BINDING **securityBindings;
811 ULONG securityBindingCount;
812 WS_SECURITY_PROPERTY *properties;
813 ULONG propertyCount;
816 typedef enum {
817 WS_HTTP_BINDING_TEMPLATE_TYPE,
818 WS_HTTP_SSL_BINDING_TEMPLATE_TYPE,
819 WS_HTTP_HEADER_AUTH_BINDING_TEMPLATE_TYPE,
820 WS_HTTP_SSL_HEADER_AUTH_BINDING_TEMPLATE_TYPE,
821 WS_HTTP_SSL_USERNAME_BINDING_TEMPLATE_TYPE,
822 WS_HTTP_SSL_KERBEROS_APREQ_BINDING_TEMPLATE_TYPE,
823 WS_TCP_BINDING_TEMPLATE_TYPE,
824 WS_TCP_SSPI_BINDING_TEMPLATE_TYPE,
825 WS_TCP_SSPI_USERNAME_BINDING_TEMPLATE_TYPE,
826 WS_TCP_SSPI_KERBEROS_APREQ_BINDING_TEMPLATE_TYPE,
827 WS_HTTP_SSL_USERNAME_SECURITY_CONTEXT_BINDING_TEMPLATE_TYPE,
828 WS_HTTP_SSL_KERBEROS_APREQ_SECURITY_CONTEXT_BINDING_TEMPLATE_TYPE,
829 WS_TCP_SSPI_USERNAME_SECURITY_CONTEXT_BINDING_TEMPLATE_TYPE,
830 WS_TCP_SSPI_KERBEROS_APREQ_SECURITY_CONTEXT_BINDING_TEMPLATE_TYPE
831 } WS_BINDING_TEMPLATE_TYPE;
833 typedef enum {
834 WS_SUBJECT_NAME_CERT_CREDENTIAL_TYPE = 1,
835 WS_THUMBPRINT_CERT_CREDENTIAL_TYPE = 2,
836 WS_CUSTOM_CERT_CREDENTIAL_TYPE = 3
837 } WS_CERT_CREDENTIAL_TYPE;
839 struct _WS_CERT_CREDENTIAL {
840 WS_CERT_CREDENTIAL_TYPE credentialType;
843 struct _WS_SSL_TRANSPORT_SECURITY_BINDING_TEMPLATE {
844 WS_SECURITY_BINDING_PROPERTIES securityBindingProperties;
845 WS_CERT_CREDENTIAL *localCertCredential;
848 struct _WS_HTTP_BINDING_TEMPLATE {
849 WS_CHANNEL_PROPERTIES channelProperties;
852 struct _WS_HTTP_SSL_BINDING_TEMPLATE {
853 WS_CHANNEL_PROPERTIES channelProperties;
854 WS_SECURITY_PROPERTIES securityProperties;
855 WS_SSL_TRANSPORT_SECURITY_BINDING_TEMPLATE sslTransportSecurityBinding;
858 typedef enum {
859 WS_ADDRESSING_VERSION_0_9 = 1,
860 WS_ADDRESSING_VERSION_1_0 = 2,
861 WS_ADDRESSING_VERSION_TRANSPORT = 3
862 } WS_ADDRESSING_VERSION;
864 typedef enum {
865 WS_ENVELOPE_VERSION_SOAP_1_1 = 1,
866 WS_ENVELOPE_VERSION_SOAP_1_2 = 2,
867 WS_ENVELOPE_VERSION_NONE = 3
868 } WS_ENVELOPE_VERSION;
870 typedef enum {
871 WS_MESSAGE_PROPERTY_STATE,
872 WS_MESSAGE_PROPERTY_HEAP,
873 WS_MESSAGE_PROPERTY_ENVELOPE_VERSION,
874 WS_MESSAGE_PROPERTY_ADDRESSING_VERSION,
875 WS_MESSAGE_PROPERTY_HEADER_BUFFER,
876 WS_MESSAGE_PROPERTY_HEADER_POSITION,
877 WS_MESSAGE_PROPERTY_BODY_READER,
878 WS_MESSAGE_PROPERTY_BODY_WRITER,
879 WS_MESSAGE_PROPERTY_IS_ADDRESSED,
880 WS_MESSAGE_PROPERTY_HEAP_PROPERTIES,
881 WS_MESSAGE_PROPERTY_XML_READER_PROPERTIES,
882 WS_MESSAGE_PROPERTY_XML_WRITER_PROPERTIES,
883 WS_MESSAGE_PROPERTY_IS_FAULT,
884 WS_MESSAGE_PROPERTY_MAX_PROCESSED_HEADERS,
885 WS_MESSAGE_PROPERTY_USERNAME,
886 WS_MESSAGE_PROPERTY_ENCODED_CERT,
887 WS_MESSAGE_PROPERTY_TRANSPORT_SECURITY_WINDOWS_TOKEN,
888 WS_MESSAGE_PROPERTY_HTTP_HEADER_AUTH_WINDOWS_TOKEN,
889 WS_MESSAGE_PROPERTY_MESSAGE_SECURITY_WINDOWS_TOKEN,
890 WS_MESSAGE_PROPERTY_SAML_ASSERTION,
891 WS_MESSAGE_PROPERTY_SECURITY_CONTEXT,
892 WS_MESSAGE_PROPERTY_PROTECTION_LEVEL
893 } WS_MESSAGE_PROPERTY_ID;
895 struct _WS_MESSAGE_PROPERTY {
896 WS_MESSAGE_PROPERTY_ID id;
897 void *value;
898 ULONG valueSize;
901 struct _WS_MESSAGE_PROPERTIES {
902 WS_MESSAGE_PROPERTY *properties;
903 ULONG propertyCount;
906 typedef enum {
907 WS_MESSAGE_STATE_EMPTY = 1,
908 WS_MESSAGE_STATE_INITIALIZED = 2,
909 WS_MESSAGE_STATE_READING = 3,
910 WS_MESSAGE_STATE_WRITING = 4,
911 WS_MESSAGE_STATE_DONE = 5
912 } WS_MESSAGE_STATE;
914 typedef enum {
915 WS_BLANK_MESSAGE,
916 WS_DUPLICATE_MESSAGE,
917 WS_REQUEST_MESSAGE,
918 WS_REPLY_MESSAGE,
919 WS_FAULT_MESSAGE
920 } WS_MESSAGE_INITIALIZATION;
922 typedef enum {
923 WS_DNS_ENDPOINT_IDENTITY_TYPE = 1,
924 WS_UPN_ENDPOINT_IDENTITY_TYPE = 2,
925 WS_SPN_ENDPOINT_IDENTITY_TYPE = 3,
926 WS_RSA_ENDPOINT_IDENTITY_TYPE = 4,
927 WS_CERT_ENDPOINT_IDENTITY_TYPE = 5,
928 WS_UNKNOWN_ENDPOINT_IDENTITY_TYPE = 6
929 } WS_ENDPOINT_IDENTITY_TYPE;
931 struct _WS_ENDPOINT_IDENTITY {
932 WS_ENDPOINT_IDENTITY_TYPE identityType;
935 struct _WS_ENDPOINT_ADDRESS {
936 WS_STRING url;
937 WS_XML_BUFFER *headers;
938 WS_XML_BUFFER *extensions;
939 WS_ENDPOINT_IDENTITY *identity;
942 struct _WS_HTTP_POLICY_DESCRIPTION {
943 WS_CHANNEL_PROPERTIES channelProperties;
946 struct _WS_MESSAGE_DESCRIPTION {
947 WS_XML_STRING *action;
948 WS_ELEMENT_DESCRIPTION *bodyElementDescription;
951 typedef enum {
952 WS_PARAMETER_TYPE_NORMAL,
953 WS_PARAMETER_TYPE_ARRAY,
954 WS_PARAMETER_TYPE_ARRAY_COUNT,
955 WS_PARAMETER_TYPE_MESSAGES
956 } WS_PARAMETER_TYPE;
958 struct _WS_PARAMETER_DESCRIPTION {
959 WS_PARAMETER_TYPE parameterType;
960 USHORT inputMessageIndex;
961 USHORT outputMessageIndex;
964 typedef HRESULT (CALLBACK *WS_SERVICE_STUB_CALLBACK)(
965 const WS_OPERATION_CONTEXT *context,
966 void *frame,
967 const void *callback,
968 const WS_ASYNC_CONTEXT *asyncContext,
969 WS_ERROR *error );
971 typedef enum {
972 WS_NON_RPC_LITERAL_OPERATION,
973 WS_RPC_LITERAL_OPERATION
974 } WS_OPERATION_STYLE;
976 struct _WS_OPERATION_DESCRIPTION {
977 ULONG versionInfo;
978 WS_MESSAGE_DESCRIPTION *inputMessageDescription;
979 WS_MESSAGE_DESCRIPTION *outputMessageDescription;
980 ULONG inputMessageOptions;
981 ULONG outputMessageOptions;
982 USHORT parameterCount;
983 WS_PARAMETER_DESCRIPTION *parameterDescription;
984 WS_SERVICE_STUB_CALLBACK stubCallback;
985 WS_OPERATION_STYLE style;
988 typedef enum {
989 WS_CALL_PROPERTY_CHECK_MUST_UNDERSTAND,
990 WS_CALL_PROPERTY_SEND_MESSAGE_CONTEXT,
991 WS_CALL_PROPERTY_RECEIVE_MESSAGE_CONTEXT,
992 WS_CALL_PROPERTY_CALL_ID
993 } WS_CALL_PROPERTY_ID;
995 struct _WS_CALL_PROPERTY {
996 WS_CALL_PROPERTY_ID id;
997 void *value;
998 ULONG valueSize;
1001 typedef enum {
1002 WS_DATETIME_FORMAT_UTC,
1003 WS_DATETIME_FORMAT_LOCAL,
1004 WS_DATETIME_FORMAT_NONE
1005 } WS_DATETIME_FORMAT;
1007 struct _WS_DATETIME {
1008 unsigned __int64 ticks;
1009 WS_DATETIME_FORMAT format;
1012 struct _WS_DATETIME_DESCRIPTION {
1013 WS_DATETIME minValue;
1014 WS_DATETIME maxValue;
1017 typedef enum {
1018 WS_URL_HTTP_SCHEME_TYPE,
1019 WS_URL_HTTPS_SCHEME_TYPE,
1020 WS_URL_NETTCP_SCHEME_TYPE,
1021 WS_URL_SOAPUDP_SCHEME_TYPE,
1022 WS_URL_NETPIPE_SCHEME_TYPE
1023 } WS_URL_SCHEME_TYPE;
1025 enum {
1026 WS_URL_FLAGS_ALLOW_HOST_WILDCARDS = 0x1,
1027 WS_URL_FLAGS_NO_PATH_COLLAPSE = 0x2,
1028 WS_URL_FLAGS_ZERO_TERMINATE = 0x4
1031 struct _WS_URL {
1032 WS_URL_SCHEME_TYPE scheme;
1035 struct _WS_HTTP_URL {
1036 WS_URL url;
1037 WS_STRING host;
1038 USHORT port;
1039 WS_STRING portAsString;
1040 WS_STRING path;
1041 WS_STRING query;
1042 WS_STRING fragment;
1045 struct _WS_HTTPS_URL {
1046 WS_URL url;
1047 WS_STRING host;
1048 USHORT port;
1049 WS_STRING portAsString;
1050 WS_STRING path;
1051 WS_STRING query;
1052 WS_STRING fragment;
1055 struct _WS_SOAPUDP_URL {
1056 WS_URL url;
1057 WS_STRING host;
1058 USHORT port;
1059 WS_STRING portAsString;
1060 WS_STRING path;
1061 WS_STRING query;
1062 WS_STRING fragment;
1065 struct _WS_NETPIPE_URL {
1066 WS_URL url;
1067 WS_STRING host;
1068 USHORT port;
1069 WS_STRING portAsString;
1070 WS_STRING path;
1071 WS_STRING query;
1072 WS_STRING fragment;
1075 HRESULT WINAPI WsAlloc(WS_HEAP*, SIZE_T, void**, WS_ERROR*);
1076 HRESULT WINAPI WsCall(WS_SERVICE_PROXY*, const WS_OPERATION_DESCRIPTION*, const void**,
1077 WS_HEAP*, const WS_CALL_PROPERTY*, const ULONG, const WS_ASYNC_CONTEXT*,
1078 WS_ERROR*);
1079 HRESULT WINAPI WsCloseChannel(WS_CHANNEL*, const WS_ASYNC_CONTEXT*, WS_ERROR*);
1080 HRESULT WINAPI WsCloseServiceProxy(WS_SERVICE_PROXY*, const WS_ASYNC_CONTEXT*, WS_ERROR*);
1081 HRESULT WINAPI WsCombineUrl(const WS_STRING*, const WS_STRING*, ULONG, WS_HEAP*, WS_STRING*, WS_ERROR*);
1082 HRESULT WINAPI WsCreateChannel(WS_CHANNEL_TYPE, WS_CHANNEL_BINDING, const WS_CHANNEL_PROPERTY*,
1083 ULONG, const WS_SECURITY_DESCRIPTION*, WS_CHANNEL**, WS_ERROR*);
1084 HRESULT WINAPI WsCreateError(const WS_ERROR_PROPERTY*, ULONG, WS_ERROR**);
1085 HRESULT WINAPI WsCreateHeap(SIZE_T, SIZE_T, const WS_HEAP_PROPERTY*, ULONG, WS_HEAP**, WS_ERROR*);
1086 HRESULT WINAPI WsCreateMessage(WS_ENVELOPE_VERSION, WS_ADDRESSING_VERSION, const WS_MESSAGE_PROPERTY*,
1087 ULONG, WS_MESSAGE**, WS_ERROR*);
1088 HRESULT WINAPI WsCreateMessageForChannel(WS_CHANNEL*, const WS_MESSAGE_PROPERTY*, ULONG, WS_MESSAGE**,
1089 WS_ERROR*);
1090 HRESULT WINAPI WsCreateReader(const WS_XML_READER_PROPERTY*, ULONG, WS_XML_READER**, WS_ERROR*);
1091 HRESULT WINAPI WsCreateServiceProxy(const WS_CHANNEL_TYPE, const WS_CHANNEL_BINDING,
1092 const WS_SECURITY_DESCRIPTION*, const WS_PROXY_PROPERTY*,
1093 const ULONG, const WS_CHANNEL_PROPERTY*, const ULONG,
1094 WS_SERVICE_PROXY**, WS_ERROR*);
1095 HRESULT WINAPI WsCreateServiceProxyFromTemplate(WS_CHANNEL_TYPE, const WS_PROXY_PROPERTY*,
1096 const ULONG, WS_BINDING_TEMPLATE_TYPE,
1097 void*, ULONG, const void*, ULONG,
1098 WS_SERVICE_PROXY**, WS_ERROR*);
1099 HRESULT WINAPI WsCreateWriter(const WS_XML_WRITER_PROPERTY*, ULONG, WS_XML_WRITER**, WS_ERROR*);
1100 HRESULT WINAPI WsCreateXmlBuffer(WS_HEAP*, const WS_XML_BUFFER_PROPERTY*, ULONG, WS_XML_BUFFER**,
1101 WS_ERROR*);
1102 HRESULT WINAPI WsDateTimeToFileTime(const WS_DATETIME*, FILETIME*, WS_ERROR*);
1103 HRESULT WINAPI WsDecodeUrl(const WS_STRING*, ULONG, WS_HEAP*, WS_URL**, WS_ERROR*);
1104 HRESULT WINAPI WsEncodeUrl(const WS_URL*, ULONG, WS_HEAP*, WS_STRING*, WS_ERROR*);
1105 HRESULT WINAPI WsFileTimeToDateTime(const FILETIME*, WS_DATETIME*, WS_ERROR*);
1106 HRESULT WINAPI WsFillReader(WS_XML_READER*, ULONG, const WS_ASYNC_CONTEXT*, WS_ERROR*);
1107 HRESULT WINAPI WsFindAttribute(WS_XML_READER*, const WS_XML_STRING*, const WS_XML_STRING*, BOOL,
1108 ULONG*, WS_ERROR*);
1109 void WINAPI WsFreeChannel(WS_CHANNEL*);
1110 void WINAPI WsFreeError(WS_ERROR*);
1111 void WINAPI WsFreeHeap(WS_HEAP*);
1112 void WINAPI WsFreeMessage(WS_MESSAGE*);
1113 void WINAPI WsFreeReader(WS_XML_READER*);
1114 void WINAPI WsFreeServiceProxy(WS_SERVICE_PROXY*);
1115 void WINAPI WsFreeWriter(WS_XML_WRITER*);
1116 HRESULT WINAPI WsGetChannelProperty(WS_CHANNEL*, WS_CHANNEL_PROPERTY_ID, void*, ULONG, WS_ERROR*);
1117 HRESULT WINAPI WsGetErrorProperty(WS_ERROR*, WS_ERROR_PROPERTY_ID, void*, ULONG);
1118 HRESULT WINAPI WsGetErrorString(WS_ERROR*, ULONG, WS_STRING*);
1119 HRESULT WINAPI WsGetHeapProperty(WS_HEAP*, WS_HEAP_PROPERTY_ID, void*, ULONG, WS_ERROR*);
1120 HRESULT WINAPI WsGetNamespaceFromPrefix(WS_XML_READER*, const WS_XML_STRING*, BOOL,
1121 const WS_XML_STRING**, WS_ERROR*);
1122 HRESULT WINAPI WsGetPrefixFromNamespace(WS_XML_WRITER*, const WS_XML_STRING*, BOOL,
1123 const WS_XML_STRING**, WS_ERROR*);
1124 HRESULT WINAPI WsGetReaderNode(WS_XML_READER*, const WS_XML_NODE**, WS_ERROR*);
1125 HRESULT WINAPI WsGetReaderPosition(WS_XML_READER*, WS_XML_NODE_POSITION*, WS_ERROR*);
1126 HRESULT WINAPI WsGetReaderProperty(WS_XML_READER*, WS_XML_READER_PROPERTY_ID, void*, ULONG, WS_ERROR*);
1127 HRESULT WINAPI WsGetServiceProxyProperty(WS_SERVICE_PROXY*, const WS_PROXY_PROPERTY_ID, void*,
1128 ULONG, WS_ERROR*);
1129 HRESULT WINAPI WsGetWriterProperty(WS_XML_WRITER*, WS_XML_WRITER_PROPERTY_ID, void*, ULONG, WS_ERROR*);
1130 HRESULT WINAPI WsGetXmlAttribute(WS_XML_READER*, const WS_XML_STRING*, WS_HEAP*, WCHAR**,
1131 ULONG*, WS_ERROR*);
1132 HRESULT WINAPI WsInitializeMessage(WS_MESSAGE*, WS_MESSAGE_INITIALIZATION, WS_MESSAGE*, WS_ERROR*);
1133 HRESULT WINAPI WsMoveReader(WS_XML_READER*, WS_MOVE_TO, BOOL*, WS_ERROR*);
1134 HRESULT WINAPI WsMoveWriter(WS_XML_WRITER*, WS_MOVE_TO, BOOL*, WS_ERROR*);
1135 HRESULT WINAPI WsOpenChannel(WS_CHANNEL*, const WS_ENDPOINT_ADDRESS*, const WS_ASYNC_CONTEXT*, WS_ERROR*);
1136 HRESULT WINAPI WsOpenServiceProxy(WS_SERVICE_PROXY*, const WS_ENDPOINT_ADDRESS*, const WS_ASYNC_CONTEXT*,
1137 WS_ERROR*);
1138 HRESULT WINAPI WsReadAttribute(WS_XML_READER*, const WS_ATTRIBUTE_DESCRIPTION*, WS_READ_OPTION,
1139 WS_HEAP*, void*, ULONG, WS_ERROR*);
1140 HRESULT WINAPI WsReadElement(WS_XML_READER*, const WS_ELEMENT_DESCRIPTION*, WS_READ_OPTION,
1141 WS_HEAP*, void*, ULONG, WS_ERROR*);
1142 HRESULT WINAPI WsReadEndAttribute(WS_XML_READER*, WS_ERROR*);
1143 HRESULT WINAPI WsReadEndElement(WS_XML_READER*, WS_ERROR*);
1144 HRESULT WINAPI WsReadNode(WS_XML_READER*, WS_ERROR*);
1145 HRESULT WINAPI WsReadStartAttribute(WS_XML_READER*, ULONG, WS_ERROR*);
1146 HRESULT WINAPI WsReadStartElement(WS_XML_READER*, WS_ERROR*);
1147 HRESULT WINAPI WsReadToStartElement(WS_XML_READER*, const WS_XML_STRING*, const WS_XML_STRING*,
1148 BOOL*, WS_ERROR*);
1149 HRESULT WINAPI WsReadType(WS_XML_READER*, WS_TYPE_MAPPING, WS_TYPE, const void*, WS_READ_OPTION,
1150 WS_HEAP*, void*, ULONG, WS_ERROR*);
1151 HRESULT WINAPI WsReadValue(WS_XML_READER*, WS_VALUE_TYPE, void*, ULONG, WS_ERROR*);
1152 HRESULT WINAPI WsResetError(WS_ERROR*);
1153 HRESULT WINAPI WsResetHeap(WS_HEAP*, WS_ERROR*);
1154 HRESULT WINAPI WsSendMessage(WS_CHANNEL*, WS_MESSAGE*, const WS_MESSAGE_DESCRIPTION*, WS_WRITE_OPTION,
1155 const void*, ULONG, const WS_ASYNC_CONTEXT*, WS_ERROR*);
1156 HRESULT WINAPI WsSetChannelProperty(WS_CHANNEL*, WS_CHANNEL_PROPERTY_ID, const void*, ULONG, WS_ERROR*);
1157 HRESULT WINAPI WsSetErrorProperty(WS_ERROR*, WS_ERROR_PROPERTY_ID, const void*, ULONG);
1158 HRESULT WINAPI WsSetInput(WS_XML_READER*, const WS_XML_READER_ENCODING*, const WS_XML_READER_INPUT*,
1159 const WS_XML_READER_PROPERTY*, ULONG, WS_ERROR*);
1160 HRESULT WINAPI WsSetInputToBuffer(WS_XML_READER*, WS_XML_BUFFER*, const WS_XML_READER_PROPERTY*,
1161 ULONG, WS_ERROR*);
1162 HRESULT WINAPI WsSetOutput(WS_XML_WRITER*, const WS_XML_WRITER_ENCODING*, const WS_XML_WRITER_OUTPUT*,
1163 const WS_XML_WRITER_PROPERTY*, ULONG, WS_ERROR*);
1164 HRESULT WINAPI WsSetOutputToBuffer(WS_XML_WRITER*, WS_XML_BUFFER*, const WS_XML_WRITER_PROPERTY*,
1165 ULONG, WS_ERROR*);
1166 HRESULT WINAPI WsSkipNode(WS_XML_READER*, WS_ERROR*);
1167 HRESULT WINAPI WsWriteAttribute(WS_XML_WRITER*, const WS_ATTRIBUTE_DESCRIPTION*, WS_WRITE_OPTION,
1168 const void*, ULONG, WS_ERROR*);
1169 HRESULT WINAPI WsWriteElement(WS_XML_WRITER*, const WS_ELEMENT_DESCRIPTION*, WS_WRITE_OPTION,
1170 const void*, ULONG, WS_ERROR*);
1171 HRESULT WINAPI WsWriteEndAttribute(WS_XML_WRITER*, WS_ERROR*);
1172 HRESULT WINAPI WsWriteEndCData(WS_XML_WRITER*, WS_ERROR*);
1173 HRESULT WINAPI WsWriteEndElement(WS_XML_WRITER*, WS_ERROR*);
1174 HRESULT WINAPI WsWriteEndStartElement(WS_XML_WRITER*, WS_ERROR*);
1175 HRESULT WINAPI WsWriteMessageStart(WS_CHANNEL*, WS_MESSAGE*, const WS_ASYNC_CONTEXT*, WS_ERROR*);
1176 HRESULT WINAPI WsWriteMessageEnd(WS_CHANNEL*, WS_MESSAGE*, const WS_ASYNC_CONTEXT*, WS_ERROR*);
1177 HRESULT WINAPI WsWriteStartAttribute(WS_XML_WRITER*, const WS_XML_STRING*, const WS_XML_STRING*,
1178 const WS_XML_STRING*, BOOL, WS_ERROR*);
1179 HRESULT WINAPI WsWriteStartCData(WS_XML_WRITER*, WS_ERROR*);
1180 HRESULT WINAPI WsWriteStartElement(WS_XML_WRITER*, const WS_XML_STRING*, const WS_XML_STRING*,
1181 const WS_XML_STRING*, WS_ERROR*);
1182 HRESULT WINAPI WsWriteText(WS_XML_WRITER*, const WS_XML_TEXT*, WS_ERROR*);
1183 HRESULT WINAPI WsWriteType(WS_XML_WRITER*, WS_TYPE_MAPPING, WS_TYPE, const void*, WS_WRITE_OPTION,
1184 const void*, ULONG, WS_ERROR*);
1185 HRESULT WINAPI WsWriteValue(WS_XML_WRITER*, WS_VALUE_TYPE, const void*, ULONG, WS_ERROR*);
1186 HRESULT WINAPI WsWriteXmlBuffer(WS_XML_WRITER*, WS_XML_BUFFER*, WS_ERROR*);
1187 HRESULT WINAPI WsWriteXmlBufferToBytes(WS_XML_WRITER*, WS_XML_BUFFER*, const WS_XML_WRITER_ENCODING*,
1188 const WS_XML_WRITER_PROPERTY*, ULONG, WS_HEAP*, void**,
1189 ULONG*, WS_ERROR*);
1190 HRESULT WINAPI WsWriteXmlnsAttribute(WS_XML_WRITER*, const WS_XML_STRING*, const WS_XML_STRING*,
1191 BOOL, WS_ERROR*);
1192 HRESULT WINAPI WsXmlStringEquals(const WS_XML_STRING*, const WS_XML_STRING*, WS_ERROR*);
1194 #define WS_S_ASYNC 0x003d0000
1195 #define WS_S_END 0x003d0001
1196 #define WS_E_INVALID_FORMAT 0x803d0000
1197 #define WS_E_OBJECT_FAULTED 0x803d0001
1198 #define WS_E_NUMERIC_OVERFLOW 0x803d0002
1199 #define WS_E_INVALID_OPERATION 0x803d0003
1200 #define WS_E_OPERATION_ABORTED 0x803d0004
1201 #define WS_E_ENDPOINT_ACCESS_DENIED 0x803d0005
1202 #define WS_E_OPERATION_TIMED_OUT 0x803d0006
1203 #define WS_E_OPERATION_ABANDONED 0x803d0007
1204 #define WS_E_QUOTA_EXCEEDED 0x803d0008
1205 #define WS_E_NO_TRANSLATION_AVAILABLE 0x803d0009
1206 #define WS_E_SECURITY_VERIFICATION_FAILURE 0x803d000a
1207 #define WS_E_ADDRESS_IN_USE 0x803d000b
1208 #define WS_E_ADDRESS_NOT_AVAILABLE 0x803d000c
1209 #define WS_E_ENDPOINT_NOT_FOUND 0x803d000d
1210 #define WS_E_ENDPOINT_NOT_AVAILABLE 0x803d000e
1211 #define WS_E_ENDPOINT_FAILURE 0x803d000f
1212 #define WS_E_ENDPOINT_UNREACHABLE 0x803d0010
1213 #define WS_E_ENDPOINT_ACTION_NOT_SUPPORTED 0x803d0011
1214 #define WS_E_ENDPOINT_TOO_BUSY 0x803d0012
1215 #define WS_E_ENDPOINT_FAULT_RECEIVED 0x803d0013
1216 #define WS_E_ENDPOINT_DISCONNECTED 0x803d0014
1217 #define WS_E_PROXY_FAILURE 0x803d0015
1218 #define WS_E_PROXY_ACCESS_DENIED 0x803d0016
1219 #define WS_E_NOT_SUPPORTED 0x803d0017
1220 #define WS_E_PROXY_REQUIRES_BASIC_AUTH 0x803d0018
1221 #define WS_E_PROXY_REQUIRES_DIGEST_AUTH 0x803d0019
1222 #define WS_E_PROXY_REQUIRES_NTLM_AUTH 0x803d001a
1223 #define WS_E_PROXY_REQUIRES_NEGOTIATE_AUTH 0x803d001b
1224 #define WS_E_SERVER_REQUIRES_BASIC_AUTH 0x803d001c
1225 #define WS_E_SERVER_REQUIRES_DIGEST_AUTH 0x803d001d
1226 #define WS_E_SERVER_REQUIRES_NTLM_AUTH 0x803d001e
1227 #define WS_E_SERVER_REQUIRES_NEGOTIATE_AUTH 0x803d001f
1228 #define WS_E_INVALID_ENDPOINT_URL 0x803d0020
1229 #define WS_E_OTHER 0x803d0021
1230 #define WS_E_SECURITY_TOKEN_EXPIRED 0x803d0022
1231 #define WS_E_SECURITY_SYSTEM_FAILURE 0x803d0023
1233 #ifdef __cplusplus
1235 #endif /* __cplusplus */
1237 #endif /* __WINE_WEBSERVICES_H */