ifndef __WEBSERVICES_H__
define __WEBSERVICES_H__

include windows.inc
include wtypes.inc
include wincrypt.inc
include winapifamily.inc

.enum WS_XML_READER_PROPERTY_ID {
    WS_XML_READER_PROPERTY_MAX_DEPTH				  = 0,
    WS_XML_READER_PROPERTY_ALLOW_FRAGMENT			  = 1,
    WS_XML_READER_PROPERTY_MAX_ATTRIBUTES			  = 2,
    WS_XML_READER_PROPERTY_READ_DECLARATION			  = 3,
    WS_XML_READER_PROPERTY_CHARSET				  = 4,
    WS_XML_READER_PROPERTY_ROW					  = 5,
    WS_XML_READER_PROPERTY_COLUMN				  = 6,
    WS_XML_READER_PROPERTY_UTF8_TRIM_SIZE			  = 7,
    WS_XML_READER_PROPERTY_STREAM_BUFFER_SIZE			  = 8,
    WS_XML_READER_PROPERTY_IN_ATTRIBUTE				  = 9,
    WS_XML_READER_PROPERTY_STREAM_MAX_ROOT_MIME_PART_SIZE	  = 10,
    WS_XML_READER_PROPERTY_STREAM_MAX_MIME_HEADERS_SIZE		  = 11,
    WS_XML_READER_PROPERTY_MAX_MIME_PARTS			  = 12,
    WS_XML_READER_PROPERTY_ALLOW_INVALID_CHARACTER_REFERENCES	  = 13,
    WS_XML_READER_PROPERTY_MAX_NAMESPACES			  = 14,
    }

.enum WS_XML_CANONICALIZATION_ALGORITHM {
    WS_EXCLUSIVE_XML_CANONICALIZATION_ALGORITHM			  = 0,
    WS_EXCLUSIVE_WITH_COMMENTS_XML_CANONICALIZATION_ALGORITHM	  = 1,
    WS_INCLUSIVE_XML_CANONICALIZATION_ALGORITHM			  = 2,
    WS_INCLUSIVE_WITH_COMMENTS_XML_CANONICALIZATION_ALGORITHM	  = 3,
    }

.enum WS_XML_CANONICALIZATION_PROPERTY_ID {
    WS_XML_CANONICALIZATION_PROPERTY_ALGORITHM		    = 0,
    WS_XML_CANONICALIZATION_PROPERTY_INCLUSIVE_PREFIXES	    = 1,
    WS_XML_CANONICALIZATION_PROPERTY_OMITTED_ELEMENT	    = 2,
    WS_XML_CANONICALIZATION_PROPERTY_OUTPUT_BUFFER_SIZE	    = 3,
    }

.enum WS_XML_WRITER_PROPERTY_ID {
    WS_XML_WRITER_PROPERTY_MAX_DEPTH				  = 0,
    WS_XML_WRITER_PROPERTY_ALLOW_FRAGMENT			  = 1,
    WS_XML_WRITER_PROPERTY_MAX_ATTRIBUTES			  = 2,
    WS_XML_WRITER_PROPERTY_WRITE_DECLARATION			  = 3,
    WS_XML_WRITER_PROPERTY_INDENT				  = 4,
    WS_XML_WRITER_PROPERTY_BUFFER_TRIM_SIZE			  = 5,
    WS_XML_WRITER_PROPERTY_CHARSET				  = 6,
    WS_XML_WRITER_PROPERTY_BUFFERS				  = 7,
    WS_XML_WRITER_PROPERTY_BUFFER_MAX_SIZE			  = 8,
    WS_XML_WRITER_PROPERTY_BYTES				  = 9,
    WS_XML_WRITER_PROPERTY_IN_ATTRIBUTE				  = 10,
    WS_XML_WRITER_PROPERTY_MAX_MIME_PARTS_BUFFER_SIZE		  = 11,
    WS_XML_WRITER_PROPERTY_INITIAL_BUFFER			  = 12,
    WS_XML_WRITER_PROPERTY_ALLOW_INVALID_CHARACTER_REFERENCES	  = 13,
    WS_XML_WRITER_PROPERTY_MAX_NAMESPACES			  = 14,
    WS_XML_WRITER_PROPERTY_BYTES_WRITTEN			  = 15,
    WS_XML_WRITER_PROPERTY_BYTES_TO_CLOSE			  = 16,
    WS_XML_WRITER_PROPERTY_COMPRESS_EMPTY_ELEMENTS		  = 17,
    WS_XML_WRITER_PROPERTY_EMIT_UNCOMPRESSED_EMPTY_ELEMENTS	  = 18,
    }

.enum WS_XML_BUFFER_PROPERTY_ID {
    }

.enum WS_XML_TEXT_TYPE {
    WS_XML_TEXT_TYPE_UTF8	   = 1,
    WS_XML_TEXT_TYPE_UTF16	   = 2,
    WS_XML_TEXT_TYPE_BASE64	   = 3,
    WS_XML_TEXT_TYPE_BOOL	   = 4,
    WS_XML_TEXT_TYPE_INT32	   = 5,
    WS_XML_TEXT_TYPE_INT64	   = 6,
    WS_XML_TEXT_TYPE_UINT64	   = 7,
    WS_XML_TEXT_TYPE_FLOAT	   = 8,
    WS_XML_TEXT_TYPE_DOUBLE	   = 9,
    WS_XML_TEXT_TYPE_DECIMAL	   = 10,
    WS_XML_TEXT_TYPE_GUID	   = 11,
    WS_XML_TEXT_TYPE_UNIQUE_ID	   = 12,
    WS_XML_TEXT_TYPE_DATETIME	   = 13,
    WS_XML_TEXT_TYPE_TIMESPAN	   = 14,
    WS_XML_TEXT_TYPE_QNAME	   = 15,
    WS_XML_TEXT_TYPE_LIST	   = 16,
    }

.enum WS_XML_NODE_TYPE {
    WS_XML_NODE_TYPE_ELEMENT	     = 1,
    WS_XML_NODE_TYPE_TEXT	     = 2,
    WS_XML_NODE_TYPE_END_ELEMENT     = 3,
    WS_XML_NODE_TYPE_COMMENT	     = 4,
    WS_XML_NODE_TYPE_CDATA	     = 6,
    WS_XML_NODE_TYPE_END_CDATA	     = 7,
    WS_XML_NODE_TYPE_EOF	     = 8,
    WS_XML_NODE_TYPE_BOF	     = 9,
    }

.enum WS_MOVE_TO {
    WS_MOVE_TO_ROOT_ELEMENT	    = 0,
    WS_MOVE_TO_NEXT_ELEMENT	    = 1,
    WS_MOVE_TO_PREVIOUS_ELEMENT	    = 2,
    WS_MOVE_TO_CHILD_ELEMENT	    = 3,
    WS_MOVE_TO_END_ELEMENT	    = 4,
    WS_MOVE_TO_PARENT_ELEMENT	    = 5,
    WS_MOVE_TO_NEXT_NODE	    = 6,
    WS_MOVE_TO_PREVIOUS_NODE	    = 7,
    WS_MOVE_TO_FIRST_NODE	    = 8,
    WS_MOVE_TO_BOF		    = 9,
    WS_MOVE_TO_EOF		    = 10,
    WS_MOVE_TO_CHILD_NODE	    = 11,
    }

.enum WS_VALUE_TYPE {
    WS_BOOL_VALUE_TYPE	       = 0,
    WS_INT8_VALUE_TYPE	       = 1,
    WS_INT16_VALUE_TYPE	       = 2,
    WS_INT32_VALUE_TYPE	       = 3,
    WS_INT64_VALUE_TYPE	       = 4,
    WS_UINT8_VALUE_TYPE	       = 5,
    WS_UINT16_VALUE_TYPE       = 6,
    WS_UINT32_VALUE_TYPE       = 7,
    WS_UINT64_VALUE_TYPE       = 8,
    WS_FLOAT_VALUE_TYPE	       = 9,
    WS_DOUBLE_VALUE_TYPE       = 10,
    WS_DECIMAL_VALUE_TYPE      = 11,
    WS_DATETIME_VALUE_TYPE     = 12,
    WS_TIMESPAN_VALUE_TYPE     = 13,
    WS_GUID_VALUE_TYPE	       = 14,
    WS_DURATION_VALUE_TYPE     = 15,
    }

.enum WS_XML_READER_INPUT_TYPE {
    WS_XML_READER_INPUT_TYPE_BUFFER	= 1,
    WS_XML_READER_INPUT_TYPE_STREAM	= 2,
    }

.enum WS_XML_READER_ENCODING_TYPE {
    WS_XML_READER_ENCODING_TYPE_TEXT	   = 1,
    WS_XML_READER_ENCODING_TYPE_BINARY	   = 2,
    WS_XML_READER_ENCODING_TYPE_MTOM	   = 3,
    WS_XML_READER_ENCODING_TYPE_RAW	   = 4,
    }

.enum WS_CHARSET {
    WS_CHARSET_AUTO	   = 0,
    WS_CHARSET_UTF8	   = 1,
    WS_CHARSET_UTF16LE	   = 2,
    WS_CHARSET_UTF16BE	   = 3,
    }

.enum WS_XML_WRITER_ENCODING_TYPE {
    WS_XML_WRITER_ENCODING_TYPE_TEXT	   = 1,
    WS_XML_WRITER_ENCODING_TYPE_BINARY	   = 2,
    WS_XML_WRITER_ENCODING_TYPE_MTOM	   = 3,
    WS_XML_WRITER_ENCODING_TYPE_RAW	   = 4,
    }

.enum WS_XML_WRITER_OUTPUT_TYPE {
    WS_XML_WRITER_OUTPUT_TYPE_BUFFER	 = 1,
    WS_XML_WRITER_OUTPUT_TYPE_STREAM	 = 2,
    }

.enum WS_CALLBACK_MODEL {
    WS_SHORT_CALLBACK	  = 0,
    WS_LONG_CALLBACK	  = 1,
    }

.enum WS_ENCODING {
    WS_ENCODING_XML_BINARY_1		 = 0,
    WS_ENCODING_XML_BINARY_SESSION_1	 = 1,
    WS_ENCODING_XML_MTOM_UTF8		 = 2,
    WS_ENCODING_XML_MTOM_UTF16BE	 = 3,
    WS_ENCODING_XML_MTOM_UTF16LE	 = 4,
    WS_ENCODING_XML_UTF8		 = 5,
    WS_ENCODING_XML_UTF16BE		 = 6,
    WS_ENCODING_XML_UTF16LE		 = 7,
    WS_ENCODING_RAW			 = 8,
    }

.enum WS_CHANNEL_STATE {
    WS_CHANNEL_STATE_CREATED	   = 0,
    WS_CHANNEL_STATE_OPENING	   = 1,
    WS_CHANNEL_STATE_ACCEPTING	   = 2,
    WS_CHANNEL_STATE_OPEN	   = 3,
    WS_CHANNEL_STATE_FAULTED	   = 4,
    WS_CHANNEL_STATE_CLOSING	   = 5,
    WS_CHANNEL_STATE_CLOSED	   = 6,
    }

.enum WS_RECEIVE_OPTION {
    WS_RECEIVE_REQUIRED_MESSAGE	    = 1,
    WS_RECEIVE_OPTIONAL_MESSAGE	    = 2,
    }

.enum WS_CHANNEL_BINDING {
    WS_HTTP_CHANNEL_BINDING	     = 0,
    WS_TCP_CHANNEL_BINDING	     = 1,
    WS_UDP_CHANNEL_BINDING	     = 2,
    WS_CUSTOM_CHANNEL_BINDING	     = 3,
if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
    WS_NAMEDPIPE_CHANNEL_BINDING     = 4,
endif
    }

.enum WS_CHANNEL_TYPE {
    WS_CHANNEL_TYPE_INPUT	       = 0x1,
    WS_CHANNEL_TYPE_OUTPUT	       = 0x2,
    WS_CHANNEL_TYPE_SESSION	       = 0x4,
    WS_CHANNEL_TYPE_INPUT_SESSION      = (WS_CHANNEL_TYPE_INPUT or WS_CHANNEL_TYPE_SESSION),
    WS_CHANNEL_TYPE_OUTPUT_SESSION     = (WS_CHANNEL_TYPE_OUTPUT or WS_CHANNEL_TYPE_SESSION),
    WS_CHANNEL_TYPE_DUPLEX	       = (WS_CHANNEL_TYPE_INPUT or WS_CHANNEL_TYPE_OUTPUT),
    WS_CHANNEL_TYPE_DUPLEX_SESSION     = (WS_CHANNEL_TYPE_INPUT or WS_CHANNEL_TYPE_OUTPUT or WS_CHANNEL_TYPE_SESSION),
    WS_CHANNEL_TYPE_REQUEST	       = 0x8,
    WS_CHANNEL_TYPE_REPLY	       = 0x10,
    }

.enum WS_TRANSFER_MODE {
    WS_STREAMED_INPUT_TRANSFER_MODE	 = 0x1,
    WS_STREAMED_OUTPUT_TRANSFER_MODE	 = 0x2,
    WS_BUFFERED_TRANSFER_MODE		 = 0x0,
    WS_STREAMED_TRANSFER_MODE		 = (WS_STREAMED_INPUT_TRANSFER_MODE or WS_STREAMED_OUTPUT_TRANSFER_MODE),
    }

.enum WS_HTTP_PROXY_SETTING_MODE {
    WS_HTTP_PROXY_SETTING_MODE_AUTO	  = 0x1,
    WS_HTTP_PROXY_SETTING_MODE_NONE	  = 0x2,
    WS_HTTP_PROXY_SETTING_MODE_CUSTOM	  = 0x3,
    }

.enum WS_CHANNEL_PROPERTY_ID {
    WS_CHANNEL_PROPERTY_MAX_BUFFERED_MESSAGE_SIZE		 = 0,
    WS_CHANNEL_PROPERTY_MAX_STREAMED_MESSAGE_SIZE		 = 1,
    WS_CHANNEL_PROPERTY_MAX_STREAMED_START_SIZE			 = 2,
    WS_CHANNEL_PROPERTY_MAX_STREAMED_FLUSH_SIZE			 = 3,
    WS_CHANNEL_PROPERTY_ENCODING				 = 4,
    WS_CHANNEL_PROPERTY_ENVELOPE_VERSION			 = 5,
    WS_CHANNEL_PROPERTY_ADDRESSING_VERSION			 = 6,
    WS_CHANNEL_PROPERTY_MAX_SESSION_DICTIONARY_SIZE		 = 7,
    WS_CHANNEL_PROPERTY_STATE					 = 8,
    WS_CHANNEL_PROPERTY_ASYNC_CALLBACK_MODEL			 = 9,
    WS_CHANNEL_PROPERTY_IP_VERSION				 = 10,
    WS_CHANNEL_PROPERTY_RESOLVE_TIMEOUT				 = 11,
    WS_CHANNEL_PROPERTY_CONNECT_TIMEOUT				 = 12,
    WS_CHANNEL_PROPERTY_SEND_TIMEOUT				 = 13,
    WS_CHANNEL_PROPERTY_RECEIVE_RESPONSE_TIMEOUT		 = 14,
    WS_CHANNEL_PROPERTY_RECEIVE_TIMEOUT				 = 15,
    WS_CHANNEL_PROPERTY_CLOSE_TIMEOUT				 = 16,
    WS_CHANNEL_PROPERTY_ENABLE_TIMEOUTS				 = 17,
    WS_CHANNEL_PROPERTY_TRANSFER_MODE				 = 18,
    WS_CHANNEL_PROPERTY_MULTICAST_INTERFACE			 = 19,
    WS_CHANNEL_PROPERTY_MULTICAST_HOPS				 = 20,
    WS_CHANNEL_PROPERTY_REMOTE_ADDRESS				 = 21,
    WS_CHANNEL_PROPERTY_REMOTE_IP_ADDRESS			 = 22,
    WS_CHANNEL_PROPERTY_HTTP_CONNECTION_ID			 = 23,
    WS_CHANNEL_PROPERTY_CUSTOM_CHANNEL_CALLBACKS		 = 24,
    WS_CHANNEL_PROPERTY_CUSTOM_CHANNEL_PARAMETERS		 = 25,
    WS_CHANNEL_PROPERTY_CUSTOM_CHANNEL_INSTANCE			 = 26,
    WS_CHANNEL_PROPERTY_TRANSPORT_URL				 = 27,
    WS_CHANNEL_PROPERTY_NO_DELAY				 = 28,
    WS_CHANNEL_PROPERTY_SEND_KEEP_ALIVES			 = 29,
    WS_CHANNEL_PROPERTY_KEEP_ALIVE_TIME				 = 30,
    WS_CHANNEL_PROPERTY_KEEP_ALIVE_INTERVAL			 = 31,
    WS_CHANNEL_PROPERTY_MAX_HTTP_SERVER_CONNECTIONS		 = 32,
    WS_CHANNEL_PROPERTY_IS_SESSION_SHUT_DOWN			 = 33,
    WS_CHANNEL_PROPERTY_CHANNEL_TYPE				 = 34,
    WS_CHANNEL_PROPERTY_TRIM_BUFFERED_MESSAGE_SIZE		 = 35,
    WS_CHANNEL_PROPERTY_ENCODER					 = 36,
    WS_CHANNEL_PROPERTY_DECODER					 = 37,
    WS_CHANNEL_PROPERTY_PROTECTION_LEVEL			 = 38,
    WS_CHANNEL_PROPERTY_COOKIE_MODE				 = 39,
    WS_CHANNEL_PROPERTY_HTTP_PROXY_SETTING_MODE			 = 40,
    WS_CHANNEL_PROPERTY_CUSTOM_HTTP_PROXY			 = 41,
    WS_CHANNEL_PROPERTY_HTTP_MESSAGE_MAPPING			 = 42,
    WS_CHANNEL_PROPERTY_ENABLE_HTTP_REDIRECT			 = 43,
    WS_CHANNEL_PROPERTY_HTTP_REDIRECT_CALLBACK_CONTEXT		 = 44,
    WS_CHANNEL_PROPERTY_FAULTS_AS_ERRORS			 = 45,
    WS_CHANNEL_PROPERTY_ALLOW_UNSECURED_FAULTS			 = 46,
    WS_CHANNEL_PROPERTY_HTTP_SERVER_SPN				 = 47,
    WS_CHANNEL_PROPERTY_HTTP_PROXY_SPN				 = 48,
    WS_CHANNEL_PROPERTY_MAX_HTTP_REQUEST_HEADERS_BUFFER_SIZE	 = 49,
    }

.enum {
    WS_HTTP_HEADER_MAPPING_COMMA_SEPARATOR	   = 0x1,
    WS_HTTP_HEADER_MAPPING_SEMICOLON_SEPARATOR	   = 0x2,
    WS_HTTP_HEADER_MAPPING_QUOTED_VALUE		   = 0x4,
    }

.enum {
    WS_HTTP_RESPONSE_MAPPING_STATUS_CODE     = 0x1,
    WS_HTTP_RESPONSE_MAPPING_STATUS_TEXT     = 0x2,
    }

.enum {
    WS_HTTP_REQUEST_MAPPING_VERB     = 0x2,
    }

.enum WS_COOKIE_MODE {
    WS_MANUAL_COOKIE_MODE     = 1,
    WS_AUTO_COOKIE_MODE	      = 2,
    }

.enum WS_OPERATION_CONTEXT_PROPERTY_ID {
    WS_OPERATION_CONTEXT_PROPERTY_CHANNEL		   = 0,
    WS_OPERATION_CONTEXT_PROPERTY_CONTRACT_DESCRIPTION	   = 1,
    WS_OPERATION_CONTEXT_PROPERTY_HOST_USER_STATE	   = 2,
    WS_OPERATION_CONTEXT_PROPERTY_CHANNEL_USER_STATE	   = 3,
    WS_OPERATION_CONTEXT_PROPERTY_INPUT_MESSAGE		   = 4,
    WS_OPERATION_CONTEXT_PROPERTY_OUTPUT_MESSAGE	   = 5,
    WS_OPERATION_CONTEXT_PROPERTY_HEAP			   = 6,
    WS_OPERATION_CONTEXT_PROPERTY_LISTENER		   = 7,
    WS_OPERATION_CONTEXT_PROPERTY_ENDPOINT_ADDRESS	   = 8,
    }

.enum WS_ENDPOINT_IDENTITY_TYPE {
    WS_DNS_ENDPOINT_IDENTITY_TYPE	  = 1,
    WS_UPN_ENDPOINT_IDENTITY_TYPE	  = 2,
    WS_SPN_ENDPOINT_IDENTITY_TYPE	  = 3,
    WS_RSA_ENDPOINT_IDENTITY_TYPE	  = 4,
    WS_CERT_ENDPOINT_IDENTITY_TYPE	  = 5,
    WS_UNKNOWN_ENDPOINT_IDENTITY_TYPE	  = 6,
    }

.enum WS_ENDPOINT_ADDRESS_EXTENSION_TYPE {
    WS_ENDPOINT_ADDRESS_EXTENSION_METADATA_ADDRESS     = 1,
    }

.enum WS_ERROR_PROPERTY_ID {
    WS_ERROR_PROPERTY_STRING_COUNT	      = 0,
    WS_ERROR_PROPERTY_ORIGINAL_ERROR_CODE     = 1,
    WS_ERROR_PROPERTY_LANGID		      = 2,
    }

.enum WS_EXCEPTION_CODE {
    WS_EXCEPTION_CODE_USAGE_FAILURE	   = 0xC03D0000,
    WS_EXCEPTION_CODE_INTERNAL_FAILURE	   = 0xc03d0001,
    }

.enum WS_FAULT_ERROR_PROPERTY_ID {
    WS_FAULT_ERROR_PROPERTY_FAULT      = 0,
    WS_FAULT_ERROR_PROPERTY_ACTION     = 1,
    WS_FAULT_ERROR_PROPERTY_HEADER     = 2,
    }

.enum WS_FAULT_DISCLOSURE {
    WS_MINIMAL_FAULT_DISCLOSURE	    = 0,
    WS_FULL_FAULT_DISCLOSURE	    = 1,
    }

.enum WS_HEAP_PROPERTY_ID {
    WS_HEAP_PROPERTY_MAX_SIZE		= 0,
    WS_HEAP_PROPERTY_TRIM_SIZE		= 1,
    WS_HEAP_PROPERTY_REQUESTED_SIZE	= 2,
    WS_HEAP_PROPERTY_ACTUAL_SIZE	= 3,
    }

if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)

.enum WS_LISTENER_STATE {
    WS_LISTENER_STATE_CREATED	  = 0,
    WS_LISTENER_STATE_OPENING	  = 1,
    WS_LISTENER_STATE_OPEN	  = 2,
    WS_LISTENER_STATE_FAULTED	  = 3,
    WS_LISTENER_STATE_CLOSING	  = 4,
    WS_LISTENER_STATE_CLOSED	  = 5,
    }

.enum WS_LISTENER_PROPERTY_ID {
    WS_LISTENER_PROPERTY_LISTEN_BACKLOG			    = 0,
    WS_LISTENER_PROPERTY_IP_VERSION			    = 1,
    WS_LISTENER_PROPERTY_STATE				    = 2,
    WS_LISTENER_PROPERTY_ASYNC_CALLBACK_MODEL		    = 3,
    WS_LISTENER_PROPERTY_CHANNEL_TYPE			    = 4,
    WS_LISTENER_PROPERTY_CHANNEL_BINDING		    = 5,
    WS_LISTENER_PROPERTY_CONNECT_TIMEOUT		    = 6,
    WS_LISTENER_PROPERTY_IS_MULTICAST			    = 7,
    WS_LISTENER_PROPERTY_MULTICAST_INTERFACES		    = 8,
    WS_LISTENER_PROPERTY_MULTICAST_LOOPBACK		    = 9,
    WS_LISTENER_PROPERTY_CLOSE_TIMEOUT			    = 10,
    WS_LISTENER_PROPERTY_TO_HEADER_MATCHING_OPTIONS	    = 11,
    WS_LISTENER_PROPERTY_TRANSPORT_URL_MATCHING_OPTIONS	    = 12,
    WS_LISTENER_PROPERTY_CUSTOM_LISTENER_CALLBACKS	    = 13,
    WS_LISTENER_PROPERTY_CUSTOM_LISTENER_PARAMETERS	    = 14,
    WS_LISTENER_PROPERTY_CUSTOM_LISTENER_INSTANCE	    = 15,
    WS_LISTENER_PROPERTY_DISALLOWED_USER_AGENT		    = 16,
    }

endif

.enum WS_IP_VERSION {
    WS_IP_VERSION_4	   = 1,
    WS_IP_VERSION_6	   = 2,
    WS_IP_VERSION_AUTO	   = 3,
    }

if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)

.enum {
    WS_MATCH_URL_DNS_HOST		      = 0x1,
    WS_MATCH_URL_DNS_FULLY_QUALIFIED_HOST     = 0x2,
    WS_MATCH_URL_NETBIOS_HOST		      = 0x4,
    WS_MATCH_URL_LOCAL_HOST		      = 0x8,
    WS_MATCH_URL_HOST_ADDRESSES		      = 0x10,
    WS_MATCH_URL_THIS_HOST		      = (WS_MATCH_URL_DNS_HOST or WS_MATCH_URL_DNS_FULLY_QUALIFIED_HOST or WS_MATCH_URL_NETBIOS_HOST or WS_MATCH_URL_LOCAL_HOST or WS_MATCH_URL_HOST_ADDRESSES),
    WS_MATCH_URL_PORT			      = 0x20,
    WS_MATCH_URL_EXACT_PATH		      = 0x40,
    WS_MATCH_URL_PREFIX_PATH		      = 0x80,
    WS_MATCH_URL_NO_QUERY		      = 0x100,
    }

endif

.enum WS_MESSAGE_STATE {
    WS_MESSAGE_STATE_EMPTY	     = 1,
    WS_MESSAGE_STATE_INITIALIZED     = 2,
    WS_MESSAGE_STATE_READING	     = 3,
    WS_MESSAGE_STATE_WRITING	     = 4,
    WS_MESSAGE_STATE_DONE	     = 5,
    }

.enum WS_MESSAGE_INITIALIZATION {
    WS_BLANK_MESSAGE	     = 0,
    WS_DUPLICATE_MESSAGE     = 1,
    WS_REQUEST_MESSAGE	     = 2,
    WS_REPLY_MESSAGE	     = 3,
    WS_FAULT_MESSAGE	     = 4,
    }

.enum WS_REPEATING_HEADER_OPTION {
    WS_REPEATING_HEADER	    = 1,
    WS_SINGLETON_HEADER	    = 2,
    }

.enum WS_HEADER_TYPE {
    WS_ACTION_HEADER	     = 1,
    WS_TO_HEADER	     = 2,
    WS_MESSAGE_ID_HEADER     = 3,
    WS_RELATES_TO_HEADER     = 4,
    WS_FROM_HEADER	     = 5,
    WS_REPLY_TO_HEADER	     = 6,
    WS_FAULT_TO_HEADER	     = 7,
    }

.enum {
    WS_MUST_UNDERSTAND_HEADER_ATTRIBUTE	    = 0x1,
    WS_RELAY_HEADER_ATTRIBUTE		    = 0x2,
    }

.enum WS_ADDRESSING_VERSION {
    WS_ADDRESSING_VERSION_0_9		= 1,
    WS_ADDRESSING_VERSION_1_0		= 2,
    WS_ADDRESSING_VERSION_TRANSPORT	= 3,
    }

.enum WS_ENVELOPE_VERSION {
    WS_ENVELOPE_VERSION_SOAP_1_1     = 1,
    WS_ENVELOPE_VERSION_SOAP_1_2     = 2,
    WS_ENVELOPE_VERSION_NONE	     = 3,
    }

.enum WS_MESSAGE_PROPERTY_ID {
    WS_MESSAGE_PROPERTY_STATE				     = 0,
    WS_MESSAGE_PROPERTY_HEAP				     = 1,
    WS_MESSAGE_PROPERTY_ENVELOPE_VERSION		     = 2,
    WS_MESSAGE_PROPERTY_ADDRESSING_VERSION		     = 3,
    WS_MESSAGE_PROPERTY_HEADER_BUFFER			     = 4,
    WS_MESSAGE_PROPERTY_HEADER_POSITION			     = 5,
    WS_MESSAGE_PROPERTY_BODY_READER			     = 6,
    WS_MESSAGE_PROPERTY_BODY_WRITER			     = 7,
    WS_MESSAGE_PROPERTY_IS_ADDRESSED			     = 8,
    WS_MESSAGE_PROPERTY_HEAP_PROPERTIES			     = 9,
    WS_MESSAGE_PROPERTY_XML_READER_PROPERTIES		     = 10,
    WS_MESSAGE_PROPERTY_XML_WRITER_PROPERTIES		     = 11,
    WS_MESSAGE_PROPERTY_IS_FAULT			     = 12,
    WS_MESSAGE_PROPERTY_MAX_PROCESSED_HEADERS		     = 13,
    WS_MESSAGE_PROPERTY_USERNAME			     = 14,
    WS_MESSAGE_PROPERTY_ENCODED_CERT			     = 15,
    WS_MESSAGE_PROPERTY_TRANSPORT_SECURITY_WINDOWS_TOKEN     = 16,
    WS_MESSAGE_PROPERTY_HTTP_HEADER_AUTH_WINDOWS_TOKEN	     = 17,
    WS_MESSAGE_PROPERTY_MESSAGE_SECURITY_WINDOWS_TOKEN	     = 18,
    WS_MESSAGE_PROPERTY_SAML_ASSERTION			     = 19,
    WS_MESSAGE_PROPERTY_SECURITY_CONTEXT		     = 20,
    WS_MESSAGE_PROPERTY_PROTECTION_LEVEL		     = 21,
    }

.enum WS_SECURITY_BINDING_TYPE {
    WS_SSL_TRANSPORT_SECURITY_BINDING_TYPE		  = 1,
    WS_TCP_SSPI_TRANSPORT_SECURITY_BINDING_TYPE		  = 2,
    WS_HTTP_HEADER_AUTH_SECURITY_BINDING_TYPE		  = 3,
    WS_USERNAME_MESSAGE_SECURITY_BINDING_TYPE		  = 4,
    WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING_TYPE	  = 5,
    WS_XML_TOKEN_MESSAGE_SECURITY_BINDING_TYPE		  = 6,
    WS_SAML_MESSAGE_SECURITY_BINDING_TYPE		  = 7,
    WS_SECURITY_CONTEXT_MESSAGE_SECURITY_BINDING_TYPE	  = 8,
    WS_NAMEDPIPE_SSPI_TRANSPORT_SECURITY_BINDING_TYPE	  = 9,
    }

.enum {
    WS_HTTP_HEADER_AUTH_SCHEME_NONE	     = 0x1,
    WS_HTTP_HEADER_AUTH_SCHEME_BASIC	     = 0x2,
    WS_HTTP_HEADER_AUTH_SCHEME_DIGEST	     = 0x4,
if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
    WS_HTTP_HEADER_AUTH_SCHEME_NTLM	     = 0x8,
endif
    WS_HTTP_HEADER_AUTH_SCHEME_NEGOTIATE     = 0x10,
    WS_HTTP_HEADER_AUTH_SCHEME_PASSPORT	     = 0x20,
    }

.enum WS_HTTP_HEADER_AUTH_TARGET {
    WS_HTTP_HEADER_AUTH_TARGET_SERVICE	   = 1,
    WS_HTTP_HEADER_AUTH_TARGET_PROXY	   = 2,
    }

.enum WS_WINDOWS_INTEGRATED_AUTH_PACKAGE {
    WS_WINDOWS_INTEGRATED_AUTH_PACKAGE_KERBEROS	    = 1,
if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
    WS_WINDOWS_INTEGRATED_AUTH_PACKAGE_NTLM	    = 2,
endif
    WS_WINDOWS_INTEGRATED_AUTH_PACKAGE_SPNEGO	    = 3,
    }

.enum WS_SECURITY_HEADER_VERSION {
    WS_SECURITY_HEADER_VERSION_1_0     = 0x1,
    WS_SECURITY_HEADER_VERSION_1_1     = 0x2,
    }

.enum WS_TRUST_VERSION {
    WS_TRUST_VERSION_FEBRUARY_2005     = 0x1,
    WS_TRUST_VERSION_1_3	       = 0x2,
    }

.enum WS_REQUEST_SECURITY_TOKEN_ACTION {
    WS_REQUEST_SECURITY_TOKEN_ACTION_ISSUE	       = 1,
    WS_REQUEST_SECURITY_TOKEN_ACTION_NEW_CONTEXT       = 2,
    WS_REQUEST_SECURITY_TOKEN_ACTION_RENEW_CONTEXT     = 3,
    }

.enum WS_SECURE_CONVERSATION_VERSION {
    WS_SECURE_CONVERSATION_VERSION_FEBRUARY_2005     = 0x1,
    WS_SECURE_CONVERSATION_VERSION_1_3		     = 0x2,
    }

.enum WS_SECURE_PROTOCOL {
    WS_SECURE_PROTOCOL_SSL2	  = 0x1,
    WS_SECURE_PROTOCOL_SSL3	  = 0x2,
    WS_SECURE_PROTOCOL_TLS1_0	  = 0x4,
    WS_SECURE_PROTOCOL_TLS1_1	  = 0x8,
    WS_SECURE_PROTOCOL_TLS1_2	  = 0x10,
    }

.enum WS_SECURITY_TIMESTAMP_USAGE {
    WS_SECURITY_TIMESTAMP_USAGE_ALWAYS		  = 1,
    WS_SECURITY_TIMESTAMP_USAGE_NEVER		  = 2,
    WS_SECURITY_TIMESTAMP_USAGE_REQUESTS_ONLY	  = 3,
    }

.enum WS_SECURITY_HEADER_LAYOUT {
    WS_SECURITY_HEADER_LAYOUT_STRICT			   = 1,
    WS_SECURITY_HEADER_LAYOUT_LAX			   = 2,
    WS_SECURITY_HEADER_LAYOUT_LAX_WITH_TIMESTAMP_FIRST	   = 3,
    WS_SECURITY_HEADER_LAYOUT_LAX_WITH_TIMESTAMP_LAST	   = 4,
    }

.enum WS_SECURITY_ALGORITHM_PROPERTY_ID {
    }

.enum WS_SECURITY_ALGORITHM_ID {
    WS_SECURITY_ALGORITHM_DEFAULT				       = 0,
    WS_SECURITY_ALGORITHM_CANONICALIZATION_EXCLUSIVE		       = 1,
    WS_SECURITY_ALGORITHM_CANONICALIZATION_EXCLUSIVE_WITH_COMMENTS     = 2,
    WS_SECURITY_ALGORITHM_DIGEST_SHA1				       = 3,
    WS_SECURITY_ALGORITHM_DIGEST_SHA_256			       = 4,
    WS_SECURITY_ALGORITHM_DIGEST_SHA_384			       = 5,
    WS_SECURITY_ALGORITHM_DIGEST_SHA_512			       = 6,
    WS_SECURITY_ALGORITHM_SYMMETRIC_SIGNATURE_HMAC_SHA1		       = 7,
    WS_SECURITY_ALGORITHM_SYMMETRIC_SIGNATURE_HMAC_SHA_256	       = 8,
    WS_SECURITY_ALGORITHM_SYMMETRIC_SIGNATURE_HMAC_SHA_384	       = 9,
    WS_SECURITY_ALGORITHM_SYMMETRIC_SIGNATURE_HMAC_SHA_512	       = 10,
    WS_SECURITY_ALGORITHM_ASYMMETRIC_SIGNATURE_RSA_SHA1		       = 11,
    WS_SECURITY_ALGORITHM_ASYMMETRIC_SIGNATURE_DSA_SHA1		       = 12,
    WS_SECURITY_ALGORITHM_ASYMMETRIC_SIGNATURE_RSA_SHA_256	       = 13,
    WS_SECURITY_ALGORITHM_ASYMMETRIC_SIGNATURE_RSA_SHA_384	       = 14,
    WS_SECURITY_ALGORITHM_ASYMMETRIC_SIGNATURE_RSA_SHA_512	       = 15,
    WS_SECURITY_ALGORITHM_ASYMMETRIC_KEYWRAP_RSA_1_5		       = 16,
    WS_SECURITY_ALGORITHM_ASYMMETRIC_KEYWRAP_RSA_OAEP		       = 17,
    WS_SECURITY_ALGORITHM_KEY_DERIVATION_P_SHA1			       = 18,
    }

.enum WS_PROTECTION_LEVEL {
    WS_PROTECTION_LEVEL_NONE		     = 1,
    WS_PROTECTION_LEVEL_SIGN		     = 2,
    WS_PROTECTION_LEVEL_SIGN_AND_ENCRYPT     = 3,
    }

.enum WS_SECURITY_PROPERTY_ID {
    WS_SECURITY_PROPERTY_TRANSPORT_PROTECTION_LEVEL	  = 1,
    WS_SECURITY_PROPERTY_ALGORITHM_SUITE		  = 2,
    WS_SECURITY_PROPERTY_ALGORITHM_SUITE_NAME		  = 3,
    WS_SECURITY_PROPERTY_MAX_ALLOWED_LATENCY		  = 4,
    WS_SECURITY_PROPERTY_TIMESTAMP_VALIDITY_DURATION	  = 5,
    WS_SECURITY_PROPERTY_MAX_ALLOWED_CLOCK_SKEW		  = 6,
    WS_SECURITY_PROPERTY_TIMESTAMP_USAGE		  = 7,
    WS_SECURITY_PROPERTY_SECURITY_HEADER_LAYOUT		  = 8,
    WS_SECURITY_PROPERTY_SECURITY_HEADER_VERSION	  = 9,
    WS_SECURITY_PROPERTY_EXTENDED_PROTECTION_POLICY	  = 10,
    WS_SECURITY_PROPERTY_EXTENDED_PROTECTION_SCENARIO	  = 11,
    WS_SECURITY_PROPERTY_SERVICE_IDENTITIES		  = 12,
    }

.enum WS_SECURITY_KEY_TYPE {
    WS_SECURITY_KEY_TYPE_NONE		= 1,
    WS_SECURITY_KEY_TYPE_SYMMETRIC	= 2,
    WS_SECURITY_KEY_TYPE_ASYMMETRIC	= 3,
    }

.enum WS_SECURITY_ALGORITHM_SUITE_NAME {
    WS_SECURITY_ALGORITHM_SUITE_NAME_BASIC256		       = 1,
    WS_SECURITY_ALGORITHM_SUITE_NAME_BASIC192		       = 2,
    WS_SECURITY_ALGORITHM_SUITE_NAME_BASIC128		       = 3,
    WS_SECURITY_ALGORITHM_SUITE_NAME_BASIC256_RSA15	       = 4,
    WS_SECURITY_ALGORITHM_SUITE_NAME_BASIC192_RSA15	       = 5,
    WS_SECURITY_ALGORITHM_SUITE_NAME_BASIC128_RSA15	       = 6,
    WS_SECURITY_ALGORITHM_SUITE_NAME_BASIC256_SHA256	       = 7,
    WS_SECURITY_ALGORITHM_SUITE_NAME_BASIC192_SHA256	       = 8,
    WS_SECURITY_ALGORITHM_SUITE_NAME_BASIC128_SHA256	       = 9,
    WS_SECURITY_ALGORITHM_SUITE_NAME_BASIC256_SHA256_RSA15     = 10,
    WS_SECURITY_ALGORITHM_SUITE_NAME_BASIC192_SHA256_RSA15     = 11,
    WS_SECURITY_ALGORITHM_SUITE_NAME_BASIC128_SHA256_RSA15     = 12,
    }

.enum WS_SECURITY_TOKEN_REFERENCE_MODE {
    WS_SECURITY_TOKEN_REFERENCE_MODE_LOCAL_ID		     = 1,
    WS_SECURITY_TOKEN_REFERENCE_MODE_XML_BUFFER		     = 2,
    WS_SECURITY_TOKEN_REFERENCE_MODE_CERT_THUMBPRINT	     = 3,
    WS_SECURITY_TOKEN_REFERENCE_MODE_SECURITY_CONTEXT_ID     = 4,
    WS_SECURITY_TOKEN_REFERENCE_MODE_SAML_ASSERTION_ID	     = 5,
    }

.enum {
    WS_CERT_FAILURE_CN_MISMATCH		   = 0x1,
    WS_CERT_FAILURE_INVALID_DATE	   = 0x2,
    WS_CERT_FAILURE_UNTRUSTED_ROOT	   = 0x4,
    WS_CERT_FAILURE_WRONG_USAGE		   = 0x8,
    WS_CERT_FAILURE_REVOCATION_OFFLINE	   = 0x10,
    }

.enum WS_SECURITY_KEY_ENTROPY_MODE {
    WS_SECURITY_KEY_ENTROPY_MODE_CLIENT_ONLY	 = 1,
    WS_SECURITY_KEY_ENTROPY_MODE_SERVER_ONLY	 = 2,
    WS_SECURITY_KEY_ENTROPY_MODE_COMBINED	 = 3,
    }

.enum WS_EXTENDED_PROTECTION_POLICY {
    WS_EXTENDED_PROTECTION_POLICY_NEVER		     = 1,
    WS_EXTENDED_PROTECTION_POLICY_WHEN_SUPPORTED     = 2,
    WS_EXTENDED_PROTECTION_POLICY_ALWAYS	     = 3,
    }

.enum WS_EXTENDED_PROTECTION_SCENARIO {
    WS_EXTENDED_PROTECTION_SCENARIO_BOUND_SERVER       = 1,
    WS_EXTENDED_PROTECTION_SCENARIO_TERMINATED_SSL     = 2,
    }

.enum WS_SECURITY_BINDING_PROPERTY_ID {
    WS_SECURITY_BINDING_PROPERTY_REQUIRE_SSL_CLIENT_CERT		     = 1,
    WS_SECURITY_BINDING_PROPERTY_WINDOWS_INTEGRATED_AUTH_PACKAGE	     = 2,
    WS_SECURITY_BINDING_PROPERTY_REQUIRE_SERVER_AUTH			     = 3,
    WS_SECURITY_BINDING_PROPERTY_ALLOW_ANONYMOUS_CLIENTS		     = 4,
    WS_SECURITY_BINDING_PROPERTY_ALLOWED_IMPERSONATION_LEVEL		     = 5,
    WS_SECURITY_BINDING_PROPERTY_HTTP_HEADER_AUTH_SCHEME		     = 6,
    WS_SECURITY_BINDING_PROPERTY_HTTP_HEADER_AUTH_TARGET		     = 7,
    WS_SECURITY_BINDING_PROPERTY_HTTP_HEADER_AUTH_BASIC_REALM		     = 8,
    WS_SECURITY_BINDING_PROPERTY_HTTP_HEADER_AUTH_DIGEST_REALM		     = 9,
    WS_SECURITY_BINDING_PROPERTY_HTTP_HEADER_AUTH_DIGEST_DOMAIN		     = 10,
    WS_SECURITY_BINDING_PROPERTY_SECURITY_CONTEXT_KEY_SIZE		     = 11,
    WS_SECURITY_BINDING_PROPERTY_SECURITY_CONTEXT_KEY_ENTROPY_MODE	     = 12,
    WS_SECURITY_BINDING_PROPERTY_MESSAGE_PROPERTIES			     = 13,
    WS_SECURITY_BINDING_PROPERTY_SECURITY_CONTEXT_MAX_PENDING_CONTEXTS	     = 14,
    WS_SECURITY_BINDING_PROPERTY_SECURITY_CONTEXT_MAX_ACTIVE_CONTEXTS	     = 15,
    WS_SECURITY_BINDING_PROPERTY_SECURE_CONVERSATION_VERSION		     = 16,
    WS_SECURITY_BINDING_PROPERTY_SECURITY_CONTEXT_SUPPORT_RENEW		     = 17,
    WS_SECURITY_BINDING_PROPERTY_SECURITY_CONTEXT_RENEWAL_INTERVAL	     = 18,
    WS_SECURITY_BINDING_PROPERTY_SECURITY_CONTEXT_ROLLOVER_INTERVAL	     = 19,
    WS_SECURITY_BINDING_PROPERTY_CERT_FAILURES_TO_IGNORE		     = 20,
    WS_SECURITY_BINDING_PROPERTY_DISABLE_CERT_REVOCATION_CHECK		     = 21,
    WS_SECURITY_BINDING_PROPERTY_DISALLOWED_SECURE_PROTOCOLS		     = 22,
    WS_SECURITY_BINDING_PROPERTY_CERTIFICATE_VALIDATION_CALLBACK_CONTEXT     = 23,
    }

.enum WS_CERT_CREDENTIAL_TYPE {
    WS_SUBJECT_NAME_CERT_CREDENTIAL_TYPE     = 1,
    WS_THUMBPRINT_CERT_CREDENTIAL_TYPE	     = 2,
    WS_CUSTOM_CERT_CREDENTIAL_TYPE	     = 3,
    }

.enum WS_WINDOWS_INTEGRATED_AUTH_CREDENTIAL_TYPE {
    WS_STRING_WINDOWS_INTEGRATED_AUTH_CREDENTIAL_TYPE	   = 1,
    WS_DEFAULT_WINDOWS_INTEGRATED_AUTH_CREDENTIAL_TYPE	   = 2,
    WS_OPAQUE_WINDOWS_INTEGRATED_AUTH_CREDENTIAL_TYPE	   = 3,
    }

.enum WS_USERNAME_CREDENTIAL_TYPE {
    WS_STRING_USERNAME_CREDENTIAL_TYPE	   = 1,
    }

.enum WS_SECURITY_TOKEN_PROPERTY_ID {
    WS_SECURITY_TOKEN_PROPERTY_KEY_TYPE			    = 1,
    WS_SECURITY_TOKEN_PROPERTY_VALID_FROM_TIME		    = 2,
    WS_SECURITY_TOKEN_PROPERTY_VALID_TILL_TIME		    = 3,
    WS_SECURITY_TOKEN_PROPERTY_SERIALIZED_XML		    = 4,
    WS_SECURITY_TOKEN_PROPERTY_ATTACHED_REFERENCE_XML	    = 5,
    WS_SECURITY_TOKEN_PROPERTY_UNATTACHED_REFERENCE_XML	    = 6,
    WS_SECURITY_TOKEN_PROPERTY_SYMMETRIC_KEY		    = 7,
    }

.enum WS_SECURITY_KEY_HANDLE_TYPE {
    WS_RAW_SYMMETRIC_SECURITY_KEY_HANDLE_TYPE	      = 1,
if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
    WS_NCRYPT_ASYMMETRIC_SECURITY_KEY_HANDLE_TYPE     = 2,
    WS_CAPI_ASYMMETRIC_SECURITY_KEY_HANDLE_TYPE	      = 3,
endif
    }

.enum WS_MESSAGE_SECURITY_USAGE {
    WS_SUPPORTING_MESSAGE_SECURITY_USAGE     = 1,
    }

.enum WS_SECURITY_CONTEXT_PROPERTY_ID {
    WS_SECURITY_CONTEXT_PROPERTY_IDENTIFIER			    = 1,
    WS_SECURITY_CONTEXT_PROPERTY_USERNAME			    = 2,
    WS_SECURITY_CONTEXT_PROPERTY_MESSAGE_SECURITY_WINDOWS_TOKEN	    = 3,
    WS_SECURITY_CONTEXT_PROPERTY_SAML_ASSERTION			    = 4,
    }

.enum WS_XML_SECURITY_TOKEN_PROPERTY_ID {
    WS_XML_SECURITY_TOKEN_PROPERTY_ATTACHED_REFERENCE	    = 1,
    WS_XML_SECURITY_TOKEN_PROPERTY_UNATTACHED_REFERENCE	    = 2,
    WS_XML_SECURITY_TOKEN_PROPERTY_VALID_FROM_TIME	    = 3,
    WS_XML_SECURITY_TOKEN_PROPERTY_VALID_TILL_TIME	    = 4,
    }

.enum WS_SAML_AUTHENTICATOR_TYPE {
    WS_CERT_SIGNED_SAML_AUTHENTICATOR_TYPE     = 1,
    }

.enum WS_REQUEST_SECURITY_TOKEN_PROPERTY_ID {
    WS_REQUEST_SECURITY_TOKEN_PROPERTY_APPLIES_TO		       = 1,
    WS_REQUEST_SECURITY_TOKEN_PROPERTY_TRUST_VERSION		       = 2,
    WS_REQUEST_SECURITY_TOKEN_PROPERTY_SECURE_CONVERSATION_VERSION     = 3,
    WS_REQUEST_SECURITY_TOKEN_PROPERTY_ISSUED_TOKEN_TYPE	       = 4,
    WS_REQUEST_SECURITY_TOKEN_PROPERTY_REQUEST_ACTION		       = 5,
    WS_REQUEST_SECURITY_TOKEN_PROPERTY_EXISTING_TOKEN		       = 6,
    WS_REQUEST_SECURITY_TOKEN_PROPERTY_ISSUED_TOKEN_KEY_TYPE	       = 7,
    WS_REQUEST_SECURITY_TOKEN_PROPERTY_ISSUED_TOKEN_KEY_SIZE	       = 8,
    WS_REQUEST_SECURITY_TOKEN_PROPERTY_ISSUED_TOKEN_KEY_ENTROPY	       = 9,
    WS_REQUEST_SECURITY_TOKEN_PROPERTY_LOCAL_REQUEST_PARAMETERS	       = 10,
    WS_REQUEST_SECURITY_TOKEN_PROPERTY_SERVICE_REQUEST_PARAMETERS      = 11,
    WS_REQUEST_SECURITY_TOKEN_PROPERTY_MESSAGE_PROPERTIES	       = 12,
    }

.enum WS_TYPE {
    WS_BOOL_TYPE		 = 0,
    WS_INT8_TYPE		 = 1,
    WS_INT16_TYPE		 = 2,
    WS_INT32_TYPE		 = 3,
    WS_INT64_TYPE		 = 4,
    WS_UINT8_TYPE		 = 5,
    WS_UINT16_TYPE		 = 6,
    WS_UINT32_TYPE		 = 7,
    WS_UINT64_TYPE		 = 8,
    WS_FLOAT_TYPE		 = 9,
    WS_DOUBLE_TYPE		 = 10,
    WS_DECIMAL_TYPE		 = 11,
    WS_DATETIME_TYPE		 = 12,
    WS_TIMESPAN_TYPE		 = 13,
    WS_GUID_TYPE		 = 14,
    WS_UNIQUE_ID_TYPE		 = 15,
    WS_STRING_TYPE		 = 16,
    WS_WSZ_TYPE			 = 17,
    WS_BYTES_TYPE		 = 18,
    WS_XML_STRING_TYPE		 = 19,
    WS_XML_QNAME_TYPE		 = 20,
    WS_XML_BUFFER_TYPE		 = 21,
    WS_CHAR_ARRAY_TYPE		 = 22,
    WS_UTF8_ARRAY_TYPE		 = 23,
    WS_BYTE_ARRAY_TYPE		 = 24,
    WS_DESCRIPTION_TYPE		 = 25,
    WS_STRUCT_TYPE		 = 26,
    WS_CUSTOM_TYPE		 = 27,
    WS_ENDPOINT_ADDRESS_TYPE	 = 28,
    WS_FAULT_TYPE		 = 29,
    WS_VOID_TYPE		 = 30,
    WS_ENUM_TYPE		 = 31,
    WS_DURATION_TYPE		 = 32,
    WS_UNION_TYPE		 = 33,
    WS_ANY_ATTRIBUTES_TYPE	 = 34,
    }

.enum WS_FIELD_MAPPING {
    WS_TYPE_ATTRIBUTE_FIELD_MAPPING		  = 0,
    WS_ATTRIBUTE_FIELD_MAPPING			  = 1,
    WS_ELEMENT_FIELD_MAPPING			  = 2,
    WS_REPEATING_ELEMENT_FIELD_MAPPING		  = 3,
    WS_TEXT_FIELD_MAPPING			  = 4,
    WS_NO_FIELD_MAPPING				  = 5,
    WS_XML_ATTRIBUTE_FIELD_MAPPING		  = 6,
    WS_ELEMENT_CHOICE_FIELD_MAPPING		  = 7,
    WS_REPEATING_ELEMENT_CHOICE_FIELD_MAPPING	  = 8,
    WS_ANY_ELEMENT_FIELD_MAPPING		  = 9,
    WS_REPEATING_ANY_ELEMENT_FIELD_MAPPING	  = 10,
    WS_ANY_CONTENT_FIELD_MAPPING		  = 11,
    WS_ANY_ATTRIBUTES_FIELD_MAPPING		  = 12,
    }

.enum {
    WS_STRUCT_ABSTRACT				  = 0x1,
    WS_STRUCT_IGNORE_TRAILING_ELEMENT_CONTENT	  = 0x2,
    WS_STRUCT_IGNORE_UNHANDLED_ATTRIBUTES	  = 0x4,
    }

.enum {
    WS_FIELD_POINTER		 = 0x1,
    WS_FIELD_OPTIONAL		 = 0x2,
    WS_FIELD_NILLABLE		 = 0x4,
    WS_FIELD_NILLABLE_ITEM	 = 0x8,
    WS_FIELD_OTHER_NAMESPACE	 = 0x10,
    }

.enum WS_TYPE_MAPPING {
    WS_ELEMENT_TYPE_MAPPING		= 1,
    WS_ATTRIBUTE_TYPE_MAPPING		= 2,
    WS_ELEMENT_CONTENT_TYPE_MAPPING	= 3,
    WS_ANY_ELEMENT_TYPE_MAPPING		= 4,
    }

.enum WS_READ_OPTION {
    WS_READ_REQUIRED_VALUE	 = 1,
    WS_READ_REQUIRED_POINTER	 = 2,
    WS_READ_OPTIONAL_POINTER	 = 3,
    WS_READ_NILLABLE_POINTER	 = 4,
    WS_READ_NILLABLE_VALUE	 = 5,
    }

.enum WS_WRITE_OPTION {
    WS_WRITE_REQUIRED_VALUE	  = 1,
    WS_WRITE_REQUIRED_POINTER	  = 2,
    WS_WRITE_NILLABLE_VALUE	  = 3,
    WS_WRITE_NILLABLE_POINTER	  = 4,
    }

if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)

.enum WS_SERVICE_CANCEL_REASON {
    WS_SERVICE_HOST_ABORT	   = 0,
    WS_SERVICE_CHANNEL_FAULTED	   = 1,
    }

endif

.enum WS_OPERATION_STYLE {
    WS_NON_RPC_LITERAL_OPERATION     = 0,
    WS_RPC_LITERAL_OPERATION	     = 1,
    }

.enum WS_PARAMETER_TYPE {
    WS_PARAMETER_TYPE_NORMAL	      = 0,
    WS_PARAMETER_TYPE_ARRAY	      = 1,
    WS_PARAMETER_TYPE_ARRAY_COUNT     = 2,
    WS_PARAMETER_TYPE_MESSAGES	      = 3,
    }

if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)

.enum {
    WS_SERVICE_OPERATION_MESSAGE_NILLABLE_ELEMENT     = 0x1,
    }

.enum WS_SERVICE_ENDPOINT_PROPERTY_ID {
    WS_SERVICE_ENDPOINT_PROPERTY_ACCEPT_CHANNEL_CALLBACK	  = 0,
    WS_SERVICE_ENDPOINT_PROPERTY_CLOSE_CHANNEL_CALLBACK		  = 1,
    WS_SERVICE_ENDPOINT_PROPERTY_MAX_ACCEPTING_CHANNELS		  = 2,
    WS_SERVICE_ENDPOINT_PROPERTY_MAX_CONCURRENCY		  = 3,
    WS_SERVICE_ENDPOINT_PROPERTY_BODY_HEAP_MAX_SIZE		  = 4,
    WS_SERVICE_ENDPOINT_PROPERTY_BODY_HEAP_TRIM_SIZE		  = 5,
    WS_SERVICE_ENDPOINT_PROPERTY_MESSAGE_PROPERTIES		  = 6,
    WS_SERVICE_ENDPOINT_PROPERTY_MAX_CALL_POOL_SIZE		  = 7,
    WS_SERVICE_ENDPOINT_PROPERTY_MAX_CHANNEL_POOL_SIZE		  = 8,
    WS_SERVICE_ENDPOINT_PROPERTY_LISTENER_PROPERTIES		  = 9,
    WS_SERVICE_ENDPOINT_PROPERTY_CHECK_MUST_UNDERSTAND		  = 10,
    WS_SERVICE_ENDPOINT_PROPERTY_METADATA_EXCHANGE_TYPE		  = 11,
    WS_SERVICE_ENDPOINT_PROPERTY_METADATA			  = 12,
    WS_SERVICE_ENDPOINT_PROPERTY_METADATA_EXCHANGE_URL_SUFFIX	  = 13,
    WS_SERVICE_ENDPOINT_PROPERTY_MAX_CHANNELS			  = 14,
    }

.enum WS_METADATA_EXCHANGE_TYPE {
    WS_METADATA_EXCHANGE_TYPE_NONE	   = 0,
    WS_METADATA_EXCHANGE_TYPE_MEX	   = 1,
    WS_METADATA_EXCHANGE_TYPE_HTTP_GET	   = 2,
    }

.enum WS_SERVICE_PROPERTY_ID {
    WS_SERVICE_PROPERTY_HOST_USER_STATE	     = 0,
    WS_SERVICE_PROPERTY_FAULT_DISCLOSURE     = 1,
    WS_SERVICE_PROPERTY_FAULT_LANGID	     = 2,
    WS_SERVICE_PROPERTY_HOST_STATE	     = 3,
    WS_SERVICE_PROPERTY_METADATA	     = 4,
    WS_SERVICE_PROPERTY_CLOSE_TIMEOUT	     = 5,
    }

.enum WS_SERVICE_HOST_STATE {
    WS_SERVICE_HOST_STATE_CREATED     = 0,
    WS_SERVICE_HOST_STATE_OPENING     = 1,
    WS_SERVICE_HOST_STATE_OPEN	      = 2,
    WS_SERVICE_HOST_STATE_CLOSING     = 3,
    WS_SERVICE_HOST_STATE_CLOSED      = 4,
    WS_SERVICE_HOST_STATE_FAULTED     = 5,
    }

endif

.enum WS_SERVICE_PROXY_STATE {
    WS_SERVICE_PROXY_STATE_CREATED     = 0,
    WS_SERVICE_PROXY_STATE_OPENING     = 1,
    WS_SERVICE_PROXY_STATE_OPEN	       = 2,
    WS_SERVICE_PROXY_STATE_CLOSING     = 3,
    WS_SERVICE_PROXY_STATE_CLOSED      = 4,
    WS_SERVICE_PROXY_STATE_FAULTED     = 5,
    }

.enum WS_PROXY_PROPERTY_ID {
    WS_PROXY_PROPERTY_CALL_TIMEOUT	     = 0,
    WS_PROXY_PROPERTY_MESSAGE_PROPERTIES     = 1,
    WS_PROXY_PROPERTY_MAX_CALL_POOL_SIZE     = 2,
    WS_PROXY_PROPERTY_STATE		     = 3,
    WS_PROXY_PROPERTY_MAX_PENDING_CALLS	     = 4,
    WS_PROXY_PROPERTY_MAX_CLOSE_TIMEOUT	     = 5,
    WS_PROXY_FAULT_LANG_ID		     = 6,
    }

.enum WS_CALL_PROPERTY_ID {
    WS_CALL_PROPERTY_CHECK_MUST_UNDERSTAND	 = 0,
    WS_CALL_PROPERTY_SEND_MESSAGE_CONTEXT	 = 1,
    WS_CALL_PROPERTY_RECEIVE_MESSAGE_CONTEXT	 = 2,
    WS_CALL_PROPERTY_CALL_ID			 = 3,
    }

.enum WS_TRACE_API {
    WS_TRACE_API_NONE					   = -1,
    WS_TRACE_API_START_READER_CANONICALIZATION		   = 0,
    WS_TRACE_API_END_READER_CANONICALIZATION		   = 1,
    WS_TRACE_API_START_WRITER_CANONICALIZATION		   = 2,
    WS_TRACE_API_END_WRITER_CANONICALIZATION		   = 3,
    WS_TRACE_API_CREATE_XML_BUFFER			   = 4,
    WS_TRACE_API_REMOVE_NODE				   = 5,
    WS_TRACE_API_CREATE_READER				   = 6,
    WS_TRACE_API_SET_INPUT				   = 7,
    WS_TRACE_API_SET_INPUT_TO_BUFFER			   = 8,
    WS_TRACE_API_FREE_XML_READER			   = 9,
    WS_TRACE_API_GET_READER_PROPERTY			   = 10,
    WS_TRACE_API_GET_READER_NODE			   = 11,
    WS_TRACE_API_FILL_READER				   = 12,
    WS_TRACE_API_READ_START_ELEMENT			   = 13,
    WS_TRACE_API_READ_TO_START_ELEMENT			   = 14,
    WS_TRACE_API_READ_START_ATTRIBUTE			   = 15,
    WS_TRACE_API_READ_END_ATTRIBUTE			   = 16,
    WS_TRACE_API_READ_NODE				   = 17,
    WS_TRACE_API_SKIP_NODE				   = 18,
    WS_TRACE_API_READ_END_ELEMENT			   = 19,
    WS_TRACE_API_FIND_ATTRIBUTE				   = 20,
    WS_TRACE_API_READ_ELEMENT_VALUE			   = 21,
    WS_TRACE_API_READ_CHARS				   = 22,
    WS_TRACE_API_READ_CHARS_UTF8			   = 23,
    WS_TRACE_API_READ_BYTES				   = 24,
    WS_TRACE_API_READ_ARRAY				   = 25,
    WS_TRACE_API_GET_READER_POSITION			   = 26,
    WS_TRACE_API_SET_READER_POSITION			   = 27,
    WS_TRACE_API_MOVE_READER				   = 28,
    WS_TRACE_API_CREATE_WRITER				   = 29,
    WS_TRACE_API_FREE_XML_WRITER			   = 30,
    WS_TRACE_API_SET_OUTPUT				   = 31,
    WS_TRACE_API_SET_OUTPUT_TO_BUFFER			   = 32,
    WS_TRACE_API_GET_WRITER_PROPERTY			   = 33,
    WS_TRACE_API_FLUSH_WRITER				   = 34,
    WS_TRACE_API_WRITE_START_ELEMENT			   = 35,
    WS_TRACE_API_WRITE_END_START_ELEMENT		   = 36,
    WS_TRACE_API_WRITE_XMLNS_ATTRIBUTE			   = 37,
    WS_TRACE_API_WRITE_START_ATTRIBUTE			   = 38,
    WS_TRACE_API_WRITE_END_ATTRIBUTE			   = 39,
    WS_TRACE_API_WRITE_VALUE				   = 40,
    WS_TRACE_API_WRITE_XML_BUFFER			   = 41,
    WS_TRACE_API_READ_XML_BUFFER			   = 42,
    WS_TRACE_API_WRITE_XML_BUFFER_TO_BYTES		   = 43,
    WS_TRACE_API_READ_XML_BUFFER_FROM_BYTES		   = 44,
    WS_TRACE_API_WRITE_ARRAY				   = 45,
    WS_TRACE_API_WRITE_QUALIFIED_NAME			   = 46,
    WS_TRACE_API_WRITE_CHARS				   = 47,
    WS_TRACE_API_WRITE_CHARS_UTF8			   = 48,
    WS_TRACE_API_WRITE_BYTES				   = 49,
    WS_TRACE_API_PUSH_BYTES				   = 50,
    WS_TRACE_API_PULL_BYTES				   = 51,
    WS_TRACE_API_WRITE_END_ELEMENT			   = 52,
    WS_TRACE_API_WRITE_TEXT				   = 53,
    WS_TRACE_API_WRITE_START_CDATA			   = 54,
    WS_TRACE_API_WRITE_END_CDATA			   = 55,
    WS_TRACE_API_WRITE_NODE				   = 56,
    WS_TRACE_API_PREFIX_FROM_NAMESPACE			   = 57,
    WS_TRACE_API_GET_WRITER_POSITION			   = 58,
    WS_TRACE_API_SET_WRITER_POSITION			   = 59,
    WS_TRACE_API_MOVE_WRITER				   = 60,
    WS_TRACE_API_TRIM_XML_WHITESPACE			   = 61,
    WS_TRACE_API_VERIFY_XML_NCNAME			   = 62,
    WS_TRACE_API_XML_STRING_EQUALS			   = 63,
    WS_TRACE_API_NAMESPACE_FROM_PREFIX			   = 64,
    WS_TRACE_API_READ_QUALIFIED_NAME			   = 65,
    WS_TRACE_API_GET_XML_ATTRIBUTE			   = 66,
    WS_TRACE_API_COPY_NODE				   = 67,
    WS_TRACE_API_ASYNC_EXECUTE				   = 68,
    WS_TRACE_API_CREATE_CHANNEL				   = 69,
    WS_TRACE_API_OPEN_CHANNEL				   = 70,
    WS_TRACE_API_SEND_MESSAGE				   = 71,
    WS_TRACE_API_RECEIVE_MESSAGE			   = 72,
    WS_TRACE_API_REQUEST_REPLY				   = 73,
    WS_TRACE_API_SEND_REPLY_MESSAGE			   = 74,
    WS_TRACE_API_SEND_FAULT_MESSAGE_FOR_ERROR		   = 75,
    WS_TRACE_API_GET_CHANNEL_PROPERTY			   = 76,
    WS_TRACE_API_SET_CHANNEL_PROPERTY			   = 77,
    WS_TRACE_API_WRITE_MESSAGE_START			   = 78,
    WS_TRACE_API_WRITE_MESSAGE_END			   = 79,
    WS_TRACE_API_READ_MESSAGE_START			   = 80,
    WS_TRACE_API_READ_MESSAGE_END			   = 81,
    WS_TRACE_API_CLOSE_CHANNEL				   = 82,
    WS_TRACE_API_ABORT_CHANNEL				   = 83,
    WS_TRACE_API_FREE_CHANNEL				   = 84,
    WS_TRACE_API_RESET_CHANNEL				   = 85,
    WS_TRACE_API_ABANDON_MESSAGE			   = 86,
    WS_TRACE_API_SHUTDOWN_SESSION_CHANNEL		   = 87,
    WS_TRACE_API_GET_CONTEXT_PROPERTY			   = 88,
    WS_TRACE_API_GET_DICTIONARY				   = 89,
    WS_TRACE_API_READ_ENDPOINT_ADDRESS_EXTENSION	   = 90,
    WS_TRACE_API_CREATE_ERROR				   = 91,
    WS_TRACE_API_ADD_ERROR_STRING			   = 92,
    WS_TRACE_API_GET_ERROR_STRING			   = 93,
    WS_TRACE_API_COPY_ERROR				   = 94,
    WS_TRACE_API_GET_ERROR_PROPERTY			   = 95,
    WS_TRACE_API_SET_ERROR_PROPERTY			   = 96,
    WS_TRACE_API_RESET_ERROR				   = 97,
    WS_TRACE_API_FREE_ERROR				   = 98,
    WS_TRACE_API_GET_FAULT_ERROR_PROPERTY		   = 99,
    WS_TRACE_API_SET_FAULT_ERROR_PROPERTY		   = 100,
    WS_TRACE_API_CREATE_FAULT_FROM_ERROR		   = 101,
    WS_TRACE_API_SET_FAULT_ERROR_DETAIL			   = 102,
    WS_TRACE_API_GET_FAULT_ERROR_DETAIL			   = 103,
    WS_TRACE_API_CREATE_HEAP				   = 104,
    WS_TRACE_API_ALLOC					   = 105,
    WS_TRACE_API_GET_HEAP_PROPERTY			   = 106,
    WS_TRACE_API_RESET_HEAP				   = 107,
    WS_TRACE_API_FREE_HEAP				   = 108,
    WS_TRACE_API_CREATE_LISTENER			   = 109,
    WS_TRACE_API_OPEN_LISTENER				   = 110,
    WS_TRACE_API_ACCEPT_CHANNEL				   = 111,
    WS_TRACE_API_CLOSE_LISTENER				   = 112,
    WS_TRACE_API_ABORT_LISTENER				   = 113,
    WS_TRACE_API_RESET_LISTENER				   = 114,
    WS_TRACE_API_FREE_LISTENER				   = 115,
    WS_TRACE_API_GET_LISTENER_PROPERTY			   = 116,
    WS_TRACE_API_SET_LISTENER_PROPERTY			   = 117,
    WS_TRACE_API_CREATE_CHANNEL_FOR_LISTENER		   = 118,
    WS_TRACE_API_CREATE_MESSAGE				   = 119,
    WS_TRACE_API_CREATE_MESSAGE_FOR_CHANNEL		   = 120,
    WS_TRACE_API_INITIALIZE_MESSAGE			   = 121,
    WS_TRACE_API_RESET_MESSAGE				   = 122,
    WS_TRACE_API_FREE_MESSAGE				   = 123,
    WS_TRACE_API_GET_HEADER_ATTRIBUTES			   = 124,
    WS_TRACE_API_GET_HEADER				   = 125,
    WS_TRACE_API_GET_CUSTOM_HEADER			   = 126,
    WS_TRACE_API_REMOVE_HEADER				   = 127,
    WS_TRACE_API_SET_HEADER				   = 128,
    WS_TRACE_API_REMOVE_CUSTOM_HEADER			   = 129,
    WS_TRACE_API_ADD_CUSTOM_HEADER			   = 130,
    WS_TRACE_API_ADD_MAPPED_HEADER			   = 131,
    WS_TRACE_API_REMOVE_MAPPED_HEADER			   = 132,
    WS_TRACE_API_GET_MAPPED_HEADER			   = 133,
    WS_TRACE_API_WRITE_BODY				   = 134,
    WS_TRACE_API_READ_BODY				   = 135,
    WS_TRACE_API_WRITE_ENVELOPE_START			   = 136,
    WS_TRACE_API_WRITE_ENVELOPE_END			   = 137,
    WS_TRACE_API_READ_ENVELOPE_START			   = 138,
    WS_TRACE_API_READ_ENVELOPE_END			   = 139,
    WS_TRACE_API_GET_MESSAGE_PROPERTY			   = 140,
    WS_TRACE_API_SET_MESSAGE_PROPERTY			   = 141,
    WS_TRACE_API_ADDRESS_MESSAGE			   = 142,
    WS_TRACE_API_CHECK_MUST_UNDERSTAND_HEADERS		   = 143,
    WS_TRACE_API_MARK_HEADER_AS_UNDERSTOOD		   = 144,
    WS_TRACE_API_FILL_BODY				   = 145,
    WS_TRACE_API_FLUSH_BODY				   = 146,
    WS_TRACE_API_REQUEST_SECURITY_TOKEN			   = 147,
    WS_TRACE_API_GET_SECURITY_TOKEN_PROPERTY		   = 148,
    WS_TRACE_API_CREATE_XML_SECURITY_TOKEN		   = 149,
    WS_TRACE_API_FREE_SECURITY_TOKEN			   = 150,
    WS_TRACE_API_REVOKE_SECURITY_CONTEXT		   = 151,
    WS_TRACE_API_GET_SECURITY_CONTEXT_PROPERTY		   = 152,
    WS_TRACE_API_READ_ELEMENT_TYPE			   = 153,
    WS_TRACE_API_READ_ATTRIBUTE_TYPE			   = 154,
    WS_TRACE_API_READ_TYPE				   = 155,
    WS_TRACE_API_WRITE_ELEMENT_TYPE			   = 156,
    WS_TRACE_API_WRITE_ATTRIBUTE_TYPE			   = 157,
    WS_TRACE_API_WRITE_TYPE				   = 158,
    WS_TRACE_API_SERVICE_REGISTER_FOR_CANCEL		   = 159,
    WS_TRACE_API_GET_SERVICE_HOST_PROPERTY		   = 160,
    WS_TRACE_API_CREATE_SERVICE_HOST			   = 161,
    WS_TRACE_API_OPEN_SERVICE_HOST			   = 162,
    WS_TRACE_API_CLOSE_SERVICE_HOST			   = 163,
    WS_TRACE_API_ABORT_SERVICE_HOST			   = 164,
    WS_TRACE_API_FREE_SERVICE_HOST			   = 165,
    WS_TRACE_API_RESET_SERVICE_HOST			   = 166,
    WS_TRACE_API_GET_SERVICE_PROXY_PROPERTY		   = 167,
    WS_TRACE_API_CREATE_SERVICE_PROXY			   = 168,
    WS_TRACE_API_OPEN_SERVICE_PROXY			   = 169,
    WS_TRACE_API_CLOSE_SERVICE_PROXY			   = 170,
    WS_TRACE_API_ABORT_SERVICE_PROXY			   = 171,
    WS_TRACE_API_FREE_SERVICE_PROXY			   = 172,
    WS_TRACE_API_RESET_SERVICE_PROXY			   = 173,
    WS_TRACE_API_ABORT_CALL				   = 174,
    WS_TRACE_API_CALL					   = 175,
    WS_TRACE_API_DECODE_URL				   = 176,
    WS_TRACE_API_ENCODE_URL				   = 177,
    WS_TRACE_API_COMBINE_URL				   = 178,
    WS_TRACE_API_DATETIME_TO_FILETIME			   = 179,
    WS_TRACE_API_FILETIME_TO_DATETIME			   = 180,
    WS_TRACE_API_DUMP_MEMORY				   = 181,
    WS_TRACE_API_SET_AUTOFAIL				   = 182,
    WS_TRACE_API_CREATE_METADATA			   = 183,
    WS_TRACE_API_READ_METADATA				   = 184,
    WS_TRACE_API_FREE_METADATA				   = 185,
    WS_TRACE_API_RESET_METADATA				   = 186,
    WS_TRACE_API_GET_METADATA_PROPERTY			   = 187,
    WS_TRACE_API_GET_MISSING_METADATA_DOCUMENT_ADDRESS	   = 188,
    WS_TRACE_API_GET_METADATA_ENDPOINTS			   = 189,
    WS_TRACE_API_MATCH_POLICY_ALTERNATIVE		   = 190,
    WS_TRACE_API_GET_POLICY_PROPERTY			   = 191,
    WS_TRACE_API_GET_POLICY_ALTERNATIVE_COUNT		   = 192,
    WS_TRACE_API_WS_CREATE_SERVICE_PROXY_FROM_TEMPLATE	   = 193,
    WS_TRACE_API_WS_CREATE_SERVICE_HOST_FROM_TEMPLATE	   = 194,
    }

.enum WS_URL_SCHEME_TYPE {
    WS_URL_HTTP_SCHEME_TYPE	   = 0,
    WS_URL_HTTPS_SCHEME_TYPE	   = 1,
    WS_URL_NETTCP_SCHEME_TYPE	   = 2,
    WS_URL_SOAPUDP_SCHEME_TYPE	   = 3,
    WS_URL_NETPIPE_SCHEME_TYPE	   = 4,
    }

.enum {
    WS_URL_FLAGS_ALLOW_HOST_WILDCARDS	  = 0x1,
    WS_URL_FLAGS_NO_PATH_COLLAPSE	  = 0x2,
    WS_URL_FLAGS_ZERO_TERMINATE		  = 0x4,
    }

.enum WS_DATETIME_FORMAT {
    WS_DATETIME_FORMAT_UTC	 = 0,
    WS_DATETIME_FORMAT_LOCAL	 = 1,
    WS_DATETIME_FORMAT_NONE	 = 2,
    }

.enum WS_METADATA_STATE {
    WS_METADATA_STATE_CREATED	   = 1,
    WS_METADATA_STATE_RESOLVED	   = 2,
    WS_METADATA_STATE_FAULTED	   = 3,
    }

.enum WS_METADATA_PROPERTY_ID {
    WS_METADATA_PROPERTY_STATE			 = 1,
    WS_METADATA_PROPERTY_HEAP_PROPERTIES	 = 2,
    WS_METADATA_PROPERTY_POLICY_PROPERTIES	 = 3,
    WS_METADATA_PROPERTY_HEAP_REQUESTED_SIZE	 = 4,
    WS_METADATA_PROPERTY_MAX_DOCUMENTS		 = 5,
    WS_METADATA_PROPERTY_HOST_NAMES		 = 6,
    WS_METADATA_PROPERTY_VERIFY_HOST_NAMES	 = 7,
    }

.enum WS_POLICY_STATE {
    WS_POLICY_STATE_CREATED	= 1,
    WS_POLICY_STATE_FAULTED	= 2,
    }

.enum WS_POLICY_PROPERTY_ID {
    WS_POLICY_PROPERTY_STATE		    = 1,
    WS_POLICY_PROPERTY_MAX_ALTERNATIVES	    = 2,
    WS_POLICY_PROPERTY_MAX_DEPTH	    = 3,
    WS_POLICY_PROPERTY_MAX_EXTENSIONS	    = 4,
    }

.enum WS_SECURITY_BINDING_CONSTRAINT_TYPE {
    WS_SSL_TRANSPORT_SECURITY_BINDING_CONSTRAINT_TYPE		     = 1,
    WS_TCP_SSPI_TRANSPORT_SECURITY_BINDING_CONSTRAINT_TYPE	     = 2,
    WS_HTTP_HEADER_AUTH_SECURITY_BINDING_CONSTRAINT_TYPE	     = 3,
    WS_USERNAME_MESSAGE_SECURITY_BINDING_CONSTRAINT_TYPE	     = 4,
    WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING_CONSTRAINT_TYPE	     = 5,
    WS_ISSUED_TOKEN_MESSAGE_SECURITY_BINDING_CONSTRAINT_TYPE	     = 6,
    WS_CERT_MESSAGE_SECURITY_BINDING_CONSTRAINT_TYPE		     = 7,
    WS_SECURITY_CONTEXT_MESSAGE_SECURITY_BINDING_CONSTRAINT_TYPE     = 8,
    }

.enum WS_POLICY_EXTENSION_TYPE {
    WS_ENDPOINT_POLICY_EXTENSION_TYPE	  = 1,
    }

.enum WS_BINDING_TEMPLATE_TYPE {
    WS_HTTP_BINDING_TEMPLATE_TYPE					  = 0,
    WS_HTTP_SSL_BINDING_TEMPLATE_TYPE					  = 1,
    WS_HTTP_HEADER_AUTH_BINDING_TEMPLATE_TYPE				  = 2,
    WS_HTTP_SSL_HEADER_AUTH_BINDING_TEMPLATE_TYPE			  = 3,
    WS_HTTP_SSL_USERNAME_BINDING_TEMPLATE_TYPE				  = 4,
    WS_HTTP_SSL_KERBEROS_APREQ_BINDING_TEMPLATE_TYPE			  = 5,
    WS_TCP_BINDING_TEMPLATE_TYPE					  = 6,
    WS_TCP_SSPI_BINDING_TEMPLATE_TYPE					  = 7,
    WS_TCP_SSPI_USERNAME_BINDING_TEMPLATE_TYPE				  = 8,
    WS_TCP_SSPI_KERBEROS_APREQ_BINDING_TEMPLATE_TYPE			  = 9,
    WS_HTTP_SSL_USERNAME_SECURITY_CONTEXT_BINDING_TEMPLATE_TYPE		  = 10,
    WS_HTTP_SSL_KERBEROS_APREQ_SECURITY_CONTEXT_BINDING_TEMPLATE_TYPE	  = 11,
    WS_TCP_SSPI_USERNAME_SECURITY_CONTEXT_BINDING_TEMPLATE_TYPE		  = 12,
    WS_TCP_SSPI_KERBEROS_APREQ_SECURITY_CONTEXT_BINDING_TEMPLATE_TYPE	  = 13,
    }

CALLBACK(WS_READ_CALLBACK, :ptr, :ptr, :ULONG, :ptr ULONG, :ptr WS_ASYNC_CONTEXT, :ptr WS_ERROR)
CALLBACK(WS_WRITE_CALLBACK, :ptr, :ptr WS_BYTES, :ULONG, :ptr WS_ASYNC_CONTEXT, :ptr WS_ERROR)
CALLBACK(WS_PUSH_BYTES_CALLBACK, :ptr, :WS_WRITE_CALLBACK, :ptr, :ptr WS_ASYNC_CONTEXT, :ptr WS_ERROR)
CALLBACK(WS_PULL_BYTES_CALLBACK, :ptr, :ptr, :ULONG, :ptr ULONG, :ptr WS_ASYNC_CONTEXT, :ptr WS_ERROR)
CALLBACK(WS_DYNAMIC_STRING_CALLBACK, :ptr, :ptr WS_XML_STRING, :ptr BOOL, :ptr ULONG, :ptr WS_ERROR)
CALLBACK(WS_ASYNC_CALLBACK, :HRESULT, :WS_CALLBACK_MODEL, :ptr)
CALLBACK(WS_ASYNC_FUNCTION, :HRESULT, :WS_CALLBACK_MODEL, :ptr, :ptr WS_ASYNC_OPERATION, :ptr WS_ASYNC_CONTEXT, :ptr WS_ERROR)
CALLBACK(WS_CREATE_CHANNEL_CALLBACK, :WS_CHANNEL_TYPE, :ptr, :ULONG, :ptr, :ptr WS_ERROR)
CALLBACK(WS_FREE_CHANNEL_CALLBACK, :ptr)
CALLBACK(WS_RESET_CHANNEL_CALLBACK, :ptr, :ptr WS_ERROR)
CALLBACK(WS_ABORT_CHANNEL_CALLBACK, :ptr, :ptr WS_ERROR)
CALLBACK(WS_OPEN_CHANNEL_CALLBACK, :ptr, :ptr WS_ENDPOINT_ADDRESS, :ptr WS_ASYNC_CONTEXT, :ptr WS_ERROR)
CALLBACK(WS_CLOSE_CHANNEL_CALLBACK, :ptr, :ptr WS_ASYNC_CONTEXT, :ptr WS_ERROR)
CALLBACK(WS_SET_CHANNEL_PROPERTY_CALLBACK, :ptr, :WS_CHANNEL_PROPERTY_ID, :ptr, :ULONG, :ptr WS_ERROR)
CALLBACK(WS_GET_CHANNEL_PROPERTY_CALLBACK, :ptr, :WS_CHANNEL_PROPERTY_ID, :ptr, :ULONG, :ptr WS_ERROR)
CALLBACK(WS_READ_MESSAGE_START_CALLBACK, :ptr, :ptr WS_MESSAGE, :ptr WS_ASYNC_CONTEXT, :ptr WS_ERROR)
CALLBACK(WS_READ_MESSAGE_END_CALLBACK, :ptr, :ptr WS_MESSAGE, :ptr WS_ASYNC_CONTEXT, :ptr WS_ERROR)
CALLBACK(WS_WRITE_MESSAGE_START_CALLBACK, :ptr, :ptr WS_MESSAGE, :ptr WS_ASYNC_CONTEXT, :ptr WS_ERROR)
CALLBACK(WS_WRITE_MESSAGE_END_CALLBACK, :ptr, :ptr WS_MESSAGE, :ptr WS_ASYNC_CONTEXT, :ptr WS_ERROR)
CALLBACK(WS_ABANDON_MESSAGE_CALLBACK, :ptr, :ptr WS_MESSAGE, :ptr WS_ERROR)
CALLBACK(WS_SHUTDOWN_SESSION_CHANNEL_CALLBACK, :ptr, :ptr WS_ASYNC_CONTEXT, :ptr WS_ERROR)
CALLBACK(WS_CREATE_ENCODER_CALLBACK, :ptr, :WS_WRITE_CALLBACK, :ptr, :ptr, :ptr WS_ERROR)
CALLBACK(WS_ENCODER_GET_CONTENT_TYPE_CALLBACK, :ptr, :ptr WS_STRING, :ptr WS_STRING, :ptr WS_STRING, :ptr WS_ERROR)
CALLBACK(WS_ENCODER_START_CALLBACK, :ptr, :ptr WS_ASYNC_CONTEXT, :ptr WS_ERROR)
CALLBACK(WS_ENCODER_ENCODE_CALLBACK, :ptr, :ptr WS_BYTES, :ULONG, :ptr WS_ASYNC_CONTEXT, :ptr WS_ERROR)
CALLBACK(WS_ENCODER_END_CALLBACK, :ptr, :ptr WS_ASYNC_CONTEXT, :ptr WS_ERROR)
CALLBACK(WS_FREE_ENCODER_CALLBACK, :ptr)
CALLBACK(WS_CREATE_DECODER_CALLBACK, :ptr, :ptr WS_READ_CALLBACK, :ptr, :ptr, :ptr WS_ERROR)
CALLBACK(WS_DECODER_GET_CONTENT_TYPE_CALLBACK, :ptr, :ptr WS_STRING, :ptr WS_STRING, :ptr WS_STRING, :ptr WS_ERROR)
CALLBACK(WS_DECODER_START_CALLBACK, :ptr, :ptr WS_ASYNC_CONTEXT, :ptr WS_ERROR)
CALLBACK(WS_DECODER_DECODE_CALLBACK, :ptr, :ptr, :ULONG, :ptr ULONG, :ptr WS_ASYNC_CONTEXT, :ptr WS_ERROR)
CALLBACK(WS_DECODER_END_CALLBACK, :ptr, :ptr WS_ASYNC_CONTEXT, :ptr WS_ERROR)
CALLBACK(WS_FREE_DECODER_CALLBACK, :ptr)
CALLBACK(WS_HTTP_REDIRECT_CALLBACK, :ptr, :ptr WS_STRING, :ptr WS_STRING)

if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
CALLBACK(WS_CREATE_LISTENER_CALLBACK, :WS_CHANNEL_TYPE, :ptr, :ULONG, :ptr, :ptr WS_ERROR)
CALLBACK(WS_FREE_LISTENER_CALLBACK, :ptr)
CALLBACK(WS_RESET_LISTENER_CALLBACK, :ptr, :ptr WS_ERROR)
CALLBACK(WS_OPEN_LISTENER_CALLBACK, :ptr, :ptr WS_STRING, :ptr WS_ASYNC_CONTEXT, :ptr WS_ERROR)
CALLBACK(WS_CLOSE_LISTENER_CALLBACK, :ptr, :ptr WS_ASYNC_CONTEXT, :ptr WS_ERROR)
CALLBACK(WS_GET_LISTENER_PROPERTY_CALLBACK, :ptr, :ptr WS_LISTENER_PROPERTY_ID, :ptr, :ULONG, :ptr WS_ERROR)
CALLBACK(WS_SET_LISTENER_PROPERTY_CALLBACK, :ptr, :WS_LISTENER_PROPERTY_ID, :ptr, :ULONG, :ptr WS_ERROR)
CALLBACK(WS_ACCEPT_CHANNEL_CALLBACK, :ptr, :ptr, :ptr WS_ASYNC_CONTEXT, :ptr WS_ERROR)
CALLBACK(WS_ABORT_LISTENER_CALLBACK, :ptr, :ptr WS_ERROR)
CALLBACK(WS_CREATE_CHANNEL_FOR_LISTENER_CALLBACK, :ptr, :ptr, :ULONG, :ptr, :ptr WS_ERROR)
endif

CALLBACK(WS_MESSAGE_DONE_CALLBACK, :ptr)

if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
CALLBACK(WS_CERTIFICATE_VALIDATION_CALLBACK, :PCCERT_CONTEXT, :ptr)
endif

CALLBACK(WS_GET_CERT_CALLBACK, :ptr, :ptr WS_ENDPOINT_ADDRESS, :ptr WS_STRING, :ptr ptr, :ptr WS_ERROR)
CALLBACK(WS_CERT_ISSUER_LIST_NOTIFICATION_CALLBACK, :ptr, :ptr, :ptr WS_ERROR)
CALLBACK(WS_VALIDATE_PASSWORD_CALLBACK, :ptr, :ptr WS_STRING, :ptr WS_STRING, :ptr WS_ASYNC_CONTEXT, :ptr WS_ERROR)
CALLBACK(WS_VALIDATE_SAML_CALLBACK, :ptr, :ptr WS_XML_BUFFER, :ptr WS_ERROR)
CALLBACK(WS_DURATION_COMPARISON_CALLBACK, :ptr WS_DURATION, :ptr WS_DURATION, :ptr, :ptr WS_ERROR)
CALLBACK(WS_READ_TYPE_CALLBACK, :ptr WS_XML_READER, :WS_TYPE_MAPPING, :ptr, :ptr WS_HEAP, :ptr, :ULONG, :ptr WS_ERROR)
CALLBACK(WS_WRITE_TYPE_CALLBACK, :ptr WS_XML_WRITER, :WS_TYPE_MAPPING, :ptr, :ptr, :ULONG, :ptr WS_ERROR)
CALLBACK(WS_IS_DEFAULT_VALUE_CALLBACK, :ptr, :ptr, :ptr, :ULONG, :ptr BOOL, :ptr WS_ERROR)

if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
CALLBACK(WS_SERVICE_MESSAGE_RECEIVE_CALLBACK, :ptr WS_OPERATION_CONTEXT, :ptr WS_ASYNC_CONTEXT, :ptr WS_ERROR)
CALLBACK(WS_OPERATION_CANCEL_CALLBACK, :WS_SERVICE_CANCEL_REASON, :ptr)
CALLBACK(WS_OPERATION_FREE_STATE_CALLBACK, :ptr)
endif

CALLBACK(WS_SERVICE_STUB_CALLBACK, :ptr WS_OPERATION_CONTEXT, :ptr, :ptr, :ptr WS_ASYNC_CONTEXT, :ptr WS_ERROR)

if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
CALLBACK(WS_SERVICE_ACCEPT_CHANNEL_CALLBACK, :ptr WS_OPERATION_CONTEXT, :ptr ptr, :ptr WS_ASYNC_CONTEXT, :ptr WS_ERROR)
CALLBACK(WS_SERVICE_CLOSE_CHANNEL_CALLBACK, :ptr WS_OPERATION_CONTEXT, :ptr WS_ASYNC_CONTEXT)
CALLBACK(WS_SERVICE_SECURITY_CALLBACK, :ptr WS_OPERATION_CONTEXT, :ptr BOOL, :ptr WS_ERROR)
endif

CALLBACK(WS_PROXY_MESSAGE_CALLBACK, :ptr WS_MESSAGE, :ptr WS_HEAP, :ptr, :ptr WS_ERROR)

WS_XML_DICTIONARY	STRUC
guid			GUID <>
strings			ptr WS_XML_STRING ?
stringCount		ULONG ?
isConst			BOOL ?
WS_XML_DICTIONARY	ENDS

WS_XML_STRING		STRUC
length			ULONG ?
bytes			ptr BYTE ?
dictionary		ptr WS_XML_DICTIONARY ?
id			ULONG ?
WS_XML_STRING		ENDS

WS_XML_QNAME		STRUC
localName		WS_XML_STRING <>
ns			WS_XML_STRING <>
WS_XML_QNAME		ENDS

WS_XML_NODE_POSITION	STRUC
buffer			ptr WS_XML_BUFFER ?
node			ptr ?
WS_XML_NODE_POSITION	ENDS

WS_XML_READER_PROPERTY	STRUC
id			WS_XML_READER_PROPERTY_ID ?
value			ptr ?
valueSize		ULONG ?
WS_XML_READER_PROPERTY	ENDS

WS_XML_CANONICALIZATION_INCLUSIVE_PREFIXES STRUC
prefixCount		ULONG ?
prefixes		ptr WS_XML_STRING ?
WS_XML_CANONICALIZATION_INCLUSIVE_PREFIXES ENDS

WS_XML_CANONICALIZATION_PROPERTY STRUC
id			WS_XML_CANONICALIZATION_PROPERTY_ID ?
value			ptr ?
valueSize		ULONG ?
WS_XML_CANONICALIZATION_PROPERTY ENDS

WS_XML_WRITER_PROPERTY	STRUC
id			WS_XML_WRITER_PROPERTY_ID ?
value			ptr ?
valueSize		ULONG ?
WS_XML_WRITER_PROPERTY	ENDS

WS_XML_BUFFER_PROPERTY	STRUC
id			WS_XML_BUFFER_PROPERTY_ID ?
value			ptr ?
valueSize		ULONG ?
WS_XML_BUFFER_PROPERTY	ENDS

WS_XML_TEXT		STRUC
textType		WS_XML_TEXT_TYPE ?
WS_XML_TEXT		ENDS

WS_XML_UTF8_TEXT	STRUC
text			WS_XML_TEXT <>
value			WS_XML_STRING <>
WS_XML_UTF8_TEXT	ENDS

WS_XML_UTF16_TEXT	STRUC
text			WS_XML_TEXT <>
bytes			ptr BYTE ?
byteCount		ULONG ?
WS_XML_UTF16_TEXT	ENDS

WS_XML_BASE64_TEXT	STRUC
text			WS_XML_TEXT <>
bytes			ptr BYTE ?
length			ULONG ?
WS_XML_BASE64_TEXT	ENDS

WS_XML_BOOL_TEXT	STRUC
text			WS_XML_TEXT <>
value			BOOL ?
WS_XML_BOOL_TEXT	ENDS

WS_XML_INT32_TEXT	STRUC
text			WS_XML_TEXT <>
value			sdword ?
WS_XML_INT32_TEXT	ENDS

WS_XML_INT64_TEXT	STRUC
text			WS_XML_TEXT <>
value			sqword ?
WS_XML_INT64_TEXT	ENDS

WS_XML_UINT64_TEXT	STRUC
text			WS_XML_TEXT <>
value			dq ?
WS_XML_UINT64_TEXT	ENDS

WS_XML_FLOAT_TEXT	STRUC
text			WS_XML_TEXT <>
value			real4 ?
WS_XML_FLOAT_TEXT	ENDS

WS_XML_DOUBLE_TEXT	STRUC
text			WS_XML_TEXT <>
value			real8 ?
WS_XML_DOUBLE_TEXT	ENDS

WS_XML_DECIMAL_TEXT	STRUC
text			WS_XML_TEXT <>
value			DECIMAL <>
WS_XML_DECIMAL_TEXT	ENDS

WS_XML_GUID_TEXT	STRUC
text			WS_XML_TEXT <>
value			GUID <>
WS_XML_GUID_TEXT	ENDS

WS_XML_UNIQUE_ID_TEXT	STRUC
text			WS_XML_TEXT <>
value			GUID <>
WS_XML_UNIQUE_ID_TEXT	ENDS

WS_DATETIME		STRUC
ticks			dq ?
format			WS_DATETIME_FORMAT ?
WS_DATETIME		ENDS

WS_XML_DATETIME_TEXT	STRUC
text			WS_XML_TEXT <>
value			WS_DATETIME <>
WS_XML_DATETIME_TEXT	ENDS

WS_TIMESPAN		STRUC
ticks			sqword ?
WS_TIMESPAN		ENDS

WS_XML_TIMESPAN_TEXT	STRUC
text			WS_XML_TEXT <>
value			WS_TIMESPAN <>
WS_XML_TIMESPAN_TEXT	ENDS

WS_XML_QNAME_TEXT	STRUC
text			WS_XML_TEXT <>
prefix			ptr WS_XML_STRING ?
localName		ptr WS_XML_STRING ?
ns			ptr WS_XML_STRING ?
WS_XML_QNAME_TEXT	ENDS

WS_XML_LIST_TEXT	STRUC
text			WS_XML_TEXT <>
itemCount		ULONG ?
items			ptr ptr WS_XML_TEXT ?
WS_XML_LIST_TEXT	ENDS

WS_XML_NODE		STRUC
nodeType		WS_XML_NODE_TYPE ?
WS_XML_NODE		ENDS

WS_XML_ATTRIBUTE	STRUC
singleQuote		db ?
isXmlNs			db ?
prefix			ptr WS_XML_STRING ?
localName		ptr WS_XML_STRING ?
ns			ptr WS_XML_STRING ?
value			ptr WS_XML_TEXT ?
WS_XML_ATTRIBUTE	ENDS

WS_XML_ELEMENT_NODE	STRUC
node			WS_XML_NODE <>
prefix			ptr WS_XML_STRING ?
localName		ptr WS_XML_STRING ?
ns			ptr WS_XML_STRING ?
attributeCount		ULONG ?
attributes		ptr ptr WS_XML_ATTRIBUTE ?
isEmpty			BOOL ?
WS_XML_ELEMENT_NODE	ENDS

WS_XML_TEXT_NODE	STRUC
node			WS_XML_NODE <>
text			ptr WS_XML_TEXT ?
WS_XML_TEXT_NODE	ENDS

WS_XML_COMMENT_NODE	STRUC
node			WS_XML_NODE <>
value			WS_XML_STRING <>
WS_XML_COMMENT_NODE	ENDS

WS_XML_READER_INPUT	STRUC
inputType		WS_XML_READER_INPUT_TYPE ?
WS_XML_READER_INPUT	ENDS

WS_XML_READER_BUFFER_INPUT STRUC
input			WS_XML_READER_INPUT <>
encodedData		ptr ?
encodedDataSize		ULONG ?
WS_XML_READER_BUFFER_INPUT ENDS


WS_XML_READER_STREAM_INPUT STRUC
input			WS_XML_READER_INPUT <>
readCallback		WS_READ_CALLBACK ?
readCallbackState	ptr ?
WS_XML_READER_STREAM_INPUT ENDS

WS_XML_READER_ENCODING	STRUC
encodingType		WS_XML_READER_ENCODING_TYPE ?
WS_XML_READER_ENCODING	ENDS

WS_XML_READER_TEXT_ENCODING STRUC
encoding		WS_XML_READER_ENCODING <>
charSet			WS_CHARSET ?
WS_XML_READER_TEXT_ENCODING ENDS

WS_XML_READER_BINARY_ENCODING STRUC
encoding		WS_XML_READER_ENCODING <>
staticDictionary	ptr WS_XML_DICTIONARY ?
dynamicDictionary	ptr WS_XML_DICTIONARY ?
WS_XML_READER_BINARY_ENCODING ENDS

WS_STRING		STRUC
length			ULONG ?
chars			ptr WCHAR ?
WS_STRING		ENDS

WS_XML_READER_MTOM_ENCODING STRUC
encoding		WS_XML_READER_ENCODING <>
textEncoding		ptr WS_XML_READER_ENCODING ?
readMimeHeader		BOOL ?
startInfo		WS_STRING <>
boundary		WS_STRING <>
startUri		WS_STRING <>
WS_XML_READER_MTOM_ENCODING ENDS

WS_XML_READER_RAW_ENCODING STRUC
encoding		WS_XML_READER_ENCODING <>
WS_XML_READER_RAW_ENCODING ENDS

WS_XML_WRITER_ENCODING	STRUC
encodingType		WS_XML_WRITER_ENCODING_TYPE ?
WS_XML_WRITER_ENCODING	ENDS

WS_XML_WRITER_TEXT_ENCODING STRUC
encoding		WS_XML_WRITER_ENCODING <>
charSet			WS_CHARSET ?
WS_XML_WRITER_TEXT_ENCODING ENDS

WS_XML_WRITER_BINARY_ENCODING STRUC
encoding		WS_XML_WRITER_ENCODING <>
staticDictionary	ptr WS_XML_DICTIONARY ?
dynamicStringCallback	WS_DYNAMIC_STRING_CALLBACK ?
dynamicStringCallbackState ptr ?
WS_XML_WRITER_BINARY_ENCODING ENDS

WS_XML_WRITER_MTOM_ENCODING STRUC
encoding		WS_XML_WRITER_ENCODING <>
textEncoding		ptr WS_XML_WRITER_ENCODING ?
writeMimeHeader		BOOL ?
boundary		WS_STRING <>
startInfo		WS_STRING <>
startUri		WS_STRING <>
maxInlineByteCount	ULONG ?
WS_XML_WRITER_MTOM_ENCODING ENDS

WS_XML_WRITER_RAW_ENCODING STRUC
encoding		WS_XML_WRITER_ENCODING <>
WS_XML_WRITER_RAW_ENCODING ENDS

WS_XML_WRITER_OUTPUT	STRUC
outputType		WS_XML_WRITER_OUTPUT_TYPE ?
WS_XML_WRITER_OUTPUT	ENDS

WS_XML_WRITER_BUFFER_OUTPUT STRUC
output			WS_XML_WRITER_OUTPUT <>
WS_XML_WRITER_BUFFER_OUTPUT ENDS

WS_XML_WRITER_STREAM_OUTPUT STRUC
output			WS_XML_WRITER_OUTPUT <>
writeCallback		WS_WRITE_CALLBACK ?
writeCallbackState	ptr ?
WS_XML_WRITER_STREAM_OUTPUT ENDS

WS_XML_WRITER_PROPERTIES STRUC
properties		ptr WS_XML_WRITER_PROPERTY ?
propertyCount		ULONG ?
WS_XML_WRITER_PROPERTIES ENDS

WS_XML_READER_PROPERTIES STRUC
properties		ptr WS_XML_READER_PROPERTY ?
propertyCount		ULONG ?
WS_XML_READER_PROPERTIES ENDS

WS_ASYNC_CONTEXT	STRUC
callback		WS_ASYNC_CALLBACK ?
callbackState		ptr ?
WS_ASYNC_CONTEXT	ENDS

WS_ASYNC_STATE		STRUC
internal0		ptr ?
internal1		ptr ?
internal2		ptr ?
internal3		ptr ?
internal4		ptr ?
WS_ASYNC_STATE		ENDS

WS_ASYNC_OPERATION	STRUC
function		WS_ASYNC_FUNCTION ?
WS_ASYNC_OPERATION	ENDS

WS_CHANNEL_PROPERTY	STRUC
id			WS_CHANNEL_PROPERTY_ID ?
value			ptr ?
valueSize		ULONG ?
WS_CHANNEL_PROPERTY	ENDS

WS_CUSTOM_HTTP_PROXY	STRUC
servers			WS_STRING <>
bypass			WS_STRING <>
WS_CUSTOM_HTTP_PROXY	ENDS

WS_CHANNEL_PROPERTIES	STRUC
properties		ptr WS_CHANNEL_PROPERTY ?
propertyCount		ULONG ?
WS_CHANNEL_PROPERTIES	ENDS

WS_CUSTOM_CHANNEL_CALLBACKS STRUC
createChannelCallback	WS_CREATE_CHANNEL_CALLBACK ?
freeChannelCallback	WS_FREE_CHANNEL_CALLBACK ?
resetChannelCallback	WS_RESET_CHANNEL_CALLBACK ?
openChannelCallback	WS_OPEN_CHANNEL_CALLBACK ?
closeChannelCallback	WS_CLOSE_CHANNEL_CALLBACK ?
abortChannelCallback	WS_ABORT_CHANNEL_CALLBACK ?
getChannelPropertyCallback WS_GET_CHANNEL_PROPERTY_CALLBACK ?
setChannelPropertyCallback WS_SET_CHANNEL_PROPERTY_CALLBACK ?
writeMessageStartCallback WS_WRITE_MESSAGE_START_CALLBACK ?
writeMessageEndCallback WS_WRITE_MESSAGE_END_CALLBACK ?
readMessageStartCallback WS_READ_MESSAGE_START_CALLBACK ?
readMessageEndCallback	WS_READ_MESSAGE_END_CALLBACK ?
abandonMessageCallback	WS_ABANDON_MESSAGE_CALLBACK ?
shutdownSessionChannelCallback WS_SHUTDOWN_SESSION_CHANNEL_CALLBACK ?
WS_CUSTOM_CHANNEL_CALLBACKS ENDS

WS_HTTP_HEADER_MAPPING	STRUC
headerName		WS_XML_STRING <>
headerMappingOptions	ULONG ?
WS_HTTP_HEADER_MAPPING	ENDS

WS_HTTP_MESSAGE_MAPPING STRUC
requestMappingOptions	ULONG ?
responseMappingOptions	ULONG ?
requestHeaderMappings	ptr ptr WS_HTTP_HEADER_MAPPING ?
requestHeaderMappingCount ULONG ?
responseHeaderMappings	ptr ptr WS_HTTP_HEADER_MAPPING ?
responseHeaderMappingCount ULONG ?
WS_HTTP_MESSAGE_MAPPING ENDS

WS_ELEMENT_DESCRIPTION	STRUC
elementLocalName	ptr WS_XML_STRING ?
elementNs		ptr WS_XML_STRING ?
type			WS_TYPE ?
typeDescription		ptr ?
WS_ELEMENT_DESCRIPTION	ENDS

WS_MESSAGE_DESCRIPTION	STRUC
action			ptr WS_XML_STRING ?
bodyElementDescription	ptr WS_ELEMENT_DESCRIPTION ?
WS_MESSAGE_DESCRIPTION	ENDS

WS_CHANNEL_ENCODER	STRUC
createContext		ptr ?
createEncoderCallback	WS_CREATE_ENCODER_CALLBACK ?
encoderGetContentTypeCallback WS_ENCODER_GET_CONTENT_TYPE_CALLBACK ?
encoderStartCallback	WS_ENCODER_START_CALLBACK ?
encoderEncodeCallback	WS_ENCODER_ENCODE_CALLBACK ?
encoderEndCallback	WS_ENCODER_END_CALLBACK ?
freeEncoderCallback	WS_FREE_ENCODER_CALLBACK ?
WS_CHANNEL_ENCODER	ENDS

WS_CHANNEL_DECODER	STRUC
createContext		ptr ?
createDecoderCallback	WS_CREATE_DECODER_CALLBACK ?
decoderGetContentTypeCallback WS_DECODER_GET_CONTENT_TYPE_CALLBACK ?
decoderStartCallback	WS_DECODER_START_CALLBACK ?
decoderDecodeCallback	WS_DECODER_DECODE_CALLBACK ?
decoderEndCallback	WS_DECODER_END_CALLBACK ?
freeDecoderCallback	WS_FREE_DECODER_CALLBACK ?
WS_CHANNEL_DECODER	ENDS

WS_HTTP_REDIRECT_CALLBACK_CONTEXT STRUC
callback		WS_HTTP_REDIRECT_CALLBACK ?
state			ptr ?
WS_HTTP_REDIRECT_CALLBACK_CONTEXT ENDS

WS_ENDPOINT_IDENTITY	STRUC
identityType		WS_ENDPOINT_IDENTITY_TYPE ?
WS_ENDPOINT_IDENTITY	ENDS

WS_ENDPOINT_ADDRESS	STRUC
url			WS_STRING <>
headers			ptr WS_XML_BUFFER ?
extensions		ptr WS_XML_BUFFER ?
identity		ptr WS_ENDPOINT_IDENTITY ?
WS_ENDPOINT_ADDRESS	ENDS

WS_DNS_ENDPOINT_IDENTITY STRUC
identity		WS_ENDPOINT_IDENTITY <>
dns			WS_STRING <>
WS_DNS_ENDPOINT_IDENTITY ENDS

WS_UPN_ENDPOINT_IDENTITY STRUC
identity		WS_ENDPOINT_IDENTITY <>
upn			WS_STRING <>
WS_UPN_ENDPOINT_IDENTITY ENDS

WS_SPN_ENDPOINT_IDENTITY STRUC
identity		WS_ENDPOINT_IDENTITY <>
spn			WS_STRING <>
WS_SPN_ENDPOINT_IDENTITY ENDS

WS_BYTES		STRUC
length			ULONG ?
bytes			ptr BYTE ?
WS_BYTES		ENDS

WS_RSA_ENDPOINT_IDENTITY STRUC
identity		WS_ENDPOINT_IDENTITY <>
modulus			WS_BYTES <>
exponent		WS_BYTES <>
WS_RSA_ENDPOINT_IDENTITY ENDS

WS_CERT_ENDPOINT_IDENTITY STRUC
identity		WS_ENDPOINT_IDENTITY <>
rawCertificateData	WS_BYTES <>
WS_CERT_ENDPOINT_IDENTITY ENDS

WS_UNKNOWN_ENDPOINT_IDENTITY STRUC
identity		WS_ENDPOINT_IDENTITY <>
element			ptr WS_XML_BUFFER ?
WS_UNKNOWN_ENDPOINT_IDENTITY ENDS

WS_ERROR_PROPERTY	STRUC
id			WS_ERROR_PROPERTY_ID ?
value			ptr ?
valueSize		ULONG ?
WS_ERROR_PROPERTY	ENDS

WS_FAULT_REASON		STRUC
text			WS_STRING <>
lang			WS_STRING <>
WS_FAULT_REASON		ENDS

WS_FAULT_CODE		STRUC
value			WS_XML_QNAME <>
subCode			ptr WS_FAULT_CODE ?
WS_FAULT_CODE		ENDS

WS_FAULT		STRUC
code			ptr WS_FAULT_CODE ?
reasons			ptr WS_FAULT_REASON ?
reasonCount		ULONG ?
actor			WS_STRING <>
node			WS_STRING <>
detail			ptr WS_XML_BUFFER ?
WS_FAULT		ENDS

WS_FAULT_DETAIL_DESCRIPTION STRUC
action			ptr WS_XML_STRING ?
detailElementDescription ptr WS_ELEMENT_DESCRIPTION ?
WS_FAULT_DETAIL_DESCRIPTION ENDS

WS_HEAP_PROPERTY	STRUC
id			WS_HEAP_PROPERTY_ID ?
value			ptr ?
valueSize		ULONG ?
WS_HEAP_PROPERTY	ENDS

WS_HEAP_PROPERTIES	STRUC
properties		ptr WS_HEAP_PROPERTY ?
propertyCount		ULONG ?
WS_HEAP_PROPERTIES	ENDS

if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)

WS_LISTENER_PROPERTY	STRUC
id			WS_LISTENER_PROPERTY_ID ?
value			ptr ?
valueSize		ULONG ?
WS_LISTENER_PROPERTY	ENDS

WS_DISALLOWED_USER_AGENT_SUBSTRINGS STRUC
subStringCount		ULONG ?
subStrings		ptr ptr WS_STRING ?
WS_DISALLOWED_USER_AGENT_SUBSTRINGS ENDS

WS_LISTENER_PROPERTIES	STRUC
properties		ptr WS_LISTENER_PROPERTY ?
propertyCount		ULONG ?
WS_LISTENER_PROPERTIES	ENDS

endif

WS_HOST_NAMES		STRUC
hostNames		ptr WS_STRING ?
hostNameCount		ULONG ?
WS_HOST_NAMES		ENDS

if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)

WS_CUSTOM_LISTENER_CALLBACKS STRUC
createListenerCallback	WS_CREATE_LISTENER_CALLBACK ?
freeListenerCallback	WS_FREE_LISTENER_CALLBACK ?
resetListenerCallback	WS_RESET_LISTENER_CALLBACK ?
openListenerCallback	WS_OPEN_LISTENER_CALLBACK ?
closeListenerCallback	WS_CLOSE_LISTENER_CALLBACK ?
abortListenerCallback	WS_ABORT_LISTENER_CALLBACK ?
getListenerPropertyCallback WS_GET_LISTENER_PROPERTY_CALLBACK ?
setListenerPropertyCallback WS_SET_LISTENER_PROPERTY_CALLBACK ?
createChannelForListenerCallback WS_CREATE_CHANNEL_FOR_LISTENER_CALLBACK ?
acceptChannelCallback	WS_ACCEPT_CHANNEL_CALLBACK ?
WS_CUSTOM_LISTENER_CALLBACKS ENDS

endif

WS_MESSAGE_PROPERTY	STRUC
id			WS_MESSAGE_PROPERTY_ID ?
value			ptr ?
valueSize		ULONG ?
WS_MESSAGE_PROPERTY	ENDS

WS_MESSAGE_PROPERTIES	STRUC
properties		ptr WS_MESSAGE_PROPERTY ?
propertyCount		ULONG ?
WS_MESSAGE_PROPERTIES	ENDS

WS_SECURITY_ALGORITHM_PROPERTY STRUC
id			WS_SECURITY_ALGORITHM_PROPERTY_ID ?
value			ptr ?
valueSize		ULONG ?
WS_SECURITY_ALGORITHM_PROPERTY ENDS

WS_SECURITY_ALGORITHM_SUITE STRUC
canonicalizationAlgorithm WS_SECURITY_ALGORITHM_ID ?
digestAlgorithm		WS_SECURITY_ALGORITHM_ID ?
symmetricSignatureAlgorithm WS_SECURITY_ALGORITHM_ID ?
asymmetricSignatureAlgorithm WS_SECURITY_ALGORITHM_ID ?
encryptionAlgorithm	WS_SECURITY_ALGORITHM_ID ?
keyDerivationAlgorithm	WS_SECURITY_ALGORITHM_ID ?
symmetricKeyWrapAlgorithm WS_SECURITY_ALGORITHM_ID ?
asymmetricKeyWrapAlgorithm WS_SECURITY_ALGORITHM_ID ?
minSymmetricKeyLength	ULONG ?
maxSymmetricKeyLength	ULONG ?
minAsymmetricKeyLength	ULONG ?
maxAsymmetricKeyLength	ULONG ?
properties		ptr WS_SECURITY_ALGORITHM_PROPERTY ?
propertyCount		ULONG ?
WS_SECURITY_ALGORITHM_SUITE ENDS

WS_SECURITY_PROPERTY	STRUC
id			WS_SECURITY_PROPERTY_ID ?
value			ptr ?
valueSize		ULONG ?
WS_SECURITY_PROPERTY	ENDS

WS_SECURITY_PROPERTIES	STRUC
properties		ptr WS_SECURITY_PROPERTY ?
propertyCount		ULONG ?
WS_SECURITY_PROPERTIES	ENDS

WS_SECURITY_BINDING_PROPERTY STRUC
id			WS_SECURITY_BINDING_PROPERTY_ID ?
value			ptr ?
valueSize		ULONG ?
WS_SECURITY_BINDING_PROPERTY ENDS

WS_SECURITY_BINDING_PROPERTIES STRUC
properties		ptr WS_SECURITY_BINDING_PROPERTY ?
propertyCount		ULONG ?
WS_SECURITY_BINDING_PROPERTIES ENDS

WS_SERVICE_SECURITY_IDENTITIES STRUC
serviceIdentities	ptr WS_STRING ?
serviceIdentityCount	ULONG ?
WS_SERVICE_SECURITY_IDENTITIES ENDS

if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
WS_CERTIFICATE_VALIDATION_CALLBACK_CONTEXT STRUC
callback		WS_CERTIFICATE_VALIDATION_CALLBACK ?
state			ptr ?
WS_CERTIFICATE_VALIDATION_CALLBACK_CONTEXT ENDS
endif

WS_CERT_CREDENTIAL	STRUC
credentialType		WS_CERT_CREDENTIAL_TYPE ?
WS_CERT_CREDENTIAL	ENDS

WS_SUBJECT_NAME_CERT_CREDENTIAL STRUC
credential		WS_CERT_CREDENTIAL <>
storeLocation		ULONG ?
storeName		WS_STRING <>
subjectName		WS_STRING <>
WS_SUBJECT_NAME_CERT_CREDENTIAL ENDS

WS_THUMBPRINT_CERT_CREDENTIAL STRUC
credential		WS_CERT_CREDENTIAL <>
storeLocation		ULONG ?
storeName		WS_STRING <>
thumbprint		WS_STRING <>
WS_THUMBPRINT_CERT_CREDENTIAL ENDS

WS_CUSTOM_CERT_CREDENTIAL STRUC
credential		WS_CERT_CREDENTIAL <>
getCertCallback		WS_GET_CERT_CALLBACK ?
getCertCallbackState	ptr ?
certIssuerListNotificationCallback WS_CERT_ISSUER_LIST_NOTIFICATION_CALLBACK ?
certIssuerListNotificationCallbackState ptr ?
WS_CUSTOM_CERT_CREDENTIAL ENDS

WS_WINDOWS_INTEGRATED_AUTH_CREDENTIAL STRUC
credentialType		WS_WINDOWS_INTEGRATED_AUTH_CREDENTIAL_TYPE ?
WS_WINDOWS_INTEGRATED_AUTH_CREDENTIAL ENDS

WS_STRING_WINDOWS_INTEGRATED_AUTH_CREDENTIAL STRUC
credential		WS_WINDOWS_INTEGRATED_AUTH_CREDENTIAL <>
username		WS_STRING <>
password		WS_STRING <>
domain			WS_STRING <>
WS_STRING_WINDOWS_INTEGRATED_AUTH_CREDENTIAL ENDS

WS_DEFAULT_WINDOWS_INTEGRATED_AUTH_CREDENTIAL STRUC
credential		WS_WINDOWS_INTEGRATED_AUTH_CREDENTIAL <>
WS_DEFAULT_WINDOWS_INTEGRATED_AUTH_CREDENTIAL ENDS

WS_OPAQUE_WINDOWS_INTEGRATED_AUTH_CREDENTIAL STRUC
credential		WS_WINDOWS_INTEGRATED_AUTH_CREDENTIAL <>
opaqueAuthIdentity	ptr ?
WS_OPAQUE_WINDOWS_INTEGRATED_AUTH_CREDENTIAL ENDS

WS_USERNAME_CREDENTIAL	STRUC
credentialType		WS_USERNAME_CREDENTIAL_TYPE ?
WS_USERNAME_CREDENTIAL	ENDS

WS_STRING_USERNAME_CREDENTIAL STRUC
credential		WS_USERNAME_CREDENTIAL <>
username		WS_STRING <>
password		WS_STRING <>
WS_STRING_USERNAME_CREDENTIAL ENDS

WS_SECURITY_KEY_HANDLE	STRUC
keyHandleType		WS_SECURITY_KEY_HANDLE_TYPE ?
WS_SECURITY_KEY_HANDLE	ENDS

WS_RAW_SYMMETRIC_SECURITY_KEY_HANDLE STRUC
keyHandle		WS_SECURITY_KEY_HANDLE <>
rawKeyBytes		WS_BYTES <>
WS_RAW_SYMMETRIC_SECURITY_KEY_HANDLE ENDS

if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)

WS_NCRYPT_ASYMMETRIC_SECURITY_KEY_HANDLE STRUC
keyHandle		WS_SECURITY_KEY_HANDLE <>
asymmetricKey		NCRYPT_KEY_HANDLE ?
WS_NCRYPT_ASYMMETRIC_SECURITY_KEY_HANDLE ENDS

WS_CAPI_ASYMMETRIC_SECURITY_KEY_HANDLE STRUC
keyHandle		WS_SECURITY_KEY_HANDLE <>
provider		HCRYPTPROV ?
keySpec			ULONG ?
WS_CAPI_ASYMMETRIC_SECURITY_KEY_HANDLE ENDS

endif

WS_SECURITY_BINDING	STRUC
bindingType		WS_SECURITY_BINDING_TYPE ?
properties		ptr WS_SECURITY_BINDING_PROPERTY ?
propertyCount		ULONG ?
WS_SECURITY_BINDING	ENDS

WS_SSL_TRANSPORT_SECURITY_BINDING STRUC
binding			WS_SECURITY_BINDING <>
localCertCredential	ptr WS_CERT_CREDENTIAL ?
WS_SSL_TRANSPORT_SECURITY_BINDING ENDS

WS_TCP_SSPI_TRANSPORT_SECURITY_BINDING STRUC
binding			WS_SECURITY_BINDING <>
clientCredential	ptr WS_WINDOWS_INTEGRATED_AUTH_CREDENTIAL ?
WS_TCP_SSPI_TRANSPORT_SECURITY_BINDING ENDS

WS_NAMEDPIPE_SSPI_TRANSPORT_SECURITY_BINDING STRUC
binding			WS_SECURITY_BINDING <>
clientCredential	ptr WS_WINDOWS_INTEGRATED_AUTH_CREDENTIAL ?
WS_NAMEDPIPE_SSPI_TRANSPORT_SECURITY_BINDING ENDS

WS_HTTP_HEADER_AUTH_SECURITY_BINDING STRUC
binding			WS_SECURITY_BINDING <>
clientCredential	ptr WS_WINDOWS_INTEGRATED_AUTH_CREDENTIAL ?
WS_HTTP_HEADER_AUTH_SECURITY_BINDING ENDS

WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING STRUC
binding			WS_SECURITY_BINDING <>
bindingUsage		WS_MESSAGE_SECURITY_USAGE ?
clientCredential	ptr WS_WINDOWS_INTEGRATED_AUTH_CREDENTIAL ?
WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING ENDS

WS_USERNAME_MESSAGE_SECURITY_BINDING STRUC
binding			WS_SECURITY_BINDING <>
bindingUsage		WS_MESSAGE_SECURITY_USAGE ?
clientCredential	ptr WS_USERNAME_CREDENTIAL ?
passwordValidator	WS_VALIDATE_PASSWORD_CALLBACK ?
passwordValidatorCallbackState ptr ?
WS_USERNAME_MESSAGE_SECURITY_BINDING ENDS

WS_SECURITY_DESCRIPTION STRUC
securityBindings	ptr ptr WS_SECURITY_BINDING ?
securityBindingCount	ULONG ?
properties		ptr WS_SECURITY_PROPERTY ?
propertyCount		ULONG ?
WS_SECURITY_DESCRIPTION ENDS

WS_SECURITY_CONTEXT_MESSAGE_SECURITY_BINDING STRUC
binding			WS_SECURITY_BINDING <>
bindingUsage		WS_MESSAGE_SECURITY_USAGE ?
bootstrapSecurityDescription ptr WS_SECURITY_DESCRIPTION ?
WS_SECURITY_CONTEXT_MESSAGE_SECURITY_BINDING ENDS

WS_SECURITY_CONTEXT_PROPERTY STRUC
id			WS_SECURITY_CONTEXT_PROPERTY_ID ?
value			ptr ?
valueSize		ULONG ?
WS_SECURITY_CONTEXT_PROPERTY ENDS

WS_XML_SECURITY_TOKEN_PROPERTY STRUC
id			WS_XML_SECURITY_TOKEN_PROPERTY_ID ?
value			ptr ?
valueSize		ULONG ?
WS_XML_SECURITY_TOKEN_PROPERTY ENDS

WS_XML_TOKEN_MESSAGE_SECURITY_BINDING STRUC
binding			WS_SECURITY_BINDING <>
bindingUsage		WS_MESSAGE_SECURITY_USAGE ?
xmlToken		ptr WS_SECURITY_TOKEN ?
WS_XML_TOKEN_MESSAGE_SECURITY_BINDING ENDS

WS_SAML_AUTHENTICATOR	STRUC
authenticatorType	WS_SAML_AUTHENTICATOR_TYPE ?
WS_SAML_AUTHENTICATOR	ENDS

WS_CERT_SIGNED_SAML_AUTHENTICATOR STRUC
authenticator		WS_SAML_AUTHENTICATOR <>
trustedIssuerCerts	ptr ptr ?
trustedIssuerCertCount	ULONG ?
decryptionCert		ptr CERT_CONTEXT ?
samlValidator		WS_VALIDATE_SAML_CALLBACK ?
samlValidatorCallbackState ptr ?
WS_CERT_SIGNED_SAML_AUTHENTICATOR ENDS

WS_SAML_MESSAGE_SECURITY_BINDING STRUC
binding			WS_SECURITY_BINDING <>
bindingUsage		WS_MESSAGE_SECURITY_USAGE ?
authenticator		ptr WS_SAML_AUTHENTICATOR ?
WS_SAML_MESSAGE_SECURITY_BINDING ENDS

WS_REQUEST_SECURITY_TOKEN_PROPERTY STRUC
id			WS_REQUEST_SECURITY_TOKEN_PROPERTY_ID ?
value			ptr ?
valueSize		ULONG ?
WS_REQUEST_SECURITY_TOKEN_PROPERTY ENDS

WS_ANY_ATTRIBUTE	STRUC
localName		WS_XML_STRING <>
ns			WS_XML_STRING <>
value			ptr WS_XML_TEXT ?
WS_ANY_ATTRIBUTE	ENDS

WS_ANY_ATTRIBUTES	STRUC
attributes		ptr WS_ANY_ATTRIBUTE ?
attributeCount		ULONG ?
WS_ANY_ATTRIBUTES	ENDS

WS_BOOL_DESCRIPTION	STRUC
value			BOOL ?
WS_BOOL_DESCRIPTION	ENDS

WS_GUID_DESCRIPTION	STRUC
value			GUID <>
WS_GUID_DESCRIPTION	ENDS

WS_DATETIME_DESCRIPTION STRUC
minValue		WS_DATETIME <>
maxValue		WS_DATETIME <>
WS_DATETIME_DESCRIPTION ENDS

WS_DURATION		STRUC
negative		BOOL ?
years			ULONG ?
months			ULONG ?
days			ULONG ?
hours			ULONG ?
minutes			ULONG ?
seconds			ULONG ?
milliseconds		ULONG ?
ticks			ULONG ?
WS_DURATION		ENDS

WS_DURATION_DESCRIPTION STRUC
minValue		WS_DURATION <>
maxValue		WS_DURATION <>
comparer		WS_DURATION_COMPARISON_CALLBACK ?
WS_DURATION_DESCRIPTION ENDS

WS_TIMESPAN_DESCRIPTION STRUC
minValue		WS_TIMESPAN <>
maxValue		WS_TIMESPAN <>
WS_TIMESPAN_DESCRIPTION ENDS

WS_UNIQUE_ID_DESCRIPTION STRUC
minCharCount		ULONG ?
maxCharCount		ULONG ?
WS_UNIQUE_ID_DESCRIPTION ENDS

WS_STRING_DESCRIPTION	STRUC
minCharCount		ULONG ?
maxCharCount		ULONG ?
WS_STRING_DESCRIPTION	ENDS

WS_XML_STRING_DESCRIPTION STRUC
minByteCount		ULONG ?
maxByteCount		ULONG ?
WS_XML_STRING_DESCRIPTION ENDS

WS_XML_QNAME_DESCRIPTION STRUC
minLocalNameByteCount	ULONG ?
maxLocalNameByteCount	ULONG ?
minNsByteCount		ULONG ?
maxNsByteCount		ULONG ?
WS_XML_QNAME_DESCRIPTION ENDS

WS_CHAR_ARRAY_DESCRIPTION STRUC
minCharCount		ULONG ?
maxCharCount		ULONG ?
WS_CHAR_ARRAY_DESCRIPTION ENDS

WS_BYTE_ARRAY_DESCRIPTION STRUC
minByteCount		ULONG ?
maxByteCount		ULONG ?
WS_BYTE_ARRAY_DESCRIPTION ENDS

WS_UTF8_ARRAY_DESCRIPTION STRUC
minByteCount		ULONG ?
maxByteCount		ULONG ?
WS_UTF8_ARRAY_DESCRIPTION ENDS

WS_WSZ_DESCRIPTION	STRUC
minCharCount		ULONG ?
maxCharCount		ULONG ?
WS_WSZ_DESCRIPTION	ENDS

WS_INT8_DESCRIPTION	STRUC
minValue		sbyte ?
maxValue		sbyte ?
WS_INT8_DESCRIPTION	ENDS

WS_UINT8_DESCRIPTION	STRUC
minValue		db ?
maxValue		db ?
WS_UINT8_DESCRIPTION	ENDS

WS_INT16_DESCRIPTION	STRUC
minValue		sword ?
maxValue		sword ?
WS_INT16_DESCRIPTION	ENDS

WS_UINT16_DESCRIPTION	STRUC
minValue		USHORT ?
maxValue		USHORT ?
WS_UINT16_DESCRIPTION	ENDS

WS_INT32_DESCRIPTION	STRUC
minValue		SINT ?
maxValue		SINT ?
WS_INT32_DESCRIPTION	ENDS

WS_UINT32_DESCRIPTION	STRUC
minValue		ULONG ?
maxValue		ULONG ?
WS_UINT32_DESCRIPTION	ENDS

WS_INT64_DESCRIPTION	STRUC
minValue		sqword ?
maxValue		sqword ?
WS_INT64_DESCRIPTION	ENDS

WS_UINT64_DESCRIPTION	STRUC
minValue		dq ?
maxValue		dq ?
WS_UINT64_DESCRIPTION	ENDS

WS_FLOAT_DESCRIPTION	STRUC
minValue		real4 ?
maxValue		real4 ?
WS_FLOAT_DESCRIPTION	ENDS

WS_DOUBLE_DESCRIPTION	STRUC
minValue		real8 ?
maxValue		real8 ?
WS_DOUBLE_DESCRIPTION	ENDS

WS_DECIMAL_DESCRIPTION	STRUC
minValue		DECIMAL <>
maxValue		DECIMAL <>
WS_DECIMAL_DESCRIPTION	ENDS

WS_BYTES_DESCRIPTION	STRUC
minByteCount		ULONG ?
maxByteCount		ULONG ?
WS_BYTES_DESCRIPTION	ENDS

WS_ENUM_VALUE		STRUC
value			SINT ?
name			ptr WS_XML_STRING ?
WS_ENUM_VALUE		ENDS

WS_ENUM_DESCRIPTION	STRUC
values			ptr WS_ENUM_VALUE ?
valueCount		ULONG ?
maxByteCount		ULONG ?
nameIndices		ptr ULONG ?
WS_ENUM_DESCRIPTION	ENDS

WS_ITEM_RANGE		STRUC
minItemCount		ULONG ?
maxItemCount		ULONG ?
WS_ITEM_RANGE		ENDS

WS_DEFAULT_VALUE	STRUC
value			ptr ?
valueSize		ULONG ?
WS_DEFAULT_VALUE	ENDS

WS_FIELD_DESCRIPTION	STRUC
mapping			WS_FIELD_MAPPING ?
localName		ptr WS_XML_STRING ?
ns			ptr WS_XML_STRING ?
type			WS_TYPE ?
typeDescription		ptr ?
offs			ULONG ?
options			ULONG ?
defaultValue		ptr WS_DEFAULT_VALUE ?
countOffset		ULONG ?
itemLocalName		ptr WS_XML_STRING ?
itemNs			ptr WS_XML_STRING ?
itemRange		ptr WS_ITEM_RANGE ?
WS_FIELD_DESCRIPTION	ENDS

WS_UNION_FIELD_DESCRIPTION STRUC
value			SINT ?
field			WS_FIELD_DESCRIPTION <>
WS_UNION_FIELD_DESCRIPTION ENDS

WS_STRUCT_DESCRIPTION	STRUC
size			ULONG ?
alignment		ULONG ?
fields			ptr ptr WS_FIELD_DESCRIPTION ?
fieldCount		ULONG ?
typeLocalName		ptr WS_XML_STRING ?
typeNs			ptr WS_XML_STRING ?
parentType		ptr WS_STRUCT_DESCRIPTION ?
subTypes		ptr ptr WS_STRUCT_DESCRIPTION ?
subTypeCount		ULONG ?
structOptions		ULONG ?
WS_STRUCT_DESCRIPTION	ENDS

WS_UNION_DESCRIPTION	STRUC
size			ULONG ?
alignment		ULONG ?
fields			ptr ptr WS_UNION_FIELD_DESCRIPTION ?
fieldCount		ULONG ?
enumOffset		ULONG ?
noneEnumValue		SINT ?
valueIndices		ptr ULONG ?
WS_UNION_DESCRIPTION	ENDS

WS_ENDPOINT_ADDRESS_DESCRIPTION STRUC
addressingVersion	WS_ADDRESSING_VERSION ?
WS_ENDPOINT_ADDRESS_DESCRIPTION ENDS

WS_FAULT_DESCRIPTION	STRUC
envelopeVersion		WS_ENVELOPE_VERSION ?
WS_FAULT_DESCRIPTION	ENDS

WS_VOID_DESCRIPTION	STRUC
size			ULONG ?
WS_VOID_DESCRIPTION	ENDS

WS_CUSTOM_TYPE_DESCRIPTION STRUC
size			ULONG ?
alignment		ULONG ?
readCallback		WS_READ_TYPE_CALLBACK ?
writeCallback		WS_WRITE_TYPE_CALLBACK ?
descriptionData		ptr ?
isDefaultValueCallback	WS_IS_DEFAULT_VALUE_CALLBACK ?
WS_CUSTOM_TYPE_DESCRIPTION ENDS

WS_ATTRIBUTE_DESCRIPTION STRUC
attributeLocalName	ptr WS_XML_STRING ?
attributeNs		ptr WS_XML_STRING ?
type			WS_TYPE ?
typeDescription		ptr ?
WS_ATTRIBUTE_DESCRIPTION ENDS

WS_PARAMETER_DESCRIPTION STRUC
parameterType		WS_PARAMETER_TYPE ?
inputMessageIndex	USHORT ?
outputMessageIndex	USHORT ?
WS_PARAMETER_DESCRIPTION ENDS

WS_OPERATION_DESCRIPTION STRUC
versionInfo		ULONG ?
inputMessageDescription ptr WS_MESSAGE_DESCRIPTION ?
outputMessageDescription ptr WS_MESSAGE_DESCRIPTION ?
inputMessageOptions	ULONG ?
outputMessageOptions	ULONG ?
parameterCount		USHORT ?
parameterDescription	ptr WS_PARAMETER_DESCRIPTION ?
stubCallback		WS_SERVICE_STUB_CALLBACK ?
style			WS_OPERATION_STYLE ?
WS_OPERATION_DESCRIPTION ENDS

if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)

WS_CONTRACT_DESCRIPTION STRUC
operationCount		ULONG ?
operations		ptr ptr WS_OPERATION_DESCRIPTION ?
WS_CONTRACT_DESCRIPTION ENDS

WS_SERVICE_CONTRACT	STRUC
contractDescription	ptr WS_CONTRACT_DESCRIPTION ?
defaultMessageHandlerCallback WS_SERVICE_MESSAGE_RECEIVE_CALLBACK ?
methodTable		ptr ?
WS_SERVICE_CONTRACT	ENDS

WS_SERVICE_PROPERTY	STRUC
id			WS_SERVICE_PROPERTY_ID ?
value			ptr ?
valueSize		ULONG ?
WS_SERVICE_PROPERTY	ENDS

WS_SERVICE_ENDPOINT_PROPERTY STRUC
id			WS_SERVICE_ENDPOINT_PROPERTY_ID ?
value			ptr ?
valueSize		ULONG ?
WS_SERVICE_ENDPOINT_PROPERTY ENDS

WS_SERVICE_PROPERTY_ACCEPT_CALLBACK STRUC
callback		WS_SERVICE_ACCEPT_CHANNEL_CALLBACK ?
WS_SERVICE_PROPERTY_ACCEPT_CALLBACK ENDS

WS_SERVICE_METADATA_DOCUMENT STRUC
content			ptr WS_XML_STRING ?
name			ptr WS_STRING ?
WS_SERVICE_METADATA_DOCUMENT ENDS

WS_SERVICE_METADATA	STRUC
documentCount		ULONG ?
documents		ptr ptr WS_SERVICE_METADATA_DOCUMENT ?
serviceName		ptr WS_XML_STRING ?
serviceNs		ptr WS_XML_STRING ?
WS_SERVICE_METADATA	ENDS

WS_SERVICE_PROPERTY_CLOSE_CALLBACK STRUC
callback		WS_SERVICE_CLOSE_CHANNEL_CALLBACK ?
WS_SERVICE_PROPERTY_CLOSE_CALLBACK ENDS

WS_SERVICE_ENDPOINT_METADATA STRUC
portName		ptr WS_XML_STRING ?
bindingName		ptr WS_XML_STRING ?
bindingNs		ptr WS_XML_STRING ?
WS_SERVICE_ENDPOINT_METADATA ENDS

WS_SERVICE_ENDPOINT	STRUC
address			WS_ENDPOINT_ADDRESS <>
channelBinding		WS_CHANNEL_BINDING ?
channelType		WS_CHANNEL_TYPE ?
securityDescription	ptr WS_SECURITY_DESCRIPTION ?
contract		ptr WS_SERVICE_CONTRACT ?
authorizationCallback	WS_SERVICE_SECURITY_CALLBACK ?
properties		ptr WS_SERVICE_ENDPOINT_PROPERTY ?
propertyCount		ULONG ?
channelProperties	WS_CHANNEL_PROPERTIES <>
WS_SERVICE_ENDPOINT	ENDS

endif

WS_PROXY_PROPERTY	STRUC
id			WS_PROXY_PROPERTY_ID ?
value			ptr ?
valueSize		ULONG ?
WS_PROXY_PROPERTY	ENDS

WS_PROXY_MESSAGE_CALLBACK_CONTEXT STRUC
callback		WS_PROXY_MESSAGE_CALLBACK ?
state			ptr ?
WS_PROXY_MESSAGE_CALLBACK_CONTEXT ENDS

WS_CALL_PROPERTY	STRUC
id			WS_CALL_PROPERTY_ID ?
value			ptr ?
valueSize		ULONG ?
WS_CALL_PROPERTY	ENDS

WS_URL			STRUC
scheme			WS_URL_SCHEME_TYPE ?
WS_URL			ENDS

WS_HTTP_URL		STRUC
url			WS_URL <>
host			WS_STRING <>
port			USHORT ?
portAsString		WS_STRING <>
path			WS_STRING <>
query			WS_STRING <>
fragment		WS_STRING <>
WS_HTTP_URL		ENDS

WS_HTTPS_URL		STRUC
url			WS_URL <>
host			WS_STRING <>
port			USHORT ?
portAsString		WS_STRING <>
path			WS_STRING <>
query			WS_STRING <>
fragment		WS_STRING <>
WS_HTTPS_URL		ENDS

WS_NETTCP_URL		STRUC
url			WS_URL <>
host			WS_STRING <>
port			USHORT ?
portAsString		WS_STRING <>
path			WS_STRING <>
query			WS_STRING <>
fragment		WS_STRING <>
WS_NETTCP_URL		ENDS

WS_SOAPUDP_URL		STRUC
url			WS_URL <>
host			WS_STRING <>
port			USHORT ?
portAsString		WS_STRING <>
path			WS_STRING <>
query			WS_STRING <>
fragment		WS_STRING <>
WS_SOAPUDP_URL		ENDS

WS_NETPIPE_URL		STRUC
url			WS_URL <>
host			WS_STRING <>
port			USHORT ?
portAsString		WS_STRING <>
path			WS_STRING <>
query			WS_STRING <>
fragment		WS_STRING <>
WS_NETPIPE_URL		ENDS

WS_UNIQUE_ID		STRUC
uri			WS_STRING <>
guid			GUID <>
WS_UNIQUE_ID		ENDS

WS_BUFFERS		STRUC
bufferCount		ULONG ?
buffers			ptr WS_BYTES ?
WS_BUFFERS		ENDS

WS_METADATA_ENDPOINT	STRUC
endpointAddress		WS_ENDPOINT_ADDRESS <>
endpointPolicy		ptr WS_POLICY ?
portName		ptr WS_XML_STRING ?
serviceName		ptr WS_XML_STRING ?
serviceNs		ptr WS_XML_STRING ?
bindingName		ptr WS_XML_STRING ?
bindingNs		ptr WS_XML_STRING ?
portTypeName		ptr WS_XML_STRING ?
portTypeNs		ptr WS_XML_STRING ?
WS_METADATA_ENDPOINT	ENDS

WS_METADATA_ENDPOINTS	STRUC
endpoints		ptr WS_METADATA_ENDPOINT ?
endpointCount		ULONG ?
WS_METADATA_ENDPOINTS	ENDS

WS_METADATA_PROPERTY	STRUC
id			WS_METADATA_PROPERTY_ID ?
value			ptr  ?
valueSize		ULONG ?
WS_METADATA_PROPERTY	ENDS

WS_POLICY_PROPERTY	STRUC
id			WS_POLICY_PROPERTY_ID ?
value			ptr ?
valueSize		ULONG ?
WS_POLICY_PROPERTY	ENDS

WS_POLICY_PROPERTIES	STRUC
properties		ptr WS_POLICY_PROPERTY ?
propertyCount		ULONG ?
WS_POLICY_PROPERTIES	ENDS

WS_SECURITY_BINDING_PROPERTY_CONSTRAINT STRUC
id			WS_SECURITY_BINDING_PROPERTY_ID ?
allowedValues		ptr ?
allowedValuesSize	ULONG ?
securityBindingProperty WS_SECURITY_BINDING_PROPERTY <>
WS_SECURITY_BINDING_PROPERTY_CONSTRAINT ENDS

WS_SECURITY_BINDING_CONSTRAINT STRUC
type			WS_SECURITY_BINDING_CONSTRAINT_TYPE ?
propertyConstraints	ptr WS_SECURITY_BINDING_PROPERTY_CONSTRAINT ?
propertyConstraintCount ULONG ?
WS_SECURITY_BINDING_CONSTRAINT ENDS

WS_SSL_TRANSPORT_SECURITY_BINDING_CONSTRAINT STRUC
bindingConstraint	WS_SECURITY_BINDING_CONSTRAINT <>
clientCertCredentialRequired BOOL ?
WS_SSL_TRANSPORT_SECURITY_BINDING_CONSTRAINT ENDS

WS_USERNAME_MESSAGE_SECURITY_BINDING_CONSTRAINT STRUC
bindingConstraint	WS_SECURITY_BINDING_CONSTRAINT <>
bindingUsage		WS_MESSAGE_SECURITY_USAGE ?
WS_USERNAME_MESSAGE_SECURITY_BINDING_CONSTRAINT ENDS

WS_HTTP_HEADER_AUTH_SECURITY_BINDING_CONSTRAINT STRUC
bindingConstraint	WS_SECURITY_BINDING_CONSTRAINT <>
WS_HTTP_HEADER_AUTH_SECURITY_BINDING_CONSTRAINT ENDS

WS_TCP_SSPI_TRANSPORT_SECURITY_BINDING_CONSTRAINT STRUC
bindingConstraint	WS_SECURITY_BINDING_CONSTRAINT <>
WS_TCP_SSPI_TRANSPORT_SECURITY_BINDING_CONSTRAINT ENDS

WS_CERT_MESSAGE_SECURITY_BINDING_CONSTRAINT STRUC
bindingConstraint	WS_SECURITY_BINDING_CONSTRAINT <>
bindingUsage		WS_MESSAGE_SECURITY_USAGE ?
WS_CERT_MESSAGE_SECURITY_BINDING_CONSTRAINT ENDS

WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING_CONSTRAINT STRUC
bindingConstraint	WS_SECURITY_BINDING_CONSTRAINT <>
bindingUsage		WS_MESSAGE_SECURITY_USAGE ?
WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING_CONSTRAINT ENDS

WS_REQUEST_SECURITY_TOKEN_PROPERTY_CONSTRAINT STRUC
id			WS_REQUEST_SECURITY_TOKEN_PROPERTY_ID ?
allowedValues		ptr ?
allowedValuesSize	ULONG ?
requestSecurityTokenProperty WS_REQUEST_SECURITY_TOKEN_PROPERTY <>
WS_REQUEST_SECURITY_TOKEN_PROPERTY_CONSTRAINT ENDS

WS_ISSUED_TOKEN_MESSAGE_SECURITY_BINDING_CONSTRAINT STRUC
bindingConstraint	WS_SECURITY_BINDING_CONSTRAINT <>
bindingUsage		WS_MESSAGE_SECURITY_USAGE ?
claimConstraints	ptr WS_XML_STRING ?
claimConstraintCount	ULONG ?
requestSecurityTokenPropertyConstraints ptr WS_REQUEST_SECURITY_TOKEN_PROPERTY_CONSTRAINT ?
requestSecurityTokenPropertyConstraintCount ULONG ?
issuerAddress		ptr WS_ENDPOINT_ADDRESS ?
requestSecurityTokenTemplate ptr WS_XML_BUFFER ?
WS_ISSUED_TOKEN_MESSAGE_SECURITY_BINDING_CONSTRAINT ENDS

WS_SECURITY_PROPERTY_CONSTRAINT STRUC
id			WS_SECURITY_PROPERTY_ID ?
allowedValues		ptr ?
allowedValuesSize	ULONG ?
securityProperty	WS_SECURITY_PROPERTY <>
WS_SECURITY_PROPERTY_CONSTRAINT ENDS

WS_SECURITY_CONSTRAINTS	 STRUC
securityPropertyConstraints ptr WS_SECURITY_PROPERTY_CONSTRAINT ?
securityPropertyConstraintCount ULONG ?
securityBindingConstraints ptr ptr WS_SECURITY_BINDING_CONSTRAINT ?
securityBindingConstraintCount ULONG ?
WS_SECURITY_CONSTRAINTS ENDS

WS_SECURITY_CONTEXT_MESSAGE_SECURITY_BINDING_CONSTRAINT STRUC
bindingConstraint	WS_SECURITY_BINDING_CONSTRAINT <>
bindingUsage		WS_MESSAGE_SECURITY_USAGE ?
bootstrapSecurityConstraint ptr WS_SECURITY_CONSTRAINTS ?
WS_SECURITY_CONTEXT_MESSAGE_SECURITY_BINDING_CONSTRAINT ENDS


WS_CHANNEL_PROPERTY_CONSTRAINT STRUC
id			WS_CHANNEL_PROPERTY_ID ?
allowedValues		ptr ?
allowedValuesSize	ULONG ?
channelProperty		WS_CHANNEL_PROPERTY <>
WS_CHANNEL_PROPERTY_CONSTRAINT ENDS

WS_POLICY_EXTENSION	STRUC
type			WS_POLICY_EXTENSION_TYPE ?
WS_POLICY_EXTENSION	ENDS

WS_ENDPOINT_POLICY_EXTENSION STRUC
policyExtension		WS_POLICY_EXTENSION <>
assertionName		ptr WS_XML_STRING ?
assertionNs		ptr WS_XML_STRING ?
assertionValue		ptr WS_XML_BUFFER ?
WS_ENDPOINT_POLICY_EXTENSION ENDS

WS_POLICY_CONSTRAINTS	STRUC
channelBinding		WS_CHANNEL_BINDING ?
channelPropertyConstraints ptr WS_CHANNEL_PROPERTY_CONSTRAINT ?
channelPropertyConstraintCount ULONG ?
securityConstraints	ptr WS_SECURITY_CONSTRAINTS ?
policyExtensions	ptr ptr WS_POLICY_EXTENSION ?
policyExtensionCount	ULONG ?
WS_POLICY_CONSTRAINTS	ENDS

WS_HTTP_POLICY_DESCRIPTION STRUC
channelProperties	WS_CHANNEL_PROPERTIES <>
WS_HTTP_POLICY_DESCRIPTION ENDS

WS_SSL_TRANSPORT_SECURITY_BINDING_POLICY_DESCRIPTION STRUC
securityBindingProperties WS_SECURITY_BINDING_PROPERTIES <>
WS_SSL_TRANSPORT_SECURITY_BINDING_POLICY_DESCRIPTION ENDS

WS_HTTP_SSL_POLICY_DESCRIPTION STRUC
channelProperties	WS_CHANNEL_PROPERTIES <>
securityProperties	WS_SECURITY_PROPERTIES <>
sslTransportSecurityBinding WS_SSL_TRANSPORT_SECURITY_BINDING_POLICY_DESCRIPTION <>
WS_HTTP_SSL_POLICY_DESCRIPTION ENDS

WS_HTTP_HEADER_AUTH_SECURITY_BINDING_POLICY_DESCRIPTION STRUC
securityBindingProperties WS_SECURITY_BINDING_PROPERTIES <>
WS_HTTP_HEADER_AUTH_SECURITY_BINDING_POLICY_DESCRIPTION ENDS

WS_HTTP_HEADER_AUTH_POLICY_DESCRIPTION STRUC
channelProperties	WS_CHANNEL_PROPERTIES <>
securityProperties	WS_SECURITY_PROPERTIES <>
httpHeaderAuthSecurityBinding WS_HTTP_HEADER_AUTH_SECURITY_BINDING_POLICY_DESCRIPTION <>
WS_HTTP_HEADER_AUTH_POLICY_DESCRIPTION ENDS

WS_HTTP_SSL_HEADER_AUTH_POLICY_DESCRIPTION STRUC
channelProperties	WS_CHANNEL_PROPERTIES <>
securityProperties	WS_SECURITY_PROPERTIES <>
sslTransportSecurityBinding WS_SSL_TRANSPORT_SECURITY_BINDING_POLICY_DESCRIPTION <>
httpHeaderAuthSecurityBinding WS_HTTP_HEADER_AUTH_SECURITY_BINDING_POLICY_DESCRIPTION <>
WS_HTTP_SSL_HEADER_AUTH_POLICY_DESCRIPTION ENDS

WS_USERNAME_MESSAGE_SECURITY_BINDING_POLICY_DESCRIPTION STRUC
securityBindingProperties WS_SECURITY_BINDING_PROPERTIES <>
bindingUsage		WS_MESSAGE_SECURITY_USAGE ?
WS_USERNAME_MESSAGE_SECURITY_BINDING_POLICY_DESCRIPTION ENDS

WS_HTTP_SSL_USERNAME_POLICY_DESCRIPTION STRUC
channelProperties	WS_CHANNEL_PROPERTIES <>
securityProperties	WS_SECURITY_PROPERTIES <>
sslTransportSecurityBinding WS_SSL_TRANSPORT_SECURITY_BINDING_POLICY_DESCRIPTION <>
usernameMessageSecurityBinding WS_USERNAME_MESSAGE_SECURITY_BINDING_POLICY_DESCRIPTION <>
WS_HTTP_SSL_USERNAME_POLICY_DESCRIPTION ENDS

WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING_POLICY_DESCRIPTION STRUC
securityBindingProperties WS_SECURITY_BINDING_PROPERTIES <>
bindingUsage		WS_MESSAGE_SECURITY_USAGE ?
WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING_POLICY_DESCRIPTION ENDS

WS_HTTP_SSL_KERBEROS_APREQ_POLICY_DESCRIPTION STRUC
channelProperties	WS_CHANNEL_PROPERTIES <>
securityProperties	WS_SECURITY_PROPERTIES <>
sslTransportSecurityBinding WS_SSL_TRANSPORT_SECURITY_BINDING_POLICY_DESCRIPTION <>
kerberosApreqMessageSecurityBinding WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING_POLICY_DESCRIPTION <>
WS_HTTP_SSL_KERBEROS_APREQ_POLICY_DESCRIPTION ENDS

WS_TCP_POLICY_DESCRIPTION STRUC
channelProperties	WS_CHANNEL_PROPERTIES <>
WS_TCP_POLICY_DESCRIPTION ENDS

WS_SSPI_TRANSPORT_SECURITY_BINDING_POLICY_DESCRIPTION STRUC
securityBindingProperties WS_SECURITY_BINDING_PROPERTIES <>
WS_SSPI_TRANSPORT_SECURITY_BINDING_POLICY_DESCRIPTION ENDS

WS_TCP_SSPI_POLICY_DESCRIPTION STRUC
channelProperties	WS_CHANNEL_PROPERTIES <>
securityProperties	WS_SECURITY_PROPERTIES <>
sspiTransportSecurityBinding WS_SSPI_TRANSPORT_SECURITY_BINDING_POLICY_DESCRIPTION <>
WS_TCP_SSPI_POLICY_DESCRIPTION ENDS

WS_TCP_SSPI_USERNAME_POLICY_DESCRIPTION STRUC
channelProperties	WS_CHANNEL_PROPERTIES <>
securityProperties	WS_SECURITY_PROPERTIES <>
sspiTransportSecurityBinding WS_SSPI_TRANSPORT_SECURITY_BINDING_POLICY_DESCRIPTION <>
usernameMessageSecurityBinding WS_USERNAME_MESSAGE_SECURITY_BINDING_POLICY_DESCRIPTION <>
WS_TCP_SSPI_USERNAME_POLICY_DESCRIPTION ENDS

WS_TCP_SSPI_KERBEROS_APREQ_POLICY_DESCRIPTION STRUC
channelProperties	WS_CHANNEL_PROPERTIES <>
securityProperties	WS_SECURITY_PROPERTIES <>
sspiTransportSecurityBinding WS_SSPI_TRANSPORT_SECURITY_BINDING_POLICY_DESCRIPTION <>
kerberosApreqMessageSecurityBinding WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING_POLICY_DESCRIPTION <>
WS_TCP_SSPI_KERBEROS_APREQ_POLICY_DESCRIPTION ENDS

WS_SECURITY_CONTEXT_MESSAGE_SECURITY_BINDING_POLICY_DESCRIPTION STRUC
securityBindingProperties WS_SECURITY_BINDING_PROPERTIES <>
bindingUsage		WS_MESSAGE_SECURITY_USAGE ?
WS_SECURITY_CONTEXT_MESSAGE_SECURITY_BINDING_POLICY_DESCRIPTION ENDS

WS_SECURITY_CONTEXT_SECURITY_BINDING_POLICY_DESCRIPTION STRUC
securityContextMessageSecurityBinding WS_SECURITY_CONTEXT_MESSAGE_SECURITY_BINDING_POLICY_DESCRIPTION <>
securityProperties	WS_SECURITY_PROPERTIES <>
WS_SECURITY_CONTEXT_SECURITY_BINDING_POLICY_DESCRIPTION ENDS

WS_TCP_SSPI_KERBEROS_APREQ_SECURITY_CONTEXT_POLICY_DESCRIPTION STRUC
channelProperties	WS_CHANNEL_PROPERTIES <>
securityProperties	WS_SECURITY_PROPERTIES <>
sspiTransportSecurityBinding WS_SSPI_TRANSPORT_SECURITY_BINDING_POLICY_DESCRIPTION <>
kerberosApreqMessageSecurityBinding WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING_POLICY_DESCRIPTION <>
securityContextSecurityBinding WS_SECURITY_CONTEXT_SECURITY_BINDING_POLICY_DESCRIPTION <>
WS_TCP_SSPI_KERBEROS_APREQ_SECURITY_CONTEXT_POLICY_DESCRIPTION ENDS

WS_TCP_SSPI_USERNAME_SECURITY_CONTEXT_POLICY_DESCRIPTION STRUC
channelProperties	WS_CHANNEL_PROPERTIES <>
securityProperties	WS_SECURITY_PROPERTIES <>
sspiTransportSecurityBinding WS_SSPI_TRANSPORT_SECURITY_BINDING_POLICY_DESCRIPTION <>
usernameMessageSecurityBinding WS_USERNAME_MESSAGE_SECURITY_BINDING_POLICY_DESCRIPTION <>
securityContextSecurityBinding WS_SECURITY_CONTEXT_SECURITY_BINDING_POLICY_DESCRIPTION <>
WS_TCP_SSPI_USERNAME_SECURITY_CONTEXT_POLICY_DESCRIPTION ENDS

WS_HTTP_SSL_USERNAME_SECURITY_CONTEXT_POLICY_DESCRIPTION STRUC
channelProperties	WS_CHANNEL_PROPERTIES <>
securityProperties	WS_SECURITY_PROPERTIES <>
sslTransportSecurityBinding WS_SSL_TRANSPORT_SECURITY_BINDING_POLICY_DESCRIPTION <>
usernameMessageSecurityBinding WS_USERNAME_MESSAGE_SECURITY_BINDING_POLICY_DESCRIPTION <>
securityContextSecurityBinding WS_SECURITY_CONTEXT_SECURITY_BINDING_POLICY_DESCRIPTION <>
WS_HTTP_SSL_USERNAME_SECURITY_CONTEXT_POLICY_DESCRIPTION ENDS

WS_HTTP_SSL_KERBEROS_APREQ_SECURITY_CONTEXT_POLICY_DESCRIPTION STRUC
channelProperties	WS_CHANNEL_PROPERTIES <>
securityProperties	WS_SECURITY_PROPERTIES <>
sslTransportSecurityBinding WS_SSL_TRANSPORT_SECURITY_BINDING_POLICY_DESCRIPTION <>
kerberosApreqMessageSecurityBinding WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING_POLICY_DESCRIPTION <>
securityContextSecurityBinding WS_SECURITY_CONTEXT_SECURITY_BINDING_POLICY_DESCRIPTION <>
WS_HTTP_SSL_KERBEROS_APREQ_SECURITY_CONTEXT_POLICY_DESCRIPTION ENDS

WS_HTTP_BINDING_TEMPLATE STRUC
channelProperties	WS_CHANNEL_PROPERTIES <>
WS_HTTP_BINDING_TEMPLATE ENDS

WS_TCP_BINDING_TEMPLATE STRUC
channelProperties	WS_CHANNEL_PROPERTIES <>
WS_TCP_BINDING_TEMPLATE ENDS

WS_SSL_TRANSPORT_SECURITY_BINDING_TEMPLATE STRUC
securityBindingProperties WS_SECURITY_BINDING_PROPERTIES <>
localCertCredential	ptr WS_CERT_CREDENTIAL ?
WS_SSL_TRANSPORT_SECURITY_BINDING_TEMPLATE ENDS

WS_HTTP_SSL_BINDING_TEMPLATE STRUC
channelProperties	WS_CHANNEL_PROPERTIES <>
securityProperties	WS_SECURITY_PROPERTIES <>
sslTransportSecurityBinding WS_SSL_TRANSPORT_SECURITY_BINDING_TEMPLATE <>
WS_HTTP_SSL_BINDING_TEMPLATE ENDS

WS_HTTP_HEADER_AUTH_SECURITY_BINDING_TEMPLATE STRUC
securityBindingProperties WS_SECURITY_BINDING_PROPERTIES <>
clientCredential	ptr WS_WINDOWS_INTEGRATED_AUTH_CREDENTIAL ?
WS_HTTP_HEADER_AUTH_SECURITY_BINDING_TEMPLATE ENDS

WS_HTTP_HEADER_AUTH_BINDING_TEMPLATE STRUC
channelProperties	WS_CHANNEL_PROPERTIES <>
securityProperties	WS_SECURITY_PROPERTIES <>
httpHeaderAuthSecurityBinding WS_HTTP_HEADER_AUTH_SECURITY_BINDING_TEMPLATE <>
WS_HTTP_HEADER_AUTH_BINDING_TEMPLATE ENDS

WS_TCP_SSPI_TRANSPORT_SECURITY_BINDING_TEMPLATE STRUC
securityBindingProperties WS_SECURITY_BINDING_PROPERTIES <>
clientCredential	ptr WS_WINDOWS_INTEGRATED_AUTH_CREDENTIAL ?
WS_TCP_SSPI_TRANSPORT_SECURITY_BINDING_TEMPLATE ENDS

WS_TCP_SSPI_BINDING_TEMPLATE STRUC
channelProperties	WS_CHANNEL_PROPERTIES <>
securityProperties	WS_SECURITY_PROPERTIES <>
sspiTransportSecurityBinding WS_TCP_SSPI_TRANSPORT_SECURITY_BINDING_TEMPLATE <>
WS_TCP_SSPI_BINDING_TEMPLATE ENDS

WS_HTTP_SSL_HEADER_AUTH_BINDING_TEMPLATE STRUC
channelProperties	WS_CHANNEL_PROPERTIES <>
securityProperties	WS_SECURITY_PROPERTIES <>
sslTransportSecurityBinding WS_SSL_TRANSPORT_SECURITY_BINDING_TEMPLATE <>
httpHeaderAuthSecurityBinding WS_HTTP_HEADER_AUTH_SECURITY_BINDING_TEMPLATE <>
WS_HTTP_SSL_HEADER_AUTH_BINDING_TEMPLATE ENDS

WS_USERNAME_MESSAGE_SECURITY_BINDING_TEMPLATE STRUC
securityBindingProperties WS_SECURITY_BINDING_PROPERTIES <>
clientCredential	ptr WS_USERNAME_CREDENTIAL ?
passwordValidator	WS_VALIDATE_PASSWORD_CALLBACK ?
passwordValidatorCallbackState ptr ?
WS_USERNAME_MESSAGE_SECURITY_BINDING_TEMPLATE ENDS

WS_HTTP_SSL_USERNAME_BINDING_TEMPLATE STRUC
channelProperties	WS_CHANNEL_PROPERTIES <>
securityProperties	WS_SECURITY_PROPERTIES <>
sslTransportSecurityBinding WS_SSL_TRANSPORT_SECURITY_BINDING_TEMPLATE <>
usernameMessageSecurityBinding WS_USERNAME_MESSAGE_SECURITY_BINDING_TEMPLATE <>
WS_HTTP_SSL_USERNAME_BINDING_TEMPLATE ENDS

WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING_TEMPLATE STRUC
securityBindingProperties WS_SECURITY_BINDING_PROPERTIES <>
clientCredential	ptr WS_WINDOWS_INTEGRATED_AUTH_CREDENTIAL ?
WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING_TEMPLATE ENDS

WS_HTTP_SSL_KERBEROS_APREQ_BINDING_TEMPLATE STRUC
channelProperties	WS_CHANNEL_PROPERTIES <>
securityProperties	WS_SECURITY_PROPERTIES <>
sslTransportSecurityBinding WS_SSL_TRANSPORT_SECURITY_BINDING_TEMPLATE <>
kerberosApreqMessageSecurityBinding WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING_TEMPLATE <>
WS_HTTP_SSL_KERBEROS_APREQ_BINDING_TEMPLATE ENDS

WS_TCP_SSPI_USERNAME_BINDING_TEMPLATE STRUC
channelProperties	WS_CHANNEL_PROPERTIES <>
securityProperties	WS_SECURITY_PROPERTIES <>
sspiTransportSecurityBinding WS_TCP_SSPI_TRANSPORT_SECURITY_BINDING_TEMPLATE <>
usernameMessageSecurityBinding WS_USERNAME_MESSAGE_SECURITY_BINDING_TEMPLATE <>
WS_TCP_SSPI_USERNAME_BINDING_TEMPLATE ENDS

WS_TCP_SSPI_KERBEROS_APREQ_BINDING_TEMPLATE STRUC
channelProperties	WS_CHANNEL_PROPERTIES <>
securityProperties	WS_SECURITY_PROPERTIES <>
sspiTransportSecurityBinding WS_TCP_SSPI_TRANSPORT_SECURITY_BINDING_TEMPLATE <>
kerberosApreqMessageSecurityBinding WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING_TEMPLATE <>
WS_TCP_SSPI_KERBEROS_APREQ_BINDING_TEMPLATE ENDS

WS_SECURITY_CONTEXT_MESSAGE_SECURITY_BINDING_TEMPLATE STRUC
securityBindingProperties WS_SECURITY_BINDING_PROPERTIES <>
WS_SECURITY_CONTEXT_MESSAGE_SECURITY_BINDING_TEMPLATE ENDS

WS_SECURITY_CONTEXT_SECURITY_BINDING_TEMPLATE STRUC
securityContextMessageSecurityBinding WS_SECURITY_CONTEXT_MESSAGE_SECURITY_BINDING_TEMPLATE <>
securityProperties	WS_SECURITY_PROPERTIES <>
WS_SECURITY_CONTEXT_SECURITY_BINDING_TEMPLATE ENDS

WS_HTTP_SSL_USERNAME_SECURITY_CONTEXT_BINDING_TEMPLATE STRUC
channelProperties	WS_CHANNEL_PROPERTIES <>
securityProperties	WS_SECURITY_PROPERTIES <>
sslTransportSecurityBinding WS_SSL_TRANSPORT_SECURITY_BINDING_TEMPLATE <>
usernameMessageSecurityBinding WS_USERNAME_MESSAGE_SECURITY_BINDING_TEMPLATE <>
securityContextSecurityBinding WS_SECURITY_CONTEXT_SECURITY_BINDING_TEMPLATE <>
WS_HTTP_SSL_USERNAME_SECURITY_CONTEXT_BINDING_TEMPLATE ENDS

WS_HTTP_SSL_KERBEROS_APREQ_SECURITY_CONTEXT_BINDING_TEMPLATE STRUC
channelProperties	WS_CHANNEL_PROPERTIES <>
securityProperties	WS_SECURITY_PROPERTIES <>
sslTransportSecurityBinding WS_SSL_TRANSPORT_SECURITY_BINDING_TEMPLATE <>
kerberosApreqMessageSecurityBinding WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING_TEMPLATE <>
securityContextSecurityBinding WS_SECURITY_CONTEXT_SECURITY_BINDING_TEMPLATE <>
WS_HTTP_SSL_KERBEROS_APREQ_SECURITY_CONTEXT_BINDING_TEMPLATE ENDS

WS_TCP_SSPI_USERNAME_SECURITY_CONTEXT_BINDING_TEMPLATE STRUC
channelProperties	WS_CHANNEL_PROPERTIES <>
securityProperties	WS_SECURITY_PROPERTIES <>
sspiTransportSecurityBinding WS_TCP_SSPI_TRANSPORT_SECURITY_BINDING_TEMPLATE <>
usernameMessageSecurityBinding WS_USERNAME_MESSAGE_SECURITY_BINDING_TEMPLATE <>
securityContextSecurityBinding WS_SECURITY_CONTEXT_SECURITY_BINDING_TEMPLATE <>
WS_TCP_SSPI_USERNAME_SECURITY_CONTEXT_BINDING_TEMPLATE ENDS

WS_TCP_SSPI_KERBEROS_APREQ_SECURITY_CONTEXT_BINDING_TEMPLATE STRUC
channelProperties	WS_CHANNEL_PROPERTIES <>
securityProperties	WS_SECURITY_PROPERTIES <>
sspiTransportSecurityBinding WS_TCP_SSPI_TRANSPORT_SECURITY_BINDING_TEMPLATE <>
kerberosApreqMessageSecurityBinding WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING_TEMPLATE <>
securityContextSecurityBinding WS_SECURITY_CONTEXT_SECURITY_BINDING_TEMPLATE <>
WS_TCP_SSPI_KERBEROS_APREQ_SECURITY_CONTEXT_BINDING_TEMPLATE ENDS

WS_XML_STRING_DICTIONARY_VALUE macro S, D, I
	exitm<{ sizeof(S)-1, S, D, I }>
	endm

WS_XML_STRING_VALUE macro S
	exitm<{ sizeof(S)-1, S, NULL, 0 }>
	endm

WS_XML_STRING_NULL equ <{ 0, NULL, NULL, NULL }>

WS_STRING_VALUE macro S
	exitm<{ lengthof(S) - 1, S }>
	endm

WS_STRING_EMPTY equ <{ 0, NULL }>

WsCountOf macro arrayValue
	exitm<RTL_NUMBER_OF(arrayValue)>
	endm

WsOffsetOf macro type, field
	exitm<FIELD_OFFSET(type, field)>
	endm

WsStartReaderCanonicalization proto WINAPI :ptr, :WS_WRITE_CALLBACK, :ptr, :ptr, :ULONG, :ptr
WsEndReaderCanonicalization proto WINAPI :ptr, :ptr
WsStartWriterCanonicalization proto WINAPI :ptr, :WS_WRITE_CALLBACK, :ptr, :ptr, :ULONG, :ptr
WsEndWriterCanonicalization proto WINAPI :ptr, :ptr
WsCreateXmlBuffer proto WINAPI :ptr, :ptr, :ULONG, :ptr, :ptr
WsRemoveNode proto WINAPI :ptr, :ptr
WsCreateReader proto WINAPI :ptr, :ULONG, :ptr, :ptr
WsSetInput proto WINAPI :ptr, :ptr, :ptr, :ptr, :ULONG, :ptr
WsSetInputToBuffer proto WINAPI :ptr, :ptr, :ptr, :ULONG, :ptr
WsFreeReader proto WINAPI :ptr
WsGetReaderProperty proto WINAPI :ptr, :WS_XML_READER_PROPERTY_ID, :ptr, :ULONG, :ptr
WsGetReaderNode proto WINAPI :ptr, :ptr, :ptr
WsFillReader proto WINAPI :ptr, :ULONG, :ptr, :ptr
WsReadStartElement proto WINAPI :ptr, :ptr
WsReadToStartElement proto WINAPI :ptr, :ptr, :ptr, :ptr, :ptr
WsReadStartAttribute proto WINAPI :ptr, :ULONG, :ptr
WsReadEndAttribute proto WINAPI :ptr, :ptr
WsReadNode proto WINAPI :ptr, :ptr
WsSkipNode proto WINAPI :ptr, :ptr
WsReadEndElement proto WINAPI :ptr, :ptr
WsFindAttribute proto WINAPI  :ptr, :ptr, :ptr, :BOOL, :ptr, :ptr
WsReadValue proto WINAPI :ptr, :WS_VALUE_TYPE, :ptr, :ULONG, :ptr
WsReadChars proto WINAPI :ptr, :ptr, :ULONG, :ptr, :ptr
WsReadCharsUtf8 proto WINAPI :ptr, :ptr, :ULONG, :ptr, :ptr
WsReadBytes proto WINAPI :ptr, :ptr, :ULONG, :ptr, :ptr
WsReadArray proto WINAPI :ptr, :ptr, :ptr, :WS_VALUE_TYPE, :ptr, :ULONG, :ULONG, :ULONG, :ptr, :ptr
WsGetReaderPosition proto WINAPI :ptr, :ptr, :ptr
WsSetReaderPosition proto WINAPI :ptr, :ptr, :ptr
WsMoveReader proto WINAPI :ptr, :WS_MOVE_TO, :ptr, :ptr
WsCreateWriter proto WINAPI :ptr, :ULONG, :ptr, :ptr
WsFreeWriter proto WINAPI :ptr
WsSetOutput proto WINAPI :ptr, :ptr, :ptr, :ptr, :ULONG, :ptr
WsSetOutputToBuffer proto WINAPI :ptr, :ptr, :ptr, :ULONG, :ptr
WsGetWriterProperty proto WINAPI :ptr, :WS_XML_WRITER_PROPERTY_ID, :ptr, :ULONG, :ptr
WsFlushWriter proto WINAPI :ptr, :ULONG, :ptr, :ptr
WsWriteStartElement proto WINAPI :ptr, :ptr, :ptr, :ptr, :ptr
WsWriteEndStartElement proto WINAPI :ptr, :ptr
WsWriteXmlnsAttribute proto WINAPI :ptr, :ptr, :ptr, :BOOL, :ptr
WsWriteStartAttribute proto WINAPI :ptr, :ptr, :ptr, :ptr, :BOOL, :ptr
WsWriteEndAttribute proto WINAPI :ptr, :ptr
WsWriteValue proto WINAPI  :ptr, :WS_VALUE_TYPE, :ptr, :ULONG, :ptr
WsWriteXmlBuffer proto WINAPI :ptr, :ptr, :ptr
WsReadXmlBuffer proto WINAPI :ptr, :ptr, :ptr, :ptr
WsWriteXmlBufferToBytes proto WINAPI :ptr, :ptr, :ptr, :ptr, :ULONG, :ptr, :ptr, :ptr, :ptr
WsReadXmlBufferFromBytes proto WINAPI :ptr, :ptr, :ptr, :ULONG, :ptr, :ULONG, :ptr, :ptr, :ptr
WsWriteArray proto WINAPI :ptr, :ptr, :ptr, :WS_VALUE_TYPE, :ptr, :ULONG, :ULONG, :ULONG, :ptr
WsWriteQualifiedName proto WINAPI :ptr, :ptr, :ptr, :ptr, :ptr
WsWriteChars proto WINAPI :ptr, :ptr, :ULONG, :ptr
WsWriteCharsUtf8 proto WINAPI :ptr, :ptr, :ULONG, :ptr
WsWriteBytes proto WINAPI :ptr, :ptr, :ULONG, :ptr
WsPushBytes proto WINAPI :ptr, :WS_PUSH_BYTES_CALLBACK, :ptr, :ptr
WsPullBytes proto WINAPI :ptr, :WS_PULL_BYTES_CALLBACK, :ptr, :ptr
WsWriteEndElement proto WINAPI :ptr, :ptr
WsWriteText proto WINAPI :ptr, :ptr, :ptr
WsWriteStartCData proto WINAPI :ptr, :ptr
WsWriteEndCData proto WINAPI :ptr, :ptr
WsWriteNode proto WINAPI :ptr, :ptr, :ptr
WsGetPrefixFromNamespace proto WINAPI :ptr, :ptr, :BOOL, :ptr, :ptr
WsGetWriterPosition proto WINAPI :ptr, :ptr, :ptr
WsSetWriterPosition proto WINAPI :ptr, :ptr, :ptr
WsMoveWriter proto WINAPI :ptr, :WS_MOVE_TO, :ptr, :ptr
WsTrimXmlWhitespace proto WINAPI :ptr, :ULONG, :ptr, :ptr, :ptr
WsVerifyXmlNCName proto WINAPI :ptr, :ULONG, :ptr
WsXmlStringEquals proto WINAPI :ptr, :ptr, :ptr
WsGetNamespaceFromPrefix proto WINAPI :ptr, :ptr, :BOOL, :ptr, :ptr
WsReadQualifiedName proto WINAPI :ptr, :ptr, :ptr, :ptr, :ptr, :ptr
WsGetXmlAttribute proto WINAPI :ptr, :WS_XML_STRING, :ptr, :ptr, :ptr, :ptr
WsCopyNode proto WINAPI :ptr, :ptr, :ptr
WsAsyncExecute proto WINAPI :ptr, :WS_ASYNC_FUNCTION, :WS_CALLBACK_MODEL, :ptr, :ptr, :ptr
WsCreateChannel proto WINAPI :WS_CHANNEL_TYPE, :WS_CHANNEL_BINDING, :ptr, :ULONG, :ptr, :ptr, :ptr
WsOpenChannel proto WINAPI :ptr, :ptr, :ptr, :ptr
WsSendMessage proto WINAPI :ptr, :ptr, :ptr, :WS_WRITE_OPTION, :ptr, :ULONG, :ptr, :ptr
WsReceiveMessage proto WINAPI :ptr, :ptr, :ptr, :ULONG, :WS_RECEIVE_OPTION, :WS_READ_OPTION, :ptr, :ptr, :ULONG, :ptr, :ptr, :ptr
WsRequestReply proto WINAPI :ptr, :ptr, :ptr, :WS_WRITE_OPTION, :ptr, :ULONG, :ptr, :ptr, :WS_READ_OPTION, :ptr, :ptr, :ULONG, :ptr
WsSendReplyMessage proto WINAPI :ptr, :ptr, :ptr, :WS_WRITE_OPTION, :ptr, :ULONG, :ptr, :ptr, :ptr
WsSendFaultMessageForError proto WINAPI :ptr, :ptr, :ptr, :HRESULT, :WS_FAULT_DISCLOSURE, :ptr, :ptr, :ptr
WsGetChannelProperty proto WINAPI :ptr, :WS_CHANNEL_PROPERTY_ID, :ptr, :ULONG, :ptr
WsSetChannelProperty proto WINAPI :ptr, :WS_CHANNEL_PROPERTY_ID, :ptr, :ULONG, :ptr
WsWriteMessageStart proto WINAPI :ptr, :ptr, :ptr, :ptr
WsWriteMessageEnd proto WINAPI :ptr, :ptr, :ptr, :ptr
WsReadMessageStart proto WINAPI :ptr, :ptr, :ptr, :ptr
WsReadMessageEnd proto WINAPI :ptr, :ptr, :ptr, :ptr
WsCloseChannel proto WINAPI :ptr, :ptr, :ptr
WsAbortChannel proto WINAPI :ptr, :ptr
WsFreeChannel proto WINAPI :ptr
WsResetChannel proto WINAPI :ptr, :ptr
WsAbandonMessage proto WINAPI :ptr, :ptr, :ptr
WsShutdownSessionChannel proto WINAPI :ptr, :ptr, :ptr

if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
WsGetOperationContextProperty proto WINAPI :ptr, :WS_OPERATION_CONTEXT_PROPERTY_ID, :ptr, :ULONG, :ptr
endif
WsGetDictionary proto WINAPI :WS_ENCODING, :ptr, :ptr
WsReadEndpointAddressExtension proto WINAPI :ptr, :ptr, :WS_ENDPOINT_ADDRESS_EXTENSION_TYPE, :WS_READ_OPTION, :ptr, :ptr, :ULONG, :ptr
WsCreateError proto WINAPI :ptr, :ULONG, :ptr
WsAddErrorString proto WINAPI :ptr, :ptr
WsGetErrorString proto WINAPI :ptr, :ULONG, :ptr
WsCopyError proto WINAPI :ptr, :ptr
WsGetErrorProperty proto WINAPI :ptr, :WS_ERROR_PROPERTY_ID, :ptr, :ULONG
WsSetErrorProperty proto WINAPI :ptr, :WS_ERROR_PROPERTY_ID, :ptr, :ULONG
WsResetError proto WINAPI :ptr
WsFreeError proto WINAPI  :ptr
WsGetFaultErrorProperty proto WINAPI :ptr, :WS_FAULT_ERROR_PROPERTY_ID, :ptr, :ULONG
WsSetFaultErrorProperty proto WINAPI :ptr, :WS_FAULT_ERROR_PROPERTY_ID, :ptr, :ULONG
WsCreateFaultFromError proto WINAPI :ptr, :HRESULT, :WS_FAULT_DISCLOSURE, :ptr, :ptr
WsSetFaultErrorDetail proto WINAPI :ptr, :ptr, :WS_WRITE_OPTION, :ptr, :ULONG
WsGetFaultErrorDetail proto WINAPI :ptr, :ptr, :WS_READ_OPTION, :ptr, :ptr, :ULONG
WsCreateHeap proto WINAPI :SIZE_T, :SIZE_T, :ptr, :ULONG, :ptr, :ptr
WsAlloc proto WINAPI :ptr, :SIZE_T, :ptr, :ptr
WsGetHeapProperty proto WINAPI :ptr, :WS_HEAP_PROPERTY_ID, :ptr, :ULONG, :ptr
WsResetHeap proto WINAPI :ptr, :ptr
WsFreeHeap proto WINAPI :ptr

if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
WsCreateListener proto WINAPI :WS_CHANNEL_TYPE, :WS_CHANNEL_BINDING, :ptr, :ULONG, :ptr, :ptr, :ptr
WsOpenListener proto WINAPI :ptr, :ptr, :ptr, :ptr
WsAcceptChannel proto WINAPI :ptr, :ptr, :ptr, :ptr
WsCloseListener proto WINAPI :ptr, :ptr, :ptr
WsAbortListener proto WINAPI :ptr, :ptr
WsResetListener proto WINAPI :ptr, :ptr
WsFreeListener proto WINAPI :ptr
WsGetListenerProperty proto WINAPI :ptr, :WS_LISTENER_PROPERTY_ID, :ptr, :ULONG, :ptr
WsSetListenerProperty proto WINAPI :ptr, :WS_LISTENER_PROPERTY_ID, :ptr, :ULONG, :ptr
WsCreateChannelForListener proto WINAPI :ptr, :ptr, :ULONG, :ptr, :ptr
endif

WsCreateMessage proto WINAPI :WS_ENVELOPE_VERSION, :WS_ADDRESSING_VERSION, :ptr, :ULONG, :ptr, :ptr
WsCreateMessageForChannel proto WINAPI :ptr, :ptr, :ULONG, :ptr, :ptr
WsInitializeMessage proto WINAPI :ptr, :WS_MESSAGE_INITIALIZATION, :ptr, :ptr
WsResetMessage proto WINAPI :ptr, :ptr
WsFreeMessage proto WINAPI :ptr
WsGetHeaderAttributes proto WINAPI :ptr, :ptr, :ptr, :ptr
WsGetHeader proto WINAPI :ptr, :WS_HEADER_TYPE, :WS_TYPE, :WS_READ_OPTION, :ptr, :ptr, :ULONG, :ptr
WsGetCustomHeader proto WINAPI :ptr, :ptr, :WS_REPEATING_HEADER_OPTION, :ULONG, :WS_READ_OPTION, :ptr, :ptr, :ULONG, :ptr, :ptr
WsRemoveHeader proto WINAPI :ptr, :WS_HEADER_TYPE, :ptr
WsSetHeader proto WINAPI :ptr, :WS_HEADER_TYPE, :WS_TYPE, :WS_WRITE_OPTION, :ptr, :ULONG, :ptr
WsRemoveCustomHeader proto WINAPI :ptr, :ptr, :ptr, :ptr
WsAddCustomHeader proto WINAPI :ptr, :ptr, :WS_WRITE_OPTION, :ptr, :ULONG, :ULONG, :ptr
WsAddMappedHeader proto WINAPI :ptr, :ptr, :WS_TYPE, :WS_WRITE_OPTION, :ptr, :ULONG, :ptr
WsRemoveMappedHeader proto WINAPI :ptr, :ptr, :ptr
WsGetMappedHeader proto WINAPI :ptr, :ptr, :WS_REPEATING_HEADER_OPTION, :ULONG, :WS_TYPE, :WS_READ_OPTION, :ptr, :ptr, :ULONG, :ptr
WsWriteBody proto WINAPI :ptr, :ptr, :WS_WRITE_OPTION, :ptr, :ULONG, :ptr
WsReadBody proto WINAPI :ptr, :ptr, :WS_READ_OPTION, :ptr, :ptr, :ULONG, :ptr
WsWriteEnvelopeStart proto WINAPI :ptr, :ptr, :WS_MESSAGE_DONE_CALLBACK, :ptr, :ptr
WsWriteEnvelopeEnd proto WINAPI :ptr, :ptr
WsReadEnvelopeStart proto WINAPI :ptr, :ptr, :WS_MESSAGE_DONE_CALLBACK, :ptr, :ptr
WsReadEnvelopeEnd proto WINAPI :ptr, :ptr
WsGetMessageProperty proto WINAPI :ptr, :WS_MESSAGE_PROPERTY_ID, :ptr, :ULONG, :ptr
WsSetMessageProperty proto WINAPI :ptr, :WS_MESSAGE_PROPERTY_ID, :ptr, :ULONG, :ptr
WsAddressMessage proto WINAPI :ptr, :ptr, :ptr
WsCheckMustUnderstandHeaders proto WINAPI :ptr, :ptr
WsMarkHeaderAsUnderstood proto WINAPI :ptr, :ptr, :ptr
WsFillBody proto WINAPI :ptr, :ULONG, :ptr, :ptr
WsFlushBody proto WINAPI :ptr, :ULONG, :ptr, :ptr
WsRequestSecurityToken proto WINAPI :ptr, :ptr, :ULONG, :ptr, :ptr, :ptr
WsGetSecurityTokenProperty proto WINAPI :ptr, :WS_SECURITY_TOKEN_PROPERTY_ID, :ptr, :ULONG, :ptr, :ptr
WsCreateXmlSecurityToken proto WINAPI :ptr, :ptr, :ptr, :ULONG, :ptr, :ptr
WsFreeSecurityToken proto WINAPI :ptr
WsRevokeSecurityContext proto WINAPI :ptr, :ptr
WsGetSecurityContextProperty proto WINAPI :ptr, :WS_SECURITY_CONTEXT_PROPERTY_ID, :ptr, :ULONG, :ptr
WsReadElement proto WINAPI :ptr, :ptr, :WS_READ_OPTION, :ptr, :ptr, :ULONG, :ptr
WsReadAttribute proto WINAPI :ptr, :ptr, :WS_READ_OPTION, :ptr, :ptr, :ULONG, :ptr
WsReadType proto WINAPI :ptr, :WS_TYPE_MAPPING, :WS_TYPE, :ptr, :WS_READ_OPTION, :ptr, :ptr, :ULONG, :ptr
WsWriteElement proto WINAPI :ptr, :ptr, :WS_WRITE_OPTION, :ptr, :ULONG, :ptr
WsWriteAttribute proto WINAPI :ptr, :ptr, :WS_WRITE_OPTION, :ptr, :ULONG, :ptr
WsWriteType proto WINAPI :ptr, :WS_TYPE_MAPPING, :WS_TYPE, :ptr, :WS_WRITE_OPTION, :ptr, :ULONG, :ptr

if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
WsRegisterOperationForCancel proto WINAPI :ptr, :WS_OPERATION_CANCEL_CALLBACK, :WS_OPERATION_FREE_STATE_CALLBACK, :ptr, :ptr
WsGetServiceHostProperty proto WINAPI :ptr, :WS_SERVICE_PROPERTY_ID, :ptr, :ULONG, :ptr
WsCreateServiceHost proto WINAPI :ptr, :USHORT, :ptr, :ULONG, :ptr, :ptr
WsOpenServiceHost proto WINAPI :ptr, :ptr, :ptr
WsCloseServiceHost proto WINAPI :ptr, :ptr, :ptr
WsAbortServiceHost proto WINAPI :ptr, :ptr
WsFreeServiceHost proto WINAPI :ptr
WsResetServiceHost proto WINAPI :ptr, :ptr
endif

WsGetServiceProxyProperty proto WINAPI :ptr, :WS_PROXY_PROPERTY_ID, :ptr, :ULONG, :ptr
WsCreateServiceProxy proto WINAPI :WS_CHANNEL_TYPE, :WS_CHANNEL_BINDING, :ptr, :ptr, :ULONG, :ptr, :ULONG, :ptr, :ptr
WsOpenServiceProxy proto WINAPI :ptr, :ptr, :ptr, :ptr
WsCloseServiceProxy proto WINAPI :ptr, :ptr, :ptr
WsAbortServiceProxy proto WINAPI :ptr, :ptr
WsFreeServiceProxy proto WINAPI :ptr
WsResetServiceProxy proto WINAPI :ptr, :ptr
WsAbandonCall proto WINAPI :ptr, :ULONG, :ptr
WsCall proto WINAPI :ptr, :ptr, :ptr, :ptr, :ptr, :ULONG, :ptr, :ptr
WsDecodeUrl proto WINAPI :ptr, :ULONG, :ptr, :ptr, :ptr
WsEncodeUrl proto WINAPI :ptr, :ULONG, :ptr, :ptr, :ptr
WsCombineUrl proto WINAPI :ptr, :ptr, :ULONG, :ptr, :ptr, :ptr
WsDateTimeToFileTime proto WINAPI :ptr, :ptr, :ptr
WsFileTimeToDateTime proto WINAPI :ptr, :ptr, :ptr
WsCreateMetadata proto WINAPI :ptr, :ULONG, :ptr, :ptr
WsReadMetadata proto WINAPI :ptr, :ptr, :ptr, :ptr
WsFreeMetadata proto WINAPI :ptr
WsResetMetadata proto WINAPI :ptr, :ptr
WsGetMetadataProperty proto WINAPI :ptr, :WS_METADATA_PROPERTY_ID, :ptr, :ULONG, :ptr
WsGetMissingMetadataDocumentAddress proto WINAPI :ptr, :ptr, :ptr
WsGetMetadataEndpoints proto WINAPI :ptr, :ptr, :ptr
WsMatchPolicyAlternative proto WINAPI :ptr, :ULONG, :ptr, :BOOL, :ptr, :ptr
WsGetPolicyProperty proto WINAPI :ptr, :WS_POLICY_PROPERTY_ID, :ptr, :ULONG, :ptr
WsGetPolicyAlternativeCount proto WINAPI :ptr, :ptr, :ptr
WsCreateServiceProxyFromTemplate proto WINAPI :WS_CHANNEL_TYPE, :ptr, :ULONG, :WS_BINDING_TEMPLATE_TYPE, :ptr, :ULONG, :ptr, :ULONG, :ptr, :ptr

if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
WsCreateServiceEndpointFromTemplate proto WINAPI :WS_CHANNEL_TYPE, :ptr, :ULONG, :ptr, :ptr, :WS_SERVICE_SECURITY_CALLBACK, :ptr, :WS_BINDING_TEMPLATE_TYPE, :ptr, :ULONG, :ptr
endif

ifndef FACILITY_WEBSERVICES

FACILITY_WEBSERVICES	equ 0x3d
WS_S_ASYNC		equ 0x003D0000
WS_S_END		equ 0x003D0001
WS_E_INVALID_FORMAT	equ 0x803D0000
WS_E_OBJECT_FAULTED	equ 0x803D0001
WS_E_NUMERIC_OVERFLOW	equ 0x803D0002
WS_E_INVALID_OPERATION	equ 0x803D0003
WS_E_OPERATION_ABORTED	equ 0x803D0004
WS_E_ENDPOINT_ACCESS_DENIED equ 0x803D0005
WS_E_OPERATION_TIMED_OUT equ 0x803D0006
WS_E_OPERATION_ABANDONED equ 0x803D0007
WS_E_QUOTA_EXCEEDED	equ 0x803D0008
WS_E_NO_TRANSLATION_AVAILABLE equ 0x803D0009
WS_E_SECURITY_VERIFICATION_FAILURE equ 0x803D000A
WS_E_ADDRESS_IN_USE	equ 0x803D000B
WS_E_ADDRESS_NOT_AVAILABLE equ 0x803D000C
WS_E_ENDPOINT_NOT_FOUND equ 0x803D000D
WS_E_ENDPOINT_NOT_AVAILABLE equ 0x803D000E
WS_E_ENDPOINT_FAILURE	equ 0x803D000F
WS_E_ENDPOINT_UNREACHABLE equ 0x803D0010
WS_E_ENDPOINT_ACTION_NOT_SUPPORTED equ 0x803D0011
WS_E_ENDPOINT_TOO_BUSY	equ 0x803D0012
WS_E_ENDPOINT_FAULT_RECEIVED equ 0x803D0013
WS_E_ENDPOINT_DISCONNECTED equ 0x803D0014
WS_E_PROXY_FAILURE	equ 0x803D0015
WS_E_PROXY_ACCESS_DENIED equ 0x803D0016
WS_E_NOT_SUPPORTED	equ 0x803D0017
WS_E_PROXY_REQUIRES_BASIC_AUTH equ 0x803D0018
WS_E_PROXY_REQUIRES_DIGEST_AUTH equ 0x803D0019
WS_E_PROXY_REQUIRES_NTLM_AUTH equ 0x803D001A
WS_E_PROXY_REQUIRES_NEGOTIATE_AUTH equ 0x803D001B
WS_E_SERVER_REQUIRES_BASIC_AUTH equ 0x803D001C
WS_E_SERVER_REQUIRES_DIGEST_AUTH equ 0x803D001D
WS_E_SERVER_REQUIRES_NTLM_AUTH equ 0x803D001E
WS_E_SERVER_REQUIRES_NEGOTIATE_AUTH equ 0x803D001F
WS_E_INVALID_ENDPOINT_URL equ 0x803D0020
WS_E_OTHER		equ 0x803D0021
WS_E_SECURITY_TOKEN_EXPIRED equ 0x803D0022
WS_E_SECURITY_SYSTEM_FAILURE equ 0x803D0023

endif

endif
