using System;

// namespace Networking.WindowsWebServices
namespace Win32
{
	extension Win32
	{
		// --- Constants ---
		
		public const uint32 WEBAUTHN_API_VERSION_1 = 1;
		public const uint32 WEBAUTHN_API_VERSION_2 = 2;
		public const uint32 WEBAUTHN_API_VERSION_3 = 3;
		public const uint32 WEBAUTHN_API_CURRENT_VERSION = 3;
		public const uint32 WEBAUTHN_RP_ENTITY_INFORMATION_CURRENT_VERSION = 1;
		public const uint32 WEBAUTHN_MAX_USER_ID_LENGTH = 64;
		public const uint32 WEBAUTHN_USER_ENTITY_INFORMATION_CURRENT_VERSION = 1;
		public const uint32 WEBAUTHN_CLIENT_DATA_CURRENT_VERSION = 1;
		public const int32 WEBAUTHN_COSE_ALGORITHM_ECDSA_P256_WITH_SHA256 = -7;
		public const int32 WEBAUTHN_COSE_ALGORITHM_ECDSA_P384_WITH_SHA384 = -35;
		public const int32 WEBAUTHN_COSE_ALGORITHM_ECDSA_P521_WITH_SHA512 = -36;
		public const int32 WEBAUTHN_COSE_ALGORITHM_RSASSA_PKCS1_V1_5_WITH_SHA256 = -257;
		public const int32 WEBAUTHN_COSE_ALGORITHM_RSASSA_PKCS1_V1_5_WITH_SHA384 = -258;
		public const int32 WEBAUTHN_COSE_ALGORITHM_RSASSA_PKCS1_V1_5_WITH_SHA512 = -259;
		public const int32 WEBAUTHN_COSE_ALGORITHM_RSA_PSS_WITH_SHA256 = -37;
		public const int32 WEBAUTHN_COSE_ALGORITHM_RSA_PSS_WITH_SHA384 = -38;
		public const int32 WEBAUTHN_COSE_ALGORITHM_RSA_PSS_WITH_SHA512 = -39;
		public const uint32 WEBAUTHN_COSE_CREDENTIAL_PARAMETER_CURRENT_VERSION = 1;
		public const uint32 WEBAUTHN_CREDENTIAL_CURRENT_VERSION = 1;
		public const uint32 WEBAUTHN_CTAP_TRANSPORT_USB = 1;
		public const uint32 WEBAUTHN_CTAP_TRANSPORT_NFC = 2;
		public const uint32 WEBAUTHN_CTAP_TRANSPORT_BLE = 4;
		public const uint32 WEBAUTHN_CTAP_TRANSPORT_TEST = 8;
		public const uint32 WEBAUTHN_CTAP_TRANSPORT_INTERNAL = 16;
		public const uint32 WEBAUTHN_CTAP_TRANSPORT_FLAGS_MASK = 31;
		public const uint32 WEBAUTHN_CREDENTIAL_EX_CURRENT_VERSION = 1;
		public const uint32 WEBAUTHN_USER_VERIFICATION_ANY = 0;
		public const uint32 WEBAUTHN_USER_VERIFICATION_OPTIONAL = 1;
		public const uint32 WEBAUTHN_USER_VERIFICATION_OPTIONAL_WITH_CREDENTIAL_ID_LIST = 2;
		public const uint32 WEBAUTHN_USER_VERIFICATION_REQUIRED = 3;
		public const uint32 WEBAUTHN_AUTHENTICATOR_ATTACHMENT_ANY = 0;
		public const uint32 WEBAUTHN_AUTHENTICATOR_ATTACHMENT_PLATFORM = 1;
		public const uint32 WEBAUTHN_AUTHENTICATOR_ATTACHMENT_CROSS_PLATFORM = 2;
		public const uint32 WEBAUTHN_AUTHENTICATOR_ATTACHMENT_CROSS_PLATFORM_U2F_V2 = 3;
		public const uint32 WEBAUTHN_USER_VERIFICATION_REQUIREMENT_ANY = 0;
		public const uint32 WEBAUTHN_USER_VERIFICATION_REQUIREMENT_REQUIRED = 1;
		public const uint32 WEBAUTHN_USER_VERIFICATION_REQUIREMENT_PREFERRED = 2;
		public const uint32 WEBAUTHN_USER_VERIFICATION_REQUIREMENT_DISCOURAGED = 3;
		public const uint32 WEBAUTHN_ATTESTATION_CONVEYANCE_PREFERENCE_ANY = 0;
		public const uint32 WEBAUTHN_ATTESTATION_CONVEYANCE_PREFERENCE_NONE = 1;
		public const uint32 WEBAUTHN_ATTESTATION_CONVEYANCE_PREFERENCE_INDIRECT = 2;
		public const uint32 WEBAUTHN_ATTESTATION_CONVEYANCE_PREFERENCE_DIRECT = 3;
		public const uint32 WEBAUTHN_ENTERPRISE_ATTESTATION_NONE = 0;
		public const uint32 WEBAUTHN_ENTERPRISE_ATTESTATION_VENDOR_FACILITATED = 1;
		public const uint32 WEBAUTHN_ENTERPRISE_ATTESTATION_PLATFORM_MANAGED = 2;
		public const uint32 WEBAUTHN_LARGE_BLOB_SUPPORT_NONE = 0;
		public const uint32 WEBAUTHN_LARGE_BLOB_SUPPORT_REQUIRED = 1;
		public const uint32 WEBAUTHN_LARGE_BLOB_SUPPORT_PREFERRED = 2;
		public const uint32 WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_1 = 1;
		public const uint32 WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_2 = 2;
		public const uint32 WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_3 = 3;
		public const uint32 WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_VERSION_4 = 4;
		public const uint32 WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS_CURRENT_VERSION = 4;
		public const uint32 WEBAUTHN_CRED_LARGE_BLOB_OPERATION_NONE = 0;
		public const uint32 WEBAUTHN_CRED_LARGE_BLOB_OPERATION_GET = 1;
		public const uint32 WEBAUTHN_CRED_LARGE_BLOB_OPERATION_SET = 2;
		public const uint32 WEBAUTHN_CRED_LARGE_BLOB_OPERATION_DELETE = 3;
		public const uint32 WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_1 = 1;
		public const uint32 WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_2 = 2;
		public const uint32 WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_3 = 3;
		public const uint32 WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_4 = 4;
		public const uint32 WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_VERSION_5 = 5;
		public const uint32 WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS_CURRENT_VERSION = 5;
		public const uint32 WEBAUTHN_ATTESTATION_DECODE_NONE = 0;
		public const uint32 WEBAUTHN_ATTESTATION_DECODE_COMMON = 1;
		public const uint32 WEBAUTHN_COMMON_ATTESTATION_CURRENT_VERSION = 1;
		public const uint32 WEBAUTHN_CREDENTIAL_ATTESTATION_VERSION_1 = 1;
		public const uint32 WEBAUTHN_CREDENTIAL_ATTESTATION_VERSION_2 = 2;
		public const uint32 WEBAUTHN_CREDENTIAL_ATTESTATION_VERSION_3 = 3;
		public const uint32 WEBAUTHN_CREDENTIAL_ATTESTATION_VERSION_4 = 4;
		public const uint32 WEBAUTHN_CREDENTIAL_ATTESTATION_CURRENT_VERSION = 4;
		public const uint32 WEBAUTHN_CRED_LARGE_BLOB_STATUS_NONE = 0;
		public const uint32 WEBAUTHN_CRED_LARGE_BLOB_STATUS_SUCCESS = 1;
		public const uint32 WEBAUTHN_CRED_LARGE_BLOB_STATUS_NOT_SUPPORTED = 2;
		public const uint32 WEBAUTHN_CRED_LARGE_BLOB_STATUS_INVALID_DATA = 3;
		public const uint32 WEBAUTHN_CRED_LARGE_BLOB_STATUS_INVALID_PARAMETER = 4;
		public const uint32 WEBAUTHN_CRED_LARGE_BLOB_STATUS_NOT_FOUND = 5;
		public const uint32 WEBAUTHN_CRED_LARGE_BLOB_STATUS_MULTIPLE_CREDENTIALS = 6;
		public const uint32 WEBAUTHN_CRED_LARGE_BLOB_STATUS_LACK_OF_SPACE = 7;
		public const uint32 WEBAUTHN_CRED_LARGE_BLOB_STATUS_PLATFORM_ERROR = 8;
		public const uint32 WEBAUTHN_CRED_LARGE_BLOB_STATUS_AUTHENTICATOR_ERROR = 9;
		public const uint32 WEBAUTHN_ASSERTION_VERSION_1 = 1;
		public const uint32 WEBAUTHN_ASSERTION_VERSION_2 = 2;
		public const uint32 WEBAUTHN_ASSERTION_CURRENT_VERSION = 2;
		public const int32 WS_HTTP_HEADER_MAPPING_COMMA_SEPARATOR = 1;
		public const int32 WS_HTTP_HEADER_MAPPING_SEMICOLON_SEPARATOR = 2;
		public const int32 WS_HTTP_HEADER_MAPPING_QUOTED_VALUE = 4;
		public const int32 WS_HTTP_RESPONSE_MAPPING_STATUS_CODE = 1;
		public const int32 WS_HTTP_RESPONSE_MAPPING_STATUS_TEXT = 2;
		public const int32 WS_HTTP_REQUEST_MAPPING_VERB = 2;
		public const int32 WS_MATCH_URL_DNS_HOST = 1;
		public const int32 WS_MATCH_URL_DNS_FULLY_QUALIFIED_HOST = 2;
		public const int32 WS_MATCH_URL_NETBIOS_HOST = 4;
		public const int32 WS_MATCH_URL_LOCAL_HOST = 8;
		public const int32 WS_MATCH_URL_HOST_ADDRESSES = 16;
		public const int32 WS_MATCH_URL_THIS_HOST = 31;
		public const int32 WS_MATCH_URL_PORT = 32;
		public const int32 WS_MATCH_URL_EXACT_PATH = 64;
		public const int32 WS_MATCH_URL_PREFIX_PATH = 128;
		public const int32 WS_MATCH_URL_NO_QUERY = 256;
		public const int32 WS_MUST_UNDERSTAND_HEADER_ATTRIBUTE = 1;
		public const int32 WS_RELAY_HEADER_ATTRIBUTE = 2;
		public const int32 WS_HTTP_HEADER_AUTH_SCHEME_NONE = 1;
		public const int32 WS_HTTP_HEADER_AUTH_SCHEME_BASIC = 2;
		public const int32 WS_HTTP_HEADER_AUTH_SCHEME_DIGEST = 4;
		public const int32 WS_HTTP_HEADER_AUTH_SCHEME_NTLM = 8;
		public const int32 WS_HTTP_HEADER_AUTH_SCHEME_NEGOTIATE = 16;
		public const int32 WS_HTTP_HEADER_AUTH_SCHEME_PASSPORT = 32;
		public const int32 WS_CERT_FAILURE_CN_MISMATCH = 1;
		public const int32 WS_CERT_FAILURE_INVALID_DATE = 2;
		public const int32 WS_CERT_FAILURE_UNTRUSTED_ROOT = 4;
		public const int32 WS_CERT_FAILURE_WRONG_USAGE = 8;
		public const int32 WS_CERT_FAILURE_REVOCATION_OFFLINE = 16;
		public const int32 WS_STRUCT_ABSTRACT = 1;
		public const int32 WS_STRUCT_IGNORE_TRAILING_ELEMENT_CONTENT = 2;
		public const int32 WS_STRUCT_IGNORE_UNHANDLED_ATTRIBUTES = 4;
		public const int32 WS_FIELD_POINTER = 1;
		public const int32 WS_FIELD_OPTIONAL = 2;
		public const int32 WS_FIELD_NILLABLE = 4;
		public const int32 WS_FIELD_NILLABLE_ITEM = 8;
		public const int32 WS_FIELD_OTHER_NAMESPACE = 16;
		public const int32 WS_SERVICE_OPERATION_MESSAGE_NILLABLE_ELEMENT = 1;
		public const int32 WS_URL_FLAGS_ALLOW_HOST_WILDCARDS = 1;
		public const int32 WS_URL_FLAGS_NO_PATH_COLLAPSE = 2;
		public const int32 WS_URL_FLAGS_ZERO_TERMINATE = 4;
		
		// --- Enums ---
		
		public enum WS_XML_READER_PROPERTY_ID : int32
		{
			MAX_DEPTH = 0,
			ALLOW_FRAGMENT = 1,
			MAX_ATTRIBUTES = 2,
			READ_DECLARATION = 3,
			CHARSET = 4,
			ROW = 5,
			COLUMN = 6,
			UTF8_TRIM_SIZE = 7,
			STREAM_BUFFER_SIZE = 8,
			IN_ATTRIBUTE = 9,
			STREAM_MAX_ROOT_MIME_PART_SIZE = 10,
			STREAM_MAX_MIME_HEADERS_SIZE = 11,
			MAX_MIME_PARTS = 12,
			ALLOW_INVALID_CHARACTER_REFERENCES = 13,
			MAX_NAMESPACES = 14,
		}
		public enum WS_XML_CANONICALIZATION_ALGORITHM : int32
		{
			EXCLUSIVE_XML_CANONICALIZATION_ALGORITHM = 0,
			EXCLUSIVE_WITH_COMMENTS_XML_CANONICALIZATION_ALGORITHM = 1,
			INCLUSIVE_XML_CANONICALIZATION_ALGORITHM = 2,
			INCLUSIVE_WITH_COMMENTS_XML_CANONICALIZATION_ALGORITHM = 3,
		}
		public enum WS_XML_CANONICALIZATION_PROPERTY_ID : int32
		{
			ALGORITHM = 0,
			INCLUSIVE_PREFIXES = 1,
			OMITTED_ELEMENT = 2,
			OUTPUT_BUFFER_SIZE = 3,
		}
		public enum WS_XML_WRITER_PROPERTY_ID : int32
		{
			MAX_DEPTH = 0,
			ALLOW_FRAGMENT = 1,
			MAX_ATTRIBUTES = 2,
			WRITE_DECLARATION = 3,
			INDENT = 4,
			BUFFER_TRIM_SIZE = 5,
			CHARSET = 6,
			BUFFERS = 7,
			BUFFER_MAX_SIZE = 8,
			BYTES = 9,
			IN_ATTRIBUTE = 10,
			MAX_MIME_PARTS_BUFFER_SIZE = 11,
			INITIAL_BUFFER = 12,
			ALLOW_INVALID_CHARACTER_REFERENCES = 13,
			MAX_NAMESPACES = 14,
			BYTES_WRITTEN = 15,
			BYTES_TO_CLOSE = 16,
			COMPRESS_EMPTY_ELEMENTS = 17,
			EMIT_UNCOMPRESSED_EMPTY_ELEMENTS = 18,
		}
		public enum WS_XML_BUFFER_PROPERTY_ID {}
		public enum WS_XML_TEXT_TYPE : int32
		{
			UTF8 = 1,
			UTF16 = 2,
			BASE64 = 3,
			BOOL = 4,
			INT32 = 5,
			INT64 = 6,
			UINT64 = 7,
			FLOAT = 8,
			DOUBLE = 9,
			DECIMAL = 10,
			GUID = 11,
			UNIQUE_ID = 12,
			DATETIME = 13,
			TIMESPAN = 14,
			QNAME = 15,
			LIST = 16,
		}
		public enum WS_XML_NODE_TYPE : int32
		{
			ELEMENT = 1,
			TEXT = 2,
			END_ELEMENT = 3,
			COMMENT = 4,
			CDATA = 6,
			END_CDATA = 7,
			EOF = 8,
			BOF = 9,
		}
		public enum WS_MOVE_TO : int32
		{
			ROOT_ELEMENT = 0,
			NEXT_ELEMENT = 1,
			PREVIOUS_ELEMENT = 2,
			CHILD_ELEMENT = 3,
			END_ELEMENT = 4,
			PARENT_ELEMENT = 5,
			NEXT_NODE = 6,
			PREVIOUS_NODE = 7,
			FIRST_NODE = 8,
			BOF = 9,
			EOF = 10,
			CHILD_NODE = 11,
		}
		public enum WS_VALUE_TYPE : int32
		{
			BOOL_VALUE_TYPE = 0,
			INT8_VALUE_TYPE = 1,
			INT16_VALUE_TYPE = 2,
			INT32_VALUE_TYPE = 3,
			INT64_VALUE_TYPE = 4,
			UINT8_VALUE_TYPE = 5,
			UINT16_VALUE_TYPE = 6,
			UINT32_VALUE_TYPE = 7,
			UINT64_VALUE_TYPE = 8,
			FLOAT_VALUE_TYPE = 9,
			DOUBLE_VALUE_TYPE = 10,
			DECIMAL_VALUE_TYPE = 11,
			DATETIME_VALUE_TYPE = 12,
			TIMESPAN_VALUE_TYPE = 13,
			GUID_VALUE_TYPE = 14,
			DURATION_VALUE_TYPE = 15,
		}
		public enum WS_XML_READER_INPUT_TYPE : int32
		{
			BUFFER = 1,
			STREAM = 2,
		}
		public enum WS_XML_READER_ENCODING_TYPE : int32
		{
			TEXT = 1,
			BINARY = 2,
			MTOM = 3,
			RAW = 4,
		}
		public enum WS_CHARSET : int32
		{
			AUTO = 0,
			UTF8 = 1,
			UTF16LE = 2,
			UTF16BE = 3,
		}
		public enum WS_XML_WRITER_ENCODING_TYPE : int32
		{
			TEXT = 1,
			BINARY = 2,
			MTOM = 3,
			RAW = 4,
		}
		public enum WS_XML_WRITER_OUTPUT_TYPE : int32
		{
			BUFFER = 1,
			STREAM = 2,
		}
		public enum WS_CALLBACK_MODEL : int32
		{
			SHORT_CALLBACK = 0,
			LONG_CALLBACK = 1,
		}
		public enum WS_ENCODING : int32
		{
			XML_BINARY_1 = 0,
			XML_BINARY_SESSION_1 = 1,
			XML_MTOM_UTF8 = 2,
			XML_MTOM_UTF16BE = 3,
			XML_MTOM_UTF16LE = 4,
			XML_UTF8 = 5,
			XML_UTF16BE = 6,
			XML_UTF16LE = 7,
			RAW = 8,
		}
		public enum WS_CHANNEL_STATE : int32
		{
			CREATED = 0,
			OPENING = 1,
			ACCEPTING = 2,
			OPEN = 3,
			FAULTED = 4,
			CLOSING = 5,
			CLOSED = 6,
		}
		public enum WS_RECEIVE_OPTION : int32
		{
			REQUIRED_MESSAGE = 1,
			OPTIONAL_MESSAGE = 2,
		}
		public enum WS_CHANNEL_BINDING : int32
		{
			HTTP_CHANNEL_BINDING = 0,
			TCP_CHANNEL_BINDING = 1,
			UDP_CHANNEL_BINDING = 2,
			CUSTOM_CHANNEL_BINDING = 3,
			NAMEDPIPE_CHANNEL_BINDING = 4,
		}
		public enum WS_CHANNEL_TYPE : int32
		{
			INPUT = 1,
			OUTPUT = 2,
			SESSION = 4,
			INPUT_SESSION = 5,
			OUTPUT_SESSION = 6,
			DUPLEX = 3,
			DUPLEX_SESSION = 7,
			REQUEST = 8,
			REPLY = 16,
		}
		public enum WS_TRANSFER_MODE : int32
		{
			STREAMED_INPUT_TRANSFER_MODE = 1,
			STREAMED_OUTPUT_TRANSFER_MODE = 2,
			BUFFERED_TRANSFER_MODE = 0,
			STREAMED_TRANSFER_MODE = 3,
		}
		public enum WS_HTTP_PROXY_SETTING_MODE : int32
		{
			AUTO = 1,
			NONE = 2,
			CUSTOM = 3,
		}
		public enum WS_CHANNEL_PROPERTY_ID : int32
		{
			MAX_BUFFERED_MESSAGE_SIZE = 0,
			MAX_STREAMED_MESSAGE_SIZE = 1,
			MAX_STREAMED_START_SIZE = 2,
			MAX_STREAMED_FLUSH_SIZE = 3,
			ENCODING = 4,
			ENVELOPE_VERSION = 5,
			ADDRESSING_VERSION = 6,
			MAX_SESSION_DICTIONARY_SIZE = 7,
			STATE = 8,
			ASYNC_CALLBACK_MODEL = 9,
			IP_VERSION = 10,
			RESOLVE_TIMEOUT = 11,
			CONNECT_TIMEOUT = 12,
			SEND_TIMEOUT = 13,
			RECEIVE_RESPONSE_TIMEOUT = 14,
			RECEIVE_TIMEOUT = 15,
			CLOSE_TIMEOUT = 16,
			ENABLE_TIMEOUTS = 17,
			TRANSFER_MODE = 18,
			MULTICAST_INTERFACE = 19,
			MULTICAST_HOPS = 20,
			REMOTE_ADDRESS = 21,
			REMOTE_IP_ADDRESS = 22,
			HTTP_CONNECTION_ID = 23,
			CUSTOM_CHANNEL_CALLBACKS = 24,
			CUSTOM_CHANNEL_PARAMETERS = 25,
			CUSTOM_CHANNEL_INSTANCE = 26,
			TRANSPORT_URL = 27,
			NO_DELAY = 28,
			SEND_KEEP_ALIVES = 29,
			KEEP_ALIVE_TIME = 30,
			KEEP_ALIVE_INTERVAL = 31,
			MAX_HTTP_SERVER_CONNECTIONS = 32,
			IS_SESSION_SHUT_DOWN = 33,
			CHANNEL_TYPE = 34,
			TRIM_BUFFERED_MESSAGE_SIZE = 35,
			ENCODER = 36,
			DECODER = 37,
			PROTECTION_LEVEL = 38,
			COOKIE_MODE = 39,
			HTTP_PROXY_SETTING_MODE = 40,
			CUSTOM_HTTP_PROXY = 41,
			HTTP_MESSAGE_MAPPING = 42,
			ENABLE_HTTP_REDIRECT = 43,
			HTTP_REDIRECT_CALLBACK_CONTEXT = 44,
			FAULTS_AS_ERRORS = 45,
			ALLOW_UNSECURED_FAULTS = 46,
			HTTP_SERVER_SPN = 47,
			HTTP_PROXY_SPN = 48,
			MAX_HTTP_REQUEST_HEADERS_BUFFER_SIZE = 49,
		}
		public enum WS_COOKIE_MODE : int32
		{
			MANUAL_COOKIE_MODE = 1,
			AUTO_COOKIE_MODE = 2,
		}
		public enum WS_OPERATION_CONTEXT_PROPERTY_ID : int32
		{
			CHANNEL = 0,
			CONTRACT_DESCRIPTION = 1,
			HOST_USER_STATE = 2,
			CHANNEL_USER_STATE = 3,
			INPUT_MESSAGE = 4,
			OUTPUT_MESSAGE = 5,
			HEAP = 6,
			LISTENER = 7,
			ENDPOINT_ADDRESS = 8,
		}
		public enum WS_ENDPOINT_IDENTITY_TYPE : int32
		{
			DNS_ENDPOINT_IDENTITY_TYPE = 1,
			UPN_ENDPOINT_IDENTITY_TYPE = 2,
			SPN_ENDPOINT_IDENTITY_TYPE = 3,
			RSA_ENDPOINT_IDENTITY_TYPE = 4,
			CERT_ENDPOINT_IDENTITY_TYPE = 5,
			UNKNOWN_ENDPOINT_IDENTITY_TYPE = 6,
		}
		public enum WS_ENDPOINT_ADDRESS_EXTENSION_TYPE : int32
		{
			METADATA_ADDRESS = 1,
		}
		public enum WS_ERROR_PROPERTY_ID : int32
		{
			STRING_COUNT = 0,
			ORIGINAL_ERROR_CODE = 1,
			LANGID = 2,
		}
		public enum WS_EXCEPTION_CODE : int32
		{
			USAGE_FAILURE = -1069744128,
			INTERNAL_FAILURE = -1069744127,
		}
		public enum WS_FAULT_ERROR_PROPERTY_ID : int32
		{
			FAULT = 0,
			ACTION = 1,
			HEADER = 2,
		}
		public enum WS_FAULT_DISCLOSURE : int32
		{
			MINIMAL_FAULT_DISCLOSURE = 0,
			FULL_FAULT_DISCLOSURE = 1,
		}
		public enum WS_HEAP_PROPERTY_ID : int32
		{
			MAX_SIZE = 0,
			TRIM_SIZE = 1,
			REQUESTED_SIZE = 2,
			ACTUAL_SIZE = 3,
		}
		public enum WS_LISTENER_STATE : int32
		{
			CREATED = 0,
			OPENING = 1,
			OPEN = 2,
			FAULTED = 3,
			CLOSING = 4,
			CLOSED = 5,
		}
		public enum WS_LISTENER_PROPERTY_ID : int32
		{
			LISTEN_BACKLOG = 0,
			IP_VERSION = 1,
			STATE = 2,
			ASYNC_CALLBACK_MODEL = 3,
			CHANNEL_TYPE = 4,
			CHANNEL_BINDING = 5,
			CONNECT_TIMEOUT = 6,
			IS_MULTICAST = 7,
			MULTICAST_INTERFACES = 8,
			MULTICAST_LOOPBACK = 9,
			CLOSE_TIMEOUT = 10,
			TO_HEADER_MATCHING_OPTIONS = 11,
			TRANSPORT_URL_MATCHING_OPTIONS = 12,
			CUSTOM_LISTENER_CALLBACKS = 13,
			CUSTOM_LISTENER_PARAMETERS = 14,
			CUSTOM_LISTENER_INSTANCE = 15,
			DISALLOWED_USER_AGENT = 16,
		}
		public enum WS_IP_VERSION : int32
		{
			_4 = 1,
			_6 = 2,
			AUTO = 3,
		}
		public enum WS_MESSAGE_STATE : int32
		{
			EMPTY = 1,
			INITIALIZED = 2,
			READING = 3,
			WRITING = 4,
			DONE = 5,
		}
		public enum WS_MESSAGE_INITIALIZATION : int32
		{
			BLANK_MESSAGE = 0,
			DUPLICATE_MESSAGE = 1,
			REQUEST_MESSAGE = 2,
			REPLY_MESSAGE = 3,
			FAULT_MESSAGE = 4,
		}
		public enum WS_REPEATING_HEADER_OPTION : int32
		{
			REPEATING_HEADER = 1,
			SINGLETON_HEADER = 2,
		}
		public enum WS_HEADER_TYPE : int32
		{
			ACTION_HEADER = 1,
			TO_HEADER = 2,
			MESSAGE_ID_HEADER = 3,
			RELATES_TO_HEADER = 4,
			FROM_HEADER = 5,
			REPLY_TO_HEADER = 6,
			FAULT_TO_HEADER = 7,
		}
		public enum WS_ADDRESSING_VERSION : int32
		{
			_0_9 = 1,
			_1_0 = 2,
			TRANSPORT = 3,
		}
		public enum WS_ENVELOPE_VERSION : int32
		{
			SOAP_1_1 = 1,
			SOAP_1_2 = 2,
			NONE = 3,
		}
		public enum WS_MESSAGE_PROPERTY_ID : int32
		{
			STATE = 0,
			HEAP = 1,
			ENVELOPE_VERSION = 2,
			ADDRESSING_VERSION = 3,
			HEADER_BUFFER = 4,
			HEADER_POSITION = 5,
			BODY_READER = 6,
			BODY_WRITER = 7,
			IS_ADDRESSED = 8,
			HEAP_PROPERTIES = 9,
			XML_READER_PROPERTIES = 10,
			XML_WRITER_PROPERTIES = 11,
			IS_FAULT = 12,
			MAX_PROCESSED_HEADERS = 13,
			USERNAME = 14,
			ENCODED_CERT = 15,
			TRANSPORT_SECURITY_WINDOWS_TOKEN = 16,
			HTTP_HEADER_AUTH_WINDOWS_TOKEN = 17,
			MESSAGE_SECURITY_WINDOWS_TOKEN = 18,
			SAML_ASSERTION = 19,
			SECURITY_CONTEXT = 20,
			PROTECTION_LEVEL = 21,
		}
		public enum WS_SECURITY_BINDING_TYPE : int32
		{
			SSL_TRANSPORT_SECURITY_BINDING_TYPE = 1,
			TCP_SSPI_TRANSPORT_SECURITY_BINDING_TYPE = 2,
			HTTP_HEADER_AUTH_SECURITY_BINDING_TYPE = 3,
			USERNAME_MESSAGE_SECURITY_BINDING_TYPE = 4,
			KERBEROS_APREQ_MESSAGE_SECURITY_BINDING_TYPE = 5,
			XML_TOKEN_MESSAGE_SECURITY_BINDING_TYPE = 6,
			SAML_MESSAGE_SECURITY_BINDING_TYPE = 7,
			SECURITY_CONTEXT_MESSAGE_SECURITY_BINDING_TYPE = 8,
			NAMEDPIPE_SSPI_TRANSPORT_SECURITY_BINDING_TYPE = 9,
		}
		public enum WS_HTTP_HEADER_AUTH_TARGET : int32
		{
			SERVICE = 1,
			PROXY = 2,
		}
		public enum WS_WINDOWS_INTEGRATED_AUTH_PACKAGE : int32
		{
			KERBEROS = 1,
			NTLM = 2,
			SPNEGO = 3,
		}
		public enum WS_SECURITY_HEADER_VERSION : int32
		{
			_0 = 1,
			_1 = 2,
		}
		public enum WS_TRUST_VERSION : int32
		{
			FEBRUARY_2005 = 1,
			_1_3 = 2,
		}
		public enum WS_REQUEST_SECURITY_TOKEN_ACTION : int32
		{
			ISSUE = 1,
			NEW_CONTEXT = 2,
			RENEW_CONTEXT = 3,
		}
		public enum WS_SECURE_CONVERSATION_VERSION : int32
		{
			FEBRUARY_2005 = 1,
			_1_3 = 2,
		}
		public enum WS_SECURE_PROTOCOL : int32
		{
			SSL2 = 1,
			SSL3 = 2,
			TLS1_0 = 4,
			TLS1_1 = 8,
			TLS1_2 = 16,
		}
		public enum WS_SECURITY_TIMESTAMP_USAGE : int32
		{
			ALWAYS = 1,
			NEVER = 2,
			REQUESTS_ONLY = 3,
		}
		public enum WS_SECURITY_HEADER_LAYOUT : int32
		{
			STRICT = 1,
			LAX = 2,
			LAX_WITH_TIMESTAMP_FIRST = 3,
			LAX_WITH_TIMESTAMP_LAST = 4,
		}
		public enum WS_SECURITY_ALGORITHM_PROPERTY_ID {}
		public enum WS_SECURITY_ALGORITHM_ID : int32
		{
			DEFAULT = 0,
			CANONICALIZATION_EXCLUSIVE = 1,
			CANONICALIZATION_EXCLUSIVE_WITH_COMMENTS = 2,
			DIGEST_SHA1 = 3,
			DIGEST_SHA_256 = 4,
			DIGEST_SHA_384 = 5,
			DIGEST_SHA_512 = 6,
			SYMMETRIC_SIGNATURE_HMAC_SHA1 = 7,
			SYMMETRIC_SIGNATURE_HMAC_SHA_256 = 8,
			SYMMETRIC_SIGNATURE_HMAC_SHA_384 = 9,
			SYMMETRIC_SIGNATURE_HMAC_SHA_512 = 10,
			ASYMMETRIC_SIGNATURE_RSA_SHA1 = 11,
			ASYMMETRIC_SIGNATURE_DSA_SHA1 = 12,
			ASYMMETRIC_SIGNATURE_RSA_SHA_256 = 13,
			ASYMMETRIC_SIGNATURE_RSA_SHA_384 = 14,
			ASYMMETRIC_SIGNATURE_RSA_SHA_512 = 15,
			ASYMMETRIC_KEYWRAP_RSA_1_5 = 16,
			ASYMMETRIC_KEYWRAP_RSA_OAEP = 17,
			KEY_DERIVATION_P_SHA1 = 18,
		}
		public enum WS_PROTECTION_LEVEL : int32
		{
			NONE = 1,
			SIGN = 2,
			SIGN_AND_ENCRYPT = 3,
		}
		public enum WS_SECURITY_PROPERTY_ID : int32
		{
			TRANSPORT_PROTECTION_LEVEL = 1,
			ALGORITHM_SUITE = 2,
			ALGORITHM_SUITE_NAME = 3,
			MAX_ALLOWED_LATENCY = 4,
			TIMESTAMP_VALIDITY_DURATION = 5,
			MAX_ALLOWED_CLOCK_SKEW = 6,
			TIMESTAMP_USAGE = 7,
			SECURITY_HEADER_LAYOUT = 8,
			SECURITY_HEADER_VERSION = 9,
			EXTENDED_PROTECTION_POLICY = 10,
			EXTENDED_PROTECTION_SCENARIO = 11,
			SERVICE_IDENTITIES = 12,
		}
		public enum WS_SECURITY_KEY_TYPE : int32
		{
			NONE = 1,
			SYMMETRIC = 2,
			ASYMMETRIC = 3,
		}
		public enum WS_SECURITY_ALGORITHM_SUITE_NAME : int32
		{
			BASIC256 = 1,
			BASIC192 = 2,
			BASIC128 = 3,
			BASIC256_RSA15 = 4,
			BASIC192_RSA15 = 5,
			BASIC128_RSA15 = 6,
			BASIC256_SHA256 = 7,
			BASIC192_SHA256 = 8,
			BASIC128_SHA256 = 9,
			BASIC256_SHA256_RSA15 = 10,
			BASIC192_SHA256_RSA15 = 11,
			BASIC128_SHA256_RSA15 = 12,
		}
		public enum WS_SECURITY_TOKEN_REFERENCE_MODE : int32
		{
			LOCAL_ID = 1,
			XML_BUFFER = 2,
			CERT_THUMBPRINT = 3,
			SECURITY_CONTEXT_ID = 4,
			SAML_ASSERTION_ID = 5,
		}
		public enum WS_SECURITY_KEY_ENTROPY_MODE : int32
		{
			CLIENT_ONLY = 1,
			SERVER_ONLY = 2,
			COMBINED = 3,
		}
		public enum WS_EXTENDED_PROTECTION_POLICY : int32
		{
			NEVER = 1,
			WHEN_SUPPORTED = 2,
			ALWAYS = 3,
		}
		public enum WS_EXTENDED_PROTECTION_SCENARIO : int32
		{
			BOUND_SERVER = 1,
			TERMINATED_SSL = 2,
		}
		public enum WS_SECURITY_BINDING_PROPERTY_ID : int32
		{
			REQUIRE_SSL_CLIENT_CERT = 1,
			WINDOWS_INTEGRATED_AUTH_PACKAGE = 2,
			REQUIRE_SERVER_AUTH = 3,
			ALLOW_ANONYMOUS_CLIENTS = 4,
			ALLOWED_IMPERSONATION_LEVEL = 5,
			HTTP_HEADER_AUTH_SCHEME = 6,
			HTTP_HEADER_AUTH_TARGET = 7,
			HTTP_HEADER_AUTH_BASIC_REALM = 8,
			HTTP_HEADER_AUTH_DIGEST_REALM = 9,
			HTTP_HEADER_AUTH_DIGEST_DOMAIN = 10,
			SECURITY_CONTEXT_KEY_SIZE = 11,
			SECURITY_CONTEXT_KEY_ENTROPY_MODE = 12,
			MESSAGE_PROPERTIES = 13,
			SECURITY_CONTEXT_MAX_PENDING_CONTEXTS = 14,
			SECURITY_CONTEXT_MAX_ACTIVE_CONTEXTS = 15,
			SECURE_CONVERSATION_VERSION = 16,
			SECURITY_CONTEXT_SUPPORT_RENEW = 17,
			SECURITY_CONTEXT_RENEWAL_INTERVAL = 18,
			SECURITY_CONTEXT_ROLLOVER_INTERVAL = 19,
			CERT_FAILURES_TO_IGNORE = 20,
			DISABLE_CERT_REVOCATION_CHECK = 21,
			DISALLOWED_SECURE_PROTOCOLS = 22,
			CERTIFICATE_VALIDATION_CALLBACK_CONTEXT = 23,
		}
		public enum WS_CERT_CREDENTIAL_TYPE : int32
		{
			SUBJECT_NAME_CERT_CREDENTIAL_TYPE = 1,
			THUMBPRINT_CERT_CREDENTIAL_TYPE = 2,
			CUSTOM_CERT_CREDENTIAL_TYPE = 3,
		}
		public enum WS_WINDOWS_INTEGRATED_AUTH_CREDENTIAL_TYPE : int32
		{
			STRING_WINDOWS_INTEGRATED_AUTH_CREDENTIAL_TYPE = 1,
			DEFAULT_WINDOWS_INTEGRATED_AUTH_CREDENTIAL_TYPE = 2,
			OPAQUE_WINDOWS_INTEGRATED_AUTH_CREDENTIAL_TYPE = 3,
		}
		public enum WS_USERNAME_CREDENTIAL_TYPE : int32
		{
			STRING_USERNAME_CREDENTIAL_TYPE = 1,
		}
		public enum WS_SECURITY_TOKEN_PROPERTY_ID : int32
		{
			KEY_TYPE = 1,
			VALID_FROM_TIME = 2,
			VALID_TILL_TIME = 3,
			SERIALIZED_XML = 4,
			ATTACHED_REFERENCE_XML = 5,
			UNATTACHED_REFERENCE_XML = 6,
			SYMMETRIC_KEY = 7,
		}
		public enum WS_SECURITY_KEY_HANDLE_TYPE : int32
		{
			RAW_SYMMETRIC_SECURITY_KEY_HANDLE_TYPE = 1,
			NCRYPT_ASYMMETRIC_SECURITY_KEY_HANDLE_TYPE = 2,
			CAPI_ASYMMETRIC_SECURITY_KEY_HANDLE_TYPE = 3,
		}
		public enum WS_MESSAGE_SECURITY_USAGE : int32
		{
			SUPPORTING_MESSAGE_SECURITY_USAGE = 1,
		}
		public enum WS_SECURITY_CONTEXT_PROPERTY_ID : int32
		{
			IDENTIFIER = 1,
			USERNAME = 2,
			MESSAGE_SECURITY_WINDOWS_TOKEN = 3,
			SAML_ASSERTION = 4,
		}
		public enum WS_XML_SECURITY_TOKEN_PROPERTY_ID : int32
		{
			ATTACHED_REFERENCE = 1,
			UNATTACHED_REFERENCE = 2,
			VALID_FROM_TIME = 3,
			VALID_TILL_TIME = 4,
		}
		public enum WS_SAML_AUTHENTICATOR_TYPE : int32
		{
			CERT_SIGNED_SAML_AUTHENTICATOR_TYPE = 1,
		}
		public enum WS_REQUEST_SECURITY_TOKEN_PROPERTY_ID : int32
		{
			APPLIES_TO = 1,
			TRUST_VERSION = 2,
			SECURE_CONVERSATION_VERSION = 3,
			ISSUED_TOKEN_TYPE = 4,
			REQUEST_ACTION = 5,
			EXISTING_TOKEN = 6,
			ISSUED_TOKEN_KEY_TYPE = 7,
			ISSUED_TOKEN_KEY_SIZE = 8,
			ISSUED_TOKEN_KEY_ENTROPY = 9,
			LOCAL_REQUEST_PARAMETERS = 10,
			SERVICE_REQUEST_PARAMETERS = 11,
			MESSAGE_PROPERTIES = 12,
			BEARER_KEY_TYPE_VERSION = 13,
		}
		public enum WS_SECURITY_BEARER_KEY_TYPE_VERSION : int32
		{
			ORIGINAL_SPECIFICATION = 1,
			ORIGINAL_SCHEMA = 2,
			ERRATA_01 = 3,
		}
		public enum WS_TYPE : int32
		{
			BOOL_TYPE = 0,
			INT8_TYPE = 1,
			INT16_TYPE = 2,
			INT32_TYPE = 3,
			INT64_TYPE = 4,
			UINT8_TYPE = 5,
			UINT16_TYPE = 6,
			UINT32_TYPE = 7,
			UINT64_TYPE = 8,
			FLOAT_TYPE = 9,
			DOUBLE_TYPE = 10,
			DECIMAL_TYPE = 11,
			DATETIME_TYPE = 12,
			TIMESPAN_TYPE = 13,
			GUID_TYPE = 14,
			UNIQUE_ID_TYPE = 15,
			STRING_TYPE = 16,
			WSZ_TYPE = 17,
			BYTES_TYPE = 18,
			XML_STRING_TYPE = 19,
			XML_QNAME_TYPE = 20,
			XML_BUFFER_TYPE = 21,
			CHAR_ARRAY_TYPE = 22,
			UTF8_ARRAY_TYPE = 23,
			BYTE_ARRAY_TYPE = 24,
			DESCRIPTION_TYPE = 25,
			STRUCT_TYPE = 26,
			CUSTOM_TYPE = 27,
			ENDPOINT_ADDRESS_TYPE = 28,
			FAULT_TYPE = 29,
			VOID_TYPE = 30,
			ENUM_TYPE = 31,
			DURATION_TYPE = 32,
			UNION_TYPE = 33,
			ANY_ATTRIBUTES_TYPE = 34,
		}
		public enum WS_FIELD_MAPPING : int32
		{
			TYPE_ATTRIBUTE_FIELD_MAPPING = 0,
			ATTRIBUTE_FIELD_MAPPING = 1,
			ELEMENT_FIELD_MAPPING = 2,
			REPEATING_ELEMENT_FIELD_MAPPING = 3,
			TEXT_FIELD_MAPPING = 4,
			NO_FIELD_MAPPING = 5,
			XML_ATTRIBUTE_FIELD_MAPPING = 6,
			ELEMENT_CHOICE_FIELD_MAPPING = 7,
			REPEATING_ELEMENT_CHOICE_FIELD_MAPPING = 8,
			ANY_ELEMENT_FIELD_MAPPING = 9,
			REPEATING_ANY_ELEMENT_FIELD_MAPPING = 10,
			ANY_CONTENT_FIELD_MAPPING = 11,
			ANY_ATTRIBUTES_FIELD_MAPPING = 12,
		}
		public enum WS_TYPE_MAPPING : int32
		{
			ELEMENT_TYPE_MAPPING = 1,
			ATTRIBUTE_TYPE_MAPPING = 2,
			ELEMENT_CONTENT_TYPE_MAPPING = 3,
			ANY_ELEMENT_TYPE_MAPPING = 4,
		}
		public enum WS_READ_OPTION : int32
		{
			REQUIRED_VALUE = 1,
			REQUIRED_POINTER = 2,
			OPTIONAL_POINTER = 3,
			NILLABLE_POINTER = 4,
			NILLABLE_VALUE = 5,
		}
		public enum WS_WRITE_OPTION : int32
		{
			REQUIRED_VALUE = 1,
			REQUIRED_POINTER = 2,
			NILLABLE_VALUE = 3,
			NILLABLE_POINTER = 4,
		}
		public enum WS_SERVICE_CANCEL_REASON : int32
		{
			HOST_ABORT = 0,
			CHANNEL_FAULTED = 1,
		}
		public enum WS_OPERATION_STYLE : int32
		{
			NON_RPC_LITERAL_OPERATION = 0,
			RPC_LITERAL_OPERATION = 1,
		}
		public enum WS_PARAMETER_TYPE : int32
		{
			NORMAL = 0,
			ARRAY = 1,
			ARRAY_COUNT = 2,
			MESSAGES = 3,
		}
		public enum WS_SERVICE_ENDPOINT_PROPERTY_ID : int32
		{
			ACCEPT_CHANNEL_CALLBACK = 0,
			CLOSE_CHANNEL_CALLBACK = 1,
			MAX_ACCEPTING_CHANNELS = 2,
			MAX_CONCURRENCY = 3,
			BODY_HEAP_MAX_SIZE = 4,
			BODY_HEAP_TRIM_SIZE = 5,
			MESSAGE_PROPERTIES = 6,
			MAX_CALL_POOL_SIZE = 7,
			MAX_CHANNEL_POOL_SIZE = 8,
			LISTENER_PROPERTIES = 9,
			CHECK_MUST_UNDERSTAND = 10,
			METADATA_EXCHANGE_TYPE = 11,
			METADATA = 12,
			METADATA_EXCHANGE_URL_SUFFIX = 13,
			MAX_CHANNELS = 14,
		}
		public enum WS_METADATA_EXCHANGE_TYPE : int32
		{
			NONE = 0,
			MEX = 1,
			HTTP_GET = 2,
		}
		public enum WS_SERVICE_PROPERTY_ID : int32
		{
			HOST_USER_STATE = 0,
			FAULT_DISCLOSURE = 1,
			FAULT_LANGID = 2,
			HOST_STATE = 3,
			METADATA = 4,
			CLOSE_TIMEOUT = 5,
		}
		public enum WS_SERVICE_HOST_STATE : int32
		{
			CREATED = 0,
			OPENING = 1,
			OPEN = 2,
			CLOSING = 3,
			CLOSED = 4,
			FAULTED = 5,
		}
		public enum WS_SERVICE_PROXY_STATE : int32
		{
			CREATED = 0,
			OPENING = 1,
			OPEN = 2,
			CLOSING = 3,
			CLOSED = 4,
			FAULTED = 5,
		}
		public enum WS_PROXY_PROPERTY_ID : int32
		{
			PROPERTY_CALL_TIMEOUT = 0,
			PROPERTY_MESSAGE_PROPERTIES = 1,
			PROPERTY_MAX_CALL_POOL_SIZE = 2,
			PROPERTY_STATE = 3,
			PROPERTY_MAX_PENDING_CALLS = 4,
			PROPERTY_MAX_CLOSE_TIMEOUT = 5,
			FAULT_LANG_ID = 6,
		}
		public enum WS_CALL_PROPERTY_ID : int32
		{
			CHECK_MUST_UNDERSTAND = 0,
			SEND_MESSAGE_CONTEXT = 1,
			RECEIVE_MESSAGE_CONTEXT = 2,
			CALL_ID = 3,
		}
		public enum WS_TRACE_API : int32
		{
			NONE = -1,
			START_READER_CANONICALIZATION = 0,
			END_READER_CANONICALIZATION = 1,
			START_WRITER_CANONICALIZATION = 2,
			END_WRITER_CANONICALIZATION = 3,
			CREATE_XML_BUFFER = 4,
			REMOVE_NODE = 5,
			CREATE_READER = 6,
			SET_INPUT = 7,
			SET_INPUT_TO_BUFFER = 8,
			FREE_XML_READER = 9,
			GET_READER_PROPERTY = 10,
			GET_READER_NODE = 11,
			FILL_READER = 12,
			READ_START_ELEMENT = 13,
			READ_TO_START_ELEMENT = 14,
			READ_START_ATTRIBUTE = 15,
			READ_END_ATTRIBUTE = 16,
			READ_NODE = 17,
			SKIP_NODE = 18,
			READ_END_ELEMENT = 19,
			FIND_ATTRIBUTE = 20,
			READ_ELEMENT_VALUE = 21,
			READ_CHARS = 22,
			READ_CHARS_UTF8 = 23,
			READ_BYTES = 24,
			READ_ARRAY = 25,
			GET_READER_POSITION = 26,
			SET_READER_POSITION = 27,
			MOVE_READER = 28,
			CREATE_WRITER = 29,
			FREE_XML_WRITER = 30,
			SET_OUTPUT = 31,
			SET_OUTPUT_TO_BUFFER = 32,
			GET_WRITER_PROPERTY = 33,
			FLUSH_WRITER = 34,
			WRITE_START_ELEMENT = 35,
			WRITE_END_START_ELEMENT = 36,
			WRITE_XMLNS_ATTRIBUTE = 37,
			WRITE_START_ATTRIBUTE = 38,
			WRITE_END_ATTRIBUTE = 39,
			WRITE_VALUE = 40,
			WRITE_XML_BUFFER = 41,
			READ_XML_BUFFER = 42,
			WRITE_XML_BUFFER_TO_BYTES = 43,
			READ_XML_BUFFER_FROM_BYTES = 44,
			WRITE_ARRAY = 45,
			WRITE_QUALIFIED_NAME = 46,
			WRITE_CHARS = 47,
			WRITE_CHARS_UTF8 = 48,
			WRITE_BYTES = 49,
			PUSH_BYTES = 50,
			PULL_BYTES = 51,
			WRITE_END_ELEMENT = 52,
			WRITE_TEXT = 53,
			WRITE_START_CDATA = 54,
			WRITE_END_CDATA = 55,
			WRITE_NODE = 56,
			PREFIX_FROM_NAMESPACE = 57,
			GET_WRITER_POSITION = 58,
			SET_WRITER_POSITION = 59,
			MOVE_WRITER = 60,
			TRIM_XML_WHITESPACE = 61,
			VERIFY_XML_NCNAME = 62,
			XML_STRING_EQUALS = 63,
			NAMESPACE_FROM_PREFIX = 64,
			READ_QUALIFIED_NAME = 65,
			GET_XML_ATTRIBUTE = 66,
			COPY_NODE = 67,
			ASYNC_EXECUTE = 68,
			CREATE_CHANNEL = 69,
			OPEN_CHANNEL = 70,
			SEND_MESSAGE = 71,
			RECEIVE_MESSAGE = 72,
			REQUEST_REPLY = 73,
			SEND_REPLY_MESSAGE = 74,
			SEND_FAULT_MESSAGE_FOR_ERROR = 75,
			GET_CHANNEL_PROPERTY = 76,
			SET_CHANNEL_PROPERTY = 77,
			WRITE_MESSAGE_START = 78,
			WRITE_MESSAGE_END = 79,
			READ_MESSAGE_START = 80,
			READ_MESSAGE_END = 81,
			CLOSE_CHANNEL = 82,
			ABORT_CHANNEL = 83,
			FREE_CHANNEL = 84,
			RESET_CHANNEL = 85,
			ABANDON_MESSAGE = 86,
			SHUTDOWN_SESSION_CHANNEL = 87,
			GET_CONTEXT_PROPERTY = 88,
			GET_DICTIONARY = 89,
			READ_ENDPOINT_ADDRESS_EXTENSION = 90,
			CREATE_ERROR = 91,
			ADD_ERROR_STRING = 92,
			GET_ERROR_STRING = 93,
			COPY_ERROR = 94,
			GET_ERROR_PROPERTY = 95,
			SET_ERROR_PROPERTY = 96,
			RESET_ERROR = 97,
			FREE_ERROR = 98,
			GET_FAULT_ERROR_PROPERTY = 99,
			SET_FAULT_ERROR_PROPERTY = 100,
			CREATE_FAULT_FROM_ERROR = 101,
			SET_FAULT_ERROR_DETAIL = 102,
			GET_FAULT_ERROR_DETAIL = 103,
			CREATE_HEAP = 104,
			ALLOC = 105,
			GET_HEAP_PROPERTY = 106,
			RESET_HEAP = 107,
			FREE_HEAP = 108,
			CREATE_LISTENER = 109,
			OPEN_LISTENER = 110,
			ACCEPT_CHANNEL = 111,
			CLOSE_LISTENER = 112,
			ABORT_LISTENER = 113,
			RESET_LISTENER = 114,
			FREE_LISTENER = 115,
			GET_LISTENER_PROPERTY = 116,
			SET_LISTENER_PROPERTY = 117,
			CREATE_CHANNEL_FOR_LISTENER = 118,
			CREATE_MESSAGE = 119,
			CREATE_MESSAGE_FOR_CHANNEL = 120,
			INITIALIZE_MESSAGE = 121,
			RESET_MESSAGE = 122,
			FREE_MESSAGE = 123,
			GET_HEADER_ATTRIBUTES = 124,
			GET_HEADER = 125,
			GET_CUSTOM_HEADER = 126,
			REMOVE_HEADER = 127,
			SET_HEADER = 128,
			REMOVE_CUSTOM_HEADER = 129,
			ADD_CUSTOM_HEADER = 130,
			ADD_MAPPED_HEADER = 131,
			REMOVE_MAPPED_HEADER = 132,
			GET_MAPPED_HEADER = 133,
			WRITE_BODY = 134,
			READ_BODY = 135,
			WRITE_ENVELOPE_START = 136,
			WRITE_ENVELOPE_END = 137,
			READ_ENVELOPE_START = 138,
			READ_ENVELOPE_END = 139,
			GET_MESSAGE_PROPERTY = 140,
			SET_MESSAGE_PROPERTY = 141,
			ADDRESS_MESSAGE = 142,
			CHECK_MUST_UNDERSTAND_HEADERS = 143,
			MARK_HEADER_AS_UNDERSTOOD = 144,
			FILL_BODY = 145,
			FLUSH_BODY = 146,
			REQUEST_SECURITY_TOKEN = 147,
			GET_SECURITY_TOKEN_PROPERTY = 148,
			CREATE_XML_SECURITY_TOKEN = 149,
			FREE_SECURITY_TOKEN = 150,
			REVOKE_SECURITY_CONTEXT = 151,
			GET_SECURITY_CONTEXT_PROPERTY = 152,
			READ_ELEMENT_TYPE = 153,
			READ_ATTRIBUTE_TYPE = 154,
			READ_TYPE = 155,
			WRITE_ELEMENT_TYPE = 156,
			WRITE_ATTRIBUTE_TYPE = 157,
			WRITE_TYPE = 158,
			SERVICE_REGISTER_FOR_CANCEL = 159,
			GET_SERVICE_HOST_PROPERTY = 160,
			CREATE_SERVICE_HOST = 161,
			OPEN_SERVICE_HOST = 162,
			CLOSE_SERVICE_HOST = 163,
			ABORT_SERVICE_HOST = 164,
			FREE_SERVICE_HOST = 165,
			RESET_SERVICE_HOST = 166,
			GET_SERVICE_PROXY_PROPERTY = 167,
			CREATE_SERVICE_PROXY = 168,
			OPEN_SERVICE_PROXY = 169,
			CLOSE_SERVICE_PROXY = 170,
			ABORT_SERVICE_PROXY = 171,
			FREE_SERVICE_PROXY = 172,
			RESET_SERVICE_PROXY = 173,
			ABORT_CALL = 174,
			CALL = 175,
			DECODE_URL = 176,
			ENCODE_URL = 177,
			COMBINE_URL = 178,
			DATETIME_TO_FILETIME = 179,
			FILETIME_TO_DATETIME = 180,
			DUMP_MEMORY = 181,
			SET_AUTOFAIL = 182,
			CREATE_METADATA = 183,
			READ_METADATA = 184,
			FREE_METADATA = 185,
			RESET_METADATA = 186,
			GET_METADATA_PROPERTY = 187,
			GET_MISSING_METADATA_DOCUMENT_ADDRESS = 188,
			GET_METADATA_ENDPOINTS = 189,
			MATCH_POLICY_ALTERNATIVE = 190,
			GET_POLICY_PROPERTY = 191,
			GET_POLICY_ALTERNATIVE_COUNT = 192,
			WS_CREATE_SERVICE_PROXY_FROM_TEMPLATE = 193,
			WS_CREATE_SERVICE_HOST_FROM_TEMPLATE = 194,
		}
		public enum WS_URL_SCHEME_TYPE : int32
		{
			HTTP_SCHEME_TYPE = 0,
			HTTPS_SCHEME_TYPE = 1,
			NETTCP_SCHEME_TYPE = 2,
			SOAPUDP_SCHEME_TYPE = 3,
			NETPIPE_SCHEME_TYPE = 4,
		}
		public enum WS_DATETIME_FORMAT : int32
		{
			UTC = 0,
			LOCAL = 1,
			NONE = 2,
		}
		public enum WS_METADATA_STATE : int32
		{
			CREATED = 1,
			RESOLVED = 2,
			FAULTED = 3,
		}
		public enum WS_METADATA_PROPERTY_ID : int32
		{
			STATE = 1,
			HEAP_PROPERTIES = 2,
			POLICY_PROPERTIES = 3,
			HEAP_REQUESTED_SIZE = 4,
			MAX_DOCUMENTS = 5,
			HOST_NAMES = 6,
			VERIFY_HOST_NAMES = 7,
		}
		public enum WS_POLICY_STATE : int32
		{
			CREATED = 1,
			FAULTED = 2,
		}
		public enum WS_POLICY_PROPERTY_ID : int32
		{
			STATE = 1,
			MAX_ALTERNATIVES = 2,
			MAX_DEPTH = 3,
			MAX_EXTENSIONS = 4,
		}
		public enum WS_SECURITY_BINDING_CONSTRAINT_TYPE : int32
		{
			SSL_TRANSPORT_SECURITY_BINDING_CONSTRAINT_TYPE = 1,
			TCP_SSPI_TRANSPORT_SECURITY_BINDING_CONSTRAINT_TYPE = 2,
			HTTP_HEADER_AUTH_SECURITY_BINDING_CONSTRAINT_TYPE = 3,
			USERNAME_MESSAGE_SECURITY_BINDING_CONSTRAINT_TYPE = 4,
			KERBEROS_APREQ_MESSAGE_SECURITY_BINDING_CONSTRAINT_TYPE = 5,
			ISSUED_TOKEN_MESSAGE_SECURITY_BINDING_CONSTRAINT_TYPE = 6,
			CERT_MESSAGE_SECURITY_BINDING_CONSTRAINT_TYPE = 7,
			SECURITY_CONTEXT_MESSAGE_SECURITY_BINDING_CONSTRAINT_TYPE = 8,
		}
		public enum WS_POLICY_EXTENSION_TYPE : int32
		{
			ENDPOINT_POLICY_EXTENSION_TYPE = 1,
		}
		public enum WS_BINDING_TEMPLATE_TYPE : int32
		{
			HTTP_BINDING_TEMPLATE_TYPE = 0,
			HTTP_SSL_BINDING_TEMPLATE_TYPE = 1,
			HTTP_HEADER_AUTH_BINDING_TEMPLATE_TYPE = 2,
			HTTP_SSL_HEADER_AUTH_BINDING_TEMPLATE_TYPE = 3,
			HTTP_SSL_USERNAME_BINDING_TEMPLATE_TYPE = 4,
			HTTP_SSL_KERBEROS_APREQ_BINDING_TEMPLATE_TYPE = 5,
			TCP_BINDING_TEMPLATE_TYPE = 6,
			TCP_SSPI_BINDING_TEMPLATE_TYPE = 7,
			TCP_SSPI_USERNAME_BINDING_TEMPLATE_TYPE = 8,
			TCP_SSPI_KERBEROS_APREQ_BINDING_TEMPLATE_TYPE = 9,
			HTTP_SSL_USERNAME_SECURITY_CONTEXT_BINDING_TEMPLATE_TYPE = 10,
			HTTP_SSL_KERBEROS_APREQ_SECURITY_CONTEXT_BINDING_TEMPLATE_TYPE = 11,
			TCP_SSPI_USERNAME_SECURITY_CONTEXT_BINDING_TEMPLATE_TYPE = 12,
			TCP_SSPI_KERBEROS_APREQ_SECURITY_CONTEXT_BINDING_TEMPLATE_TYPE = 13,
		}
		
		// --- Function Pointers ---
		
		public function HRESULT WS_READ_CALLBACK(void* callbackState, void* bytes, uint32 maxSize, out uint32 actualSize, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		public function HRESULT WS_WRITE_CALLBACK(void* callbackState, WS_BYTES* buffers, uint32 count, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		public function HRESULT WS_PUSH_BYTES_CALLBACK(void* callbackState, WS_WRITE_CALLBACK writeCallback, void* writeCallbackState, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		public function HRESULT WS_PULL_BYTES_CALLBACK(void* callbackState, void* bytes, uint32 maxSize, out uint32 actualSize, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		public function HRESULT WS_DYNAMIC_STRING_CALLBACK(void* callbackState, in WS_XML_STRING string, out BOOL found, out uint32 id, WS_ERROR* error);
		public function void WS_ASYNC_CALLBACK(HRESULT errorCode, WS_CALLBACK_MODEL callbackModel, void* callbackState);
		public function HRESULT WS_ASYNC_FUNCTION(HRESULT hr, WS_CALLBACK_MODEL callbackModel, void* callbackState, out WS_ASYNC_OPERATION next, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		public function HRESULT WS_CREATE_CHANNEL_CALLBACK(WS_CHANNEL_TYPE channelType, void* channelParameters, uint32 channelParametersSize, void** channelInstance, WS_ERROR* error);
		public function void WS_FREE_CHANNEL_CALLBACK(void* channelInstance);
		public function HRESULT WS_RESET_CHANNEL_CALLBACK(void* channelInstance, WS_ERROR* error);
		public function HRESULT WS_ABORT_CHANNEL_CALLBACK(void* channelInstance, WS_ERROR* error);
		public function HRESULT WS_OPEN_CHANNEL_CALLBACK(void* channelInstance, in WS_ENDPOINT_ADDRESS endpointAddress, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		public function HRESULT WS_CLOSE_CHANNEL_CALLBACK(void* channelInstance, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		public function HRESULT WS_SET_CHANNEL_PROPERTY_CALLBACK(void* channelInstance, WS_CHANNEL_PROPERTY_ID id, void* value, uint32 valueSize, WS_ERROR* error);
		public function HRESULT WS_GET_CHANNEL_PROPERTY_CALLBACK(void* channelInstance, WS_CHANNEL_PROPERTY_ID id, void* value, uint32 valueSize, WS_ERROR* error);
		public function HRESULT WS_READ_MESSAGE_START_CALLBACK(void* channelInstance, ref WS_MESSAGE message, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		public function HRESULT WS_READ_MESSAGE_END_CALLBACK(void* channelInstance, ref WS_MESSAGE message, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		public function HRESULT WS_WRITE_MESSAGE_START_CALLBACK(void* channelInstance, ref WS_MESSAGE message, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		public function HRESULT WS_WRITE_MESSAGE_END_CALLBACK(void* channelInstance, ref WS_MESSAGE message, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		public function HRESULT WS_ABANDON_MESSAGE_CALLBACK(void* channelInstance, ref WS_MESSAGE message, WS_ERROR* error);
		public function HRESULT WS_SHUTDOWN_SESSION_CHANNEL_CALLBACK(void* channelInstance, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		public function HRESULT WS_CREATE_ENCODER_CALLBACK(void* createContext, WS_WRITE_CALLBACK writeCallback, void* writeContext, void** encoderContext, WS_ERROR* error);
		public function HRESULT WS_ENCODER_GET_CONTENT_TYPE_CALLBACK(void* encoderContext, in WS_STRING contentType, out WS_STRING newContentType, out WS_STRING contentEncoding, WS_ERROR* error);
		public function HRESULT WS_ENCODER_START_CALLBACK(void* encoderContext, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		public function HRESULT WS_ENCODER_ENCODE_CALLBACK(void* encoderContext, WS_BYTES* buffers, uint32 count, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		public function HRESULT WS_ENCODER_END_CALLBACK(void* encoderContext, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		public function void WS_FREE_ENCODER_CALLBACK(void* encoderContext);
		public function HRESULT WS_CREATE_DECODER_CALLBACK(void* createContext, WS_READ_CALLBACK readCallback, void* readContext, void** decoderContext, WS_ERROR* error);
		public function HRESULT WS_DECODER_GET_CONTENT_TYPE_CALLBACK(void* decoderContext, in WS_STRING contentType, WS_STRING* contentEncoding, out WS_STRING newContentType, WS_ERROR* error);
		public function HRESULT WS_DECODER_START_CALLBACK(void* encoderContext, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		public function HRESULT WS_DECODER_DECODE_CALLBACK(void* encoderContext, void* buffer, uint32 maxLength, out uint32 length, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		public function HRESULT WS_DECODER_END_CALLBACK(void* encoderContext, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		public function void WS_FREE_DECODER_CALLBACK(void* decoderContext);
		public function HRESULT WS_HTTP_REDIRECT_CALLBACK(void* state, in WS_STRING originalUrl, in WS_STRING newUrl);
		public function HRESULT WS_CREATE_LISTENER_CALLBACK(WS_CHANNEL_TYPE channelType, void* listenerParameters, uint32 listenerParametersSize, void** listenerInstance, WS_ERROR* error);
		public function void WS_FREE_LISTENER_CALLBACK(void* listenerInstance);
		public function HRESULT WS_RESET_LISTENER_CALLBACK(void* listenerInstance, WS_ERROR* error);
		public function HRESULT WS_OPEN_LISTENER_CALLBACK(void* listenerInstance, in WS_STRING url, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		public function HRESULT WS_CLOSE_LISTENER_CALLBACK(void* listenerInstance, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		public function HRESULT WS_GET_LISTENER_PROPERTY_CALLBACK(void* listenerInstance, WS_LISTENER_PROPERTY_ID id, void* value, uint32 valueSize, WS_ERROR* error);
		public function HRESULT WS_SET_LISTENER_PROPERTY_CALLBACK(void* listenerInstance, WS_LISTENER_PROPERTY_ID id, void* value, uint32 valueSize, WS_ERROR* error);
		public function HRESULT WS_ACCEPT_CHANNEL_CALLBACK(void* listenerInstance, void* channelInstance, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		public function HRESULT WS_ABORT_LISTENER_CALLBACK(void* listenerInstance, WS_ERROR* error);
		public function HRESULT WS_CREATE_CHANNEL_FOR_LISTENER_CALLBACK(void* listenerInstance, void* channelParameters, uint32 channelParametersSize, void** channelInstance, WS_ERROR* error);
		public function void WS_MESSAGE_DONE_CALLBACK(void* doneCallbackState);
		public function HRESULT WS_CERTIFICATE_VALIDATION_CALLBACK(in CERT_CONTEXT certContext, void* state);
		public function HRESULT WS_GET_CERT_CALLBACK(void* getCertCallbackState, WS_ENDPOINT_ADDRESS* targetAddress, WS_STRING* viaUri, out CERT_CONTEXT* cert, WS_ERROR* error);
		public function HRESULT WS_CERT_ISSUER_LIST_NOTIFICATION_CALLBACK(void* certIssuerListNotificationCallbackState, in SecPkgContext_IssuerListInfoEx issuerList, WS_ERROR* error);
		public function HRESULT WS_VALIDATE_PASSWORD_CALLBACK(void* passwordValidatorCallbackState, in WS_STRING username, in WS_STRING password, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		public function HRESULT WS_VALIDATE_SAML_CALLBACK(void* samlValidatorCallbackState, ref WS_XML_BUFFER samlAssertion, WS_ERROR* error);
		public function HRESULT WS_DURATION_COMPARISON_CALLBACK(in WS_DURATION duration1, in WS_DURATION duration2, out int32 result, WS_ERROR* error);
		public function HRESULT WS_READ_TYPE_CALLBACK(ref WS_XML_READER reader, WS_TYPE_MAPPING typeMapping, void* descriptionData, WS_HEAP* heap, void* value, uint32 valueSize, WS_ERROR* error);
		public function HRESULT WS_WRITE_TYPE_CALLBACK(ref WS_XML_WRITER writer, WS_TYPE_MAPPING typeMapping, void* descriptionData, void* value, uint32 valueSize, WS_ERROR* error);
		public function HRESULT WS_IS_DEFAULT_VALUE_CALLBACK(void* descriptionData, void* value, void* defaultValue, uint32 valueSize, out BOOL isDefault, WS_ERROR* error);
		public function HRESULT WS_SERVICE_MESSAGE_RECEIVE_CALLBACK(in WS_OPERATION_CONTEXT context, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		public function void WS_OPERATION_CANCEL_CALLBACK(WS_SERVICE_CANCEL_REASON reason, void* state);
		public function void WS_OPERATION_FREE_STATE_CALLBACK(void* state);
		public function HRESULT WS_SERVICE_STUB_CALLBACK(in WS_OPERATION_CONTEXT context, void* frame, void* callback, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		public function HRESULT WS_SERVICE_ACCEPT_CHANNEL_CALLBACK(in WS_OPERATION_CONTEXT context, void** channelState, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		public function HRESULT WS_SERVICE_CLOSE_CHANNEL_CALLBACK(in WS_OPERATION_CONTEXT context, WS_ASYNC_CONTEXT* asyncContext);
		public function HRESULT WS_SERVICE_SECURITY_CALLBACK(in WS_OPERATION_CONTEXT context, out BOOL authorized, WS_ERROR* error);
		public function HRESULT WS_PROXY_MESSAGE_CALLBACK(ref WS_MESSAGE message, ref WS_HEAP heap, void* state, WS_ERROR* error);
		
		// --- Structs ---
		
		[CRepr]
		public struct WS_XML_READER {}
		[CRepr]
		public struct WS_XML_WRITER {}
		[CRepr]
		public struct WS_XML_BUFFER {}
		[CRepr]
		public struct WS_CHANNEL {}
		[CRepr]
		public struct WS_OPERATION_CONTEXT {}
		[CRepr]
		public struct WS_ERROR {}
		[CRepr]
		public struct WS_HEAP {}
		[CRepr]
		public struct WS_LISTENER {}
		[CRepr]
		public struct WS_MESSAGE {}
		[CRepr]
		public struct WS_SECURITY_TOKEN {}
		[CRepr]
		public struct WS_SECURITY_CONTEXT {}
		[CRepr]
		public struct WS_SERVICE_HOST {}
		[CRepr]
		public struct WS_SERVICE_PROXY {}
		[CRepr]
		public struct WS_METADATA {}
		[CRepr]
		public struct WS_POLICY {}
		[CRepr]
		public struct WS_XML_DICTIONARY
		{
			public Guid guid;
			public WS_XML_STRING* strings;
			public uint32 stringCount;
			public BOOL isConst;
		}
		[CRepr]
		public struct WS_XML_STRING
		{
			public uint32 length;
			public uint8* bytes;
			public WS_XML_DICTIONARY* dictionary;
			public uint32 id;
		}
		[CRepr]
		public struct WS_XML_QNAME
		{
			public WS_XML_STRING localName;
			public WS_XML_STRING ns;
		}
		[CRepr]
		public struct WS_XML_NODE_POSITION
		{
			public WS_XML_BUFFER* buffer;
			public void* node;
		}
		[CRepr]
		public struct WS_XML_READER_PROPERTY
		{
			public WS_XML_READER_PROPERTY_ID id;
			public void* value;
			public uint32 valueSize;
		}
		[CRepr]
		public struct WS_XML_CANONICALIZATION_INCLUSIVE_PREFIXES
		{
			public uint32 prefixCount;
			public WS_XML_STRING* prefixes;
		}
		[CRepr]
		public struct WS_XML_CANONICALIZATION_PROPERTY
		{
			public WS_XML_CANONICALIZATION_PROPERTY_ID id;
			public void* value;
			public uint32 valueSize;
		}
		[CRepr]
		public struct WS_XML_WRITER_PROPERTY
		{
			public WS_XML_WRITER_PROPERTY_ID id;
			public void* value;
			public uint32 valueSize;
		}
		[CRepr]
		public struct WS_XML_BUFFER_PROPERTY
		{
			public WS_XML_BUFFER_PROPERTY_ID id;
			public void* value;
			public uint32 valueSize;
		}
		[CRepr]
		public struct WS_XML_TEXT
		{
			public WS_XML_TEXT_TYPE textType;
		}
		[CRepr]
		public struct WS_XML_UTF8_TEXT
		{
			public WS_XML_TEXT text;
			public WS_XML_STRING value;
		}
		[CRepr]
		public struct WS_XML_UTF16_TEXT
		{
			public WS_XML_TEXT text;
			public uint8* bytes;
			public uint32 byteCount;
		}
		[CRepr]
		public struct WS_XML_BASE64_TEXT
		{
			public WS_XML_TEXT text;
			public uint8* bytes;
			public uint32 length;
		}
		[CRepr]
		public struct WS_XML_BOOL_TEXT
		{
			public WS_XML_TEXT text;
			public BOOL value;
		}
		[CRepr]
		public struct WS_XML_INT32_TEXT
		{
			public WS_XML_TEXT text;
			public int32 value;
		}
		[CRepr]
		public struct WS_XML_INT64_TEXT
		{
			public WS_XML_TEXT text;
			public int64 value;
		}
		[CRepr]
		public struct WS_XML_UINT64_TEXT
		{
			public WS_XML_TEXT text;
			public uint64 value;
		}
		[CRepr]
		public struct WS_XML_FLOAT_TEXT
		{
			public WS_XML_TEXT text;
			public float value;
		}
		[CRepr]
		public struct WS_XML_DOUBLE_TEXT
		{
			public WS_XML_TEXT text;
			public double value;
		}
		[CRepr]
		public struct WS_XML_DECIMAL_TEXT
		{
			public WS_XML_TEXT text;
			public DECIMAL value;
		}
		[CRepr]
		public struct WS_XML_GUID_TEXT
		{
			public WS_XML_TEXT text;
			public Guid value;
		}
		[CRepr]
		public struct WS_XML_UNIQUE_ID_TEXT
		{
			public WS_XML_TEXT text;
			public Guid value;
		}
		[CRepr]
		public struct WS_DATETIME
		{
			public uint64 ticks;
			public WS_DATETIME_FORMAT format;
		}
		[CRepr]
		public struct WS_XML_DATETIME_TEXT
		{
			public WS_XML_TEXT text;
			public WS_DATETIME value;
		}
		[CRepr]
		public struct WS_TIMESPAN
		{
			public int64 ticks;
		}
		[CRepr]
		public struct WS_XML_TIMESPAN_TEXT
		{
			public WS_XML_TEXT text;
			public WS_TIMESPAN value;
		}
		[CRepr]
		public struct WS_XML_QNAME_TEXT
		{
			public WS_XML_TEXT text;
			public WS_XML_STRING* prefix;
			public WS_XML_STRING* localName;
			public WS_XML_STRING* ns;
		}
		[CRepr]
		public struct WS_XML_LIST_TEXT
		{
			public WS_XML_TEXT text;
			public uint32 itemCount;
			public WS_XML_TEXT** items;
		}
		[CRepr]
		public struct WS_XML_NODE
		{
			public WS_XML_NODE_TYPE nodeType;
		}
		[CRepr]
		public struct WS_XML_ATTRIBUTE
		{
			public uint8 singleQuote;
			public uint8 isXmlNs;
			public WS_XML_STRING* prefix;
			public WS_XML_STRING* localName;
			public WS_XML_STRING* ns;
			public WS_XML_TEXT* value;
		}
		[CRepr]
		public struct WS_XML_ELEMENT_NODE
		{
			public WS_XML_NODE node;
			public WS_XML_STRING* prefix;
			public WS_XML_STRING* localName;
			public WS_XML_STRING* ns;
			public uint32 attributeCount;
			public WS_XML_ATTRIBUTE** attributes;
			public BOOL isEmpty;
		}
		[CRepr]
		public struct WS_XML_TEXT_NODE
		{
			public WS_XML_NODE node;
			public WS_XML_TEXT* text;
		}
		[CRepr]
		public struct WS_XML_COMMENT_NODE
		{
			public WS_XML_NODE node;
			public WS_XML_STRING value;
		}
		[CRepr]
		public struct WS_XML_READER_INPUT
		{
			public WS_XML_READER_INPUT_TYPE inputType;
		}
		[CRepr]
		public struct WS_XML_READER_BUFFER_INPUT
		{
			public WS_XML_READER_INPUT input;
			public void* encodedData;
			public uint32 encodedDataSize;
		}
		[CRepr]
		public struct WS_XML_READER_STREAM_INPUT
		{
			public WS_XML_READER_INPUT input;
			public WS_READ_CALLBACK readCallback;
			public void* readCallbackState;
		}
		[CRepr]
		public struct WS_XML_READER_ENCODING
		{
			public WS_XML_READER_ENCODING_TYPE encodingType;
		}
		[CRepr]
		public struct WS_XML_READER_TEXT_ENCODING
		{
			public WS_XML_READER_ENCODING encoding;
			public WS_CHARSET charSet;
		}
		[CRepr]
		public struct WS_XML_READER_BINARY_ENCODING
		{
			public WS_XML_READER_ENCODING encoding;
			public WS_XML_DICTIONARY* staticDictionary;
			public WS_XML_DICTIONARY* dynamicDictionary;
		}
		[CRepr]
		public struct WS_STRING
		{
			public uint32 length;
			public PWSTR chars;
		}
		[CRepr]
		public struct WS_XML_READER_MTOM_ENCODING
		{
			public WS_XML_READER_ENCODING encoding;
			public WS_XML_READER_ENCODING* textEncoding;
			public BOOL readMimeHeader;
			public WS_STRING startInfo;
			public WS_STRING boundary;
			public WS_STRING startUri;
		}
		[CRepr]
		public struct WS_XML_READER_RAW_ENCODING
		{
			public WS_XML_READER_ENCODING encoding;
		}
		[CRepr]
		public struct WS_XML_WRITER_ENCODING
		{
			public WS_XML_WRITER_ENCODING_TYPE encodingType;
		}
		[CRepr]
		public struct WS_XML_WRITER_TEXT_ENCODING
		{
			public WS_XML_WRITER_ENCODING encoding;
			public WS_CHARSET charSet;
		}
		[CRepr]
		public struct WS_XML_WRITER_BINARY_ENCODING
		{
			public WS_XML_WRITER_ENCODING encoding;
			public WS_XML_DICTIONARY* staticDictionary;
			public WS_DYNAMIC_STRING_CALLBACK dynamicStringCallback;
			public void* dynamicStringCallbackState;
		}
		[CRepr]
		public struct WS_XML_WRITER_MTOM_ENCODING
		{
			public WS_XML_WRITER_ENCODING encoding;
			public WS_XML_WRITER_ENCODING* textEncoding;
			public BOOL writeMimeHeader;
			public WS_STRING boundary;
			public WS_STRING startInfo;
			public WS_STRING startUri;
			public uint32 maxInlineByteCount;
		}
		[CRepr]
		public struct WS_XML_WRITER_RAW_ENCODING
		{
			public WS_XML_WRITER_ENCODING encoding;
		}
		[CRepr]
		public struct WS_XML_WRITER_OUTPUT
		{
			public WS_XML_WRITER_OUTPUT_TYPE outputType;
		}
		[CRepr]
		public struct WS_XML_WRITER_BUFFER_OUTPUT
		{
			public WS_XML_WRITER_OUTPUT output;
		}
		[CRepr]
		public struct WS_XML_WRITER_STREAM_OUTPUT
		{
			public WS_XML_WRITER_OUTPUT output;
			public WS_WRITE_CALLBACK writeCallback;
			public void* writeCallbackState;
		}
		[CRepr]
		public struct WS_XML_WRITER_PROPERTIES
		{
			public WS_XML_WRITER_PROPERTY* properties;
			public uint32 propertyCount;
		}
		[CRepr]
		public struct WS_XML_READER_PROPERTIES
		{
			public WS_XML_READER_PROPERTY* properties;
			public uint32 propertyCount;
		}
		[CRepr]
		public struct WS_ASYNC_CONTEXT
		{
			public WS_ASYNC_CALLBACK callback;
			public void* callbackState;
		}
		[CRepr]
		public struct WS_ASYNC_STATE
		{
			public void* internal0;
			public void* internal1;
			public void* internal2;
			public void* internal3;
			public void* internal4;
		}
		[CRepr]
		public struct WS_ASYNC_OPERATION
		{
			public WS_ASYNC_FUNCTION @function;
		}
		[CRepr]
		public struct WS_CHANNEL_PROPERTY
		{
			public WS_CHANNEL_PROPERTY_ID id;
			public void* value;
			public uint32 valueSize;
		}
		[CRepr]
		public struct WS_CUSTOM_HTTP_PROXY
		{
			public WS_STRING servers;
			public WS_STRING bypass;
		}
		[CRepr]
		public struct WS_CHANNEL_PROPERTIES
		{
			public WS_CHANNEL_PROPERTY* properties;
			public uint32 propertyCount;
		}
		[CRepr]
		public struct WS_CUSTOM_CHANNEL_CALLBACKS
		{
			public WS_CREATE_CHANNEL_CALLBACK createChannelCallback;
			public WS_FREE_CHANNEL_CALLBACK freeChannelCallback;
			public WS_RESET_CHANNEL_CALLBACK resetChannelCallback;
			public WS_OPEN_CHANNEL_CALLBACK openChannelCallback;
			public WS_CLOSE_CHANNEL_CALLBACK closeChannelCallback;
			public WS_ABORT_CHANNEL_CALLBACK abortChannelCallback;
			public WS_GET_CHANNEL_PROPERTY_CALLBACK getChannelPropertyCallback;
			public WS_SET_CHANNEL_PROPERTY_CALLBACK setChannelPropertyCallback;
			public WS_WRITE_MESSAGE_START_CALLBACK writeMessageStartCallback;
			public WS_WRITE_MESSAGE_END_CALLBACK writeMessageEndCallback;
			public WS_READ_MESSAGE_START_CALLBACK readMessageStartCallback;
			public WS_READ_MESSAGE_END_CALLBACK readMessageEndCallback;
			public WS_ABANDON_MESSAGE_CALLBACK abandonMessageCallback;
			public WS_SHUTDOWN_SESSION_CHANNEL_CALLBACK shutdownSessionChannelCallback;
		}
		[CRepr]
		public struct WS_HTTP_HEADER_MAPPING
		{
			public WS_XML_STRING headerName;
			public uint32 headerMappingOptions;
		}
		[CRepr]
		public struct WS_HTTP_MESSAGE_MAPPING
		{
			public uint32 requestMappingOptions;
			public uint32 responseMappingOptions;
			public WS_HTTP_HEADER_MAPPING** requestHeaderMappings;
			public uint32 requestHeaderMappingCount;
			public WS_HTTP_HEADER_MAPPING** responseHeaderMappings;
			public uint32 responseHeaderMappingCount;
		}
		[CRepr]
		public struct WS_ELEMENT_DESCRIPTION
		{
			public WS_XML_STRING* elementLocalName;
			public WS_XML_STRING* elementNs;
			public WS_TYPE type;
			public void* typeDescription;
		}
		[CRepr]
		public struct WS_MESSAGE_DESCRIPTION
		{
			public WS_XML_STRING* action;
			public WS_ELEMENT_DESCRIPTION* bodyElementDescription;
		}
		[CRepr]
		public struct WS_CHANNEL_ENCODER
		{
			public void* createContext;
			public WS_CREATE_ENCODER_CALLBACK createEncoderCallback;
			public WS_ENCODER_GET_CONTENT_TYPE_CALLBACK encoderGetContentTypeCallback;
			public WS_ENCODER_START_CALLBACK encoderStartCallback;
			public WS_ENCODER_ENCODE_CALLBACK encoderEncodeCallback;
			public WS_ENCODER_END_CALLBACK encoderEndCallback;
			public WS_FREE_ENCODER_CALLBACK freeEncoderCallback;
		}
		[CRepr]
		public struct WS_CHANNEL_DECODER
		{
			public void* createContext;
			public WS_CREATE_DECODER_CALLBACK createDecoderCallback;
			public WS_DECODER_GET_CONTENT_TYPE_CALLBACK decoderGetContentTypeCallback;
			public WS_DECODER_START_CALLBACK decoderStartCallback;
			public WS_DECODER_DECODE_CALLBACK decoderDecodeCallback;
			public WS_DECODER_END_CALLBACK decoderEndCallback;
			public WS_FREE_DECODER_CALLBACK freeDecoderCallback;
		}
		[CRepr]
		public struct WS_HTTP_REDIRECT_CALLBACK_CONTEXT
		{
			public WS_HTTP_REDIRECT_CALLBACK callback;
			public void* state;
		}
		[CRepr]
		public struct WS_ENDPOINT_IDENTITY
		{
			public WS_ENDPOINT_IDENTITY_TYPE identityType;
		}
		[CRepr]
		public struct WS_ENDPOINT_ADDRESS
		{
			public WS_STRING url;
			public WS_XML_BUFFER* headers;
			public WS_XML_BUFFER* extensions;
			public WS_ENDPOINT_IDENTITY* identity;
		}
		[CRepr]
		public struct WS_DNS_ENDPOINT_IDENTITY
		{
			public WS_ENDPOINT_IDENTITY identity;
			public WS_STRING dns;
		}
		[CRepr]
		public struct WS_UPN_ENDPOINT_IDENTITY
		{
			public WS_ENDPOINT_IDENTITY identity;
			public WS_STRING upn;
		}
		[CRepr]
		public struct WS_SPN_ENDPOINT_IDENTITY
		{
			public WS_ENDPOINT_IDENTITY identity;
			public WS_STRING spn;
		}
		[CRepr]
		public struct WS_BYTES
		{
			public uint32 length;
			public uint8* bytes;
		}
		[CRepr]
		public struct WS_RSA_ENDPOINT_IDENTITY
		{
			public WS_ENDPOINT_IDENTITY identity;
			public WS_BYTES modulus;
			public WS_BYTES exponent;
		}
		[CRepr]
		public struct WS_CERT_ENDPOINT_IDENTITY
		{
			public WS_ENDPOINT_IDENTITY identity;
			public WS_BYTES rawCertificateData;
		}
		[CRepr]
		public struct WS_UNKNOWN_ENDPOINT_IDENTITY
		{
			public WS_ENDPOINT_IDENTITY identity;
			public WS_XML_BUFFER* element;
		}
		[CRepr]
		public struct WS_ERROR_PROPERTY
		{
			public WS_ERROR_PROPERTY_ID id;
			public void* value;
			public uint32 valueSize;
		}
		[CRepr]
		public struct WS_FAULT_REASON
		{
			public WS_STRING text;
			public WS_STRING lang;
		}
		[CRepr]
		public struct WS_FAULT_CODE
		{
			public WS_XML_QNAME value;
			public WS_FAULT_CODE* subCode;
		}
		[CRepr]
		public struct WS_FAULT
		{
			public WS_FAULT_CODE* code;
			public WS_FAULT_REASON* reasons;
			public uint32 reasonCount;
			public WS_STRING actor;
			public WS_STRING node;
			public WS_XML_BUFFER* detail;
		}
		[CRepr]
		public struct WS_FAULT_DETAIL_DESCRIPTION
		{
			public WS_XML_STRING* action;
			public WS_ELEMENT_DESCRIPTION* detailElementDescription;
		}
		[CRepr]
		public struct WS_HEAP_PROPERTY
		{
			public WS_HEAP_PROPERTY_ID id;
			public void* value;
			public uint32 valueSize;
		}
		[CRepr]
		public struct WS_HEAP_PROPERTIES
		{
			public WS_HEAP_PROPERTY* properties;
			public uint32 propertyCount;
		}
		[CRepr]
		public struct WS_LISTENER_PROPERTY
		{
			public WS_LISTENER_PROPERTY_ID id;
			public void* value;
			public uint32 valueSize;
		}
		[CRepr]
		public struct WS_DISALLOWED_USER_AGENT_SUBSTRINGS
		{
			public uint32 subStringCount;
			public WS_STRING** subStrings;
		}
		[CRepr]
		public struct WS_LISTENER_PROPERTIES
		{
			public WS_LISTENER_PROPERTY* properties;
			public uint32 propertyCount;
		}
		[CRepr]
		public struct WS_HOST_NAMES
		{
			public WS_STRING* hostNames;
			public uint32 hostNameCount;
		}
		[CRepr]
		public struct WS_CUSTOM_LISTENER_CALLBACKS
		{
			public WS_CREATE_LISTENER_CALLBACK createListenerCallback;
			public WS_FREE_LISTENER_CALLBACK freeListenerCallback;
			public WS_RESET_LISTENER_CALLBACK resetListenerCallback;
			public WS_OPEN_LISTENER_CALLBACK openListenerCallback;
			public WS_CLOSE_LISTENER_CALLBACK closeListenerCallback;
			public WS_ABORT_LISTENER_CALLBACK abortListenerCallback;
			public WS_GET_LISTENER_PROPERTY_CALLBACK getListenerPropertyCallback;
			public WS_SET_LISTENER_PROPERTY_CALLBACK setListenerPropertyCallback;
			public WS_CREATE_CHANNEL_FOR_LISTENER_CALLBACK createChannelForListenerCallback;
			public WS_ACCEPT_CHANNEL_CALLBACK acceptChannelCallback;
		}
		[CRepr]
		public struct WS_MESSAGE_PROPERTY
		{
			public WS_MESSAGE_PROPERTY_ID id;
			public void* value;
			public uint32 valueSize;
		}
		[CRepr]
		public struct WS_MESSAGE_PROPERTIES
		{
			public WS_MESSAGE_PROPERTY* properties;
			public uint32 propertyCount;
		}
		[CRepr]
		public struct WS_SECURITY_ALGORITHM_PROPERTY
		{
			public WS_SECURITY_ALGORITHM_PROPERTY_ID id;
			public void* value;
			public uint32 valueSize;
		}
		[CRepr]
		public struct WS_SECURITY_ALGORITHM_SUITE
		{
			public WS_SECURITY_ALGORITHM_ID canonicalizationAlgorithm;
			public WS_SECURITY_ALGORITHM_ID digestAlgorithm;
			public WS_SECURITY_ALGORITHM_ID symmetricSignatureAlgorithm;
			public WS_SECURITY_ALGORITHM_ID asymmetricSignatureAlgorithm;
			public WS_SECURITY_ALGORITHM_ID encryptionAlgorithm;
			public WS_SECURITY_ALGORITHM_ID keyDerivationAlgorithm;
			public WS_SECURITY_ALGORITHM_ID symmetricKeyWrapAlgorithm;
			public WS_SECURITY_ALGORITHM_ID asymmetricKeyWrapAlgorithm;
			public uint32 minSymmetricKeyLength;
			public uint32 maxSymmetricKeyLength;
			public uint32 minAsymmetricKeyLength;
			public uint32 maxAsymmetricKeyLength;
			public WS_SECURITY_ALGORITHM_PROPERTY* properties;
			public uint32 propertyCount;
		}
		[CRepr]
		public struct WS_SECURITY_PROPERTY
		{
			public WS_SECURITY_PROPERTY_ID id;
			public void* value;
			public uint32 valueSize;
		}
		[CRepr]
		public struct WS_SECURITY_PROPERTIES
		{
			public WS_SECURITY_PROPERTY* properties;
			public uint32 propertyCount;
		}
		[CRepr]
		public struct WS_SECURITY_BINDING_PROPERTY
		{
			public WS_SECURITY_BINDING_PROPERTY_ID id;
			public void* value;
			public uint32 valueSize;
		}
		[CRepr]
		public struct WS_SECURITY_BINDING_PROPERTIES
		{
			public WS_SECURITY_BINDING_PROPERTY* properties;
			public uint32 propertyCount;
		}
		[CRepr]
		public struct WS_SERVICE_SECURITY_IDENTITIES
		{
			public WS_STRING* serviceIdentities;
			public uint32 serviceIdentityCount;
		}
		[CRepr]
		public struct WS_CERTIFICATE_VALIDATION_CALLBACK_CONTEXT
		{
			public WS_CERTIFICATE_VALIDATION_CALLBACK callback;
			public void* state;
		}
		[CRepr]
		public struct WS_CERT_CREDENTIAL
		{
			public WS_CERT_CREDENTIAL_TYPE credentialType;
		}
		[CRepr]
		public struct WS_SUBJECT_NAME_CERT_CREDENTIAL
		{
			public WS_CERT_CREDENTIAL credential;
			public uint32 storeLocation;
			public WS_STRING storeName;
			public WS_STRING subjectName;
		}
		[CRepr]
		public struct WS_THUMBPRINT_CERT_CREDENTIAL
		{
			public WS_CERT_CREDENTIAL credential;
			public uint32 storeLocation;
			public WS_STRING storeName;
			public WS_STRING thumbprint;
		}
		[CRepr]
		public struct WS_CUSTOM_CERT_CREDENTIAL
		{
			public WS_CERT_CREDENTIAL credential;
			public WS_GET_CERT_CALLBACK getCertCallback;
			public void* getCertCallbackState;
			public WS_CERT_ISSUER_LIST_NOTIFICATION_CALLBACK certIssuerListNotificationCallback;
			public void* certIssuerListNotificationCallbackState;
		}
		[CRepr]
		public struct WS_WINDOWS_INTEGRATED_AUTH_CREDENTIAL
		{
			public WS_WINDOWS_INTEGRATED_AUTH_CREDENTIAL_TYPE credentialType;
		}
		[CRepr]
		public struct WS_STRING_WINDOWS_INTEGRATED_AUTH_CREDENTIAL
		{
			public WS_WINDOWS_INTEGRATED_AUTH_CREDENTIAL credential;
			public WS_STRING username;
			public WS_STRING password;
			public WS_STRING domain;
		}
		[CRepr]
		public struct WS_DEFAULT_WINDOWS_INTEGRATED_AUTH_CREDENTIAL
		{
			public WS_WINDOWS_INTEGRATED_AUTH_CREDENTIAL credential;
		}
		[CRepr]
		public struct WS_OPAQUE_WINDOWS_INTEGRATED_AUTH_CREDENTIAL
		{
			public WS_WINDOWS_INTEGRATED_AUTH_CREDENTIAL credential;
			public void* opaqueAuthIdentity;
		}
		[CRepr]
		public struct WS_USERNAME_CREDENTIAL
		{
			public WS_USERNAME_CREDENTIAL_TYPE credentialType;
		}
		[CRepr]
		public struct WS_STRING_USERNAME_CREDENTIAL
		{
			public WS_USERNAME_CREDENTIAL credential;
			public WS_STRING username;
			public WS_STRING password;
		}
		[CRepr]
		public struct WS_SECURITY_KEY_HANDLE
		{
			public WS_SECURITY_KEY_HANDLE_TYPE keyHandleType;
		}
		[CRepr]
		public struct WS_RAW_SYMMETRIC_SECURITY_KEY_HANDLE
		{
			public WS_SECURITY_KEY_HANDLE keyHandle;
			public WS_BYTES rawKeyBytes;
		}
		[CRepr]
		public struct WS_NCRYPT_ASYMMETRIC_SECURITY_KEY_HANDLE
		{
			public WS_SECURITY_KEY_HANDLE keyHandle;
			public uint asymmetricKey;
		}
		[CRepr]
		public struct WS_CAPI_ASYMMETRIC_SECURITY_KEY_HANDLE
		{
			public WS_SECURITY_KEY_HANDLE keyHandle;
			public uint provider;
			public uint32 keySpec;
		}
		[CRepr]
		public struct WS_SECURITY_BINDING
		{
			public WS_SECURITY_BINDING_TYPE bindingType;
			public WS_SECURITY_BINDING_PROPERTY* properties;
			public uint32 propertyCount;
		}
		[CRepr]
		public struct WS_SSL_TRANSPORT_SECURITY_BINDING
		{
			public WS_SECURITY_BINDING binding;
			public WS_CERT_CREDENTIAL* localCertCredential;
		}
		[CRepr]
		public struct WS_TCP_SSPI_TRANSPORT_SECURITY_BINDING
		{
			public WS_SECURITY_BINDING binding;
			public WS_WINDOWS_INTEGRATED_AUTH_CREDENTIAL* clientCredential;
		}
		[CRepr]
		public struct WS_NAMEDPIPE_SSPI_TRANSPORT_SECURITY_BINDING
		{
			public WS_SECURITY_BINDING binding;
			public WS_WINDOWS_INTEGRATED_AUTH_CREDENTIAL* clientCredential;
		}
		[CRepr]
		public struct WS_HTTP_HEADER_AUTH_SECURITY_BINDING
		{
			public WS_SECURITY_BINDING binding;
			public WS_WINDOWS_INTEGRATED_AUTH_CREDENTIAL* clientCredential;
		}
		[CRepr]
		public struct WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING
		{
			public WS_SECURITY_BINDING binding;
			public WS_MESSAGE_SECURITY_USAGE bindingUsage;
			public WS_WINDOWS_INTEGRATED_AUTH_CREDENTIAL* clientCredential;
		}
		[CRepr]
		public struct WS_USERNAME_MESSAGE_SECURITY_BINDING
		{
			public WS_SECURITY_BINDING binding;
			public WS_MESSAGE_SECURITY_USAGE bindingUsage;
			public WS_USERNAME_CREDENTIAL* clientCredential;
			public WS_VALIDATE_PASSWORD_CALLBACK passwordValidator;
			public void* passwordValidatorCallbackState;
		}
		[CRepr]
		public struct WS_SECURITY_DESCRIPTION
		{
			public WS_SECURITY_BINDING** securityBindings;
			public uint32 securityBindingCount;
			public WS_SECURITY_PROPERTY* properties;
			public uint32 propertyCount;
		}
		[CRepr]
		public struct WS_SECURITY_CONTEXT_MESSAGE_SECURITY_BINDING
		{
			public WS_SECURITY_BINDING binding;
			public WS_MESSAGE_SECURITY_USAGE bindingUsage;
			public WS_SECURITY_DESCRIPTION* bootstrapSecurityDescription;
		}
		[CRepr]
		public struct WS_SECURITY_CONTEXT_PROPERTY
		{
			public WS_SECURITY_CONTEXT_PROPERTY_ID id;
			public void* value;
			public uint32 valueSize;
		}
		[CRepr]
		public struct WS_XML_SECURITY_TOKEN_PROPERTY
		{
			public WS_XML_SECURITY_TOKEN_PROPERTY_ID id;
			public void* value;
			public uint32 valueSize;
		}
		[CRepr]
		public struct WS_XML_TOKEN_MESSAGE_SECURITY_BINDING
		{
			public WS_SECURITY_BINDING binding;
			public WS_MESSAGE_SECURITY_USAGE bindingUsage;
			public WS_SECURITY_TOKEN* xmlToken;
		}
		[CRepr]
		public struct WS_SAML_AUTHENTICATOR
		{
			public WS_SAML_AUTHENTICATOR_TYPE authenticatorType;
		}
		[CRepr]
		public struct WS_CERT_SIGNED_SAML_AUTHENTICATOR
		{
			public WS_SAML_AUTHENTICATOR authenticator;
			public CERT_CONTEXT** trustedIssuerCerts;
			public uint32 trustedIssuerCertCount;
			public CERT_CONTEXT* decryptionCert;
			public WS_VALIDATE_SAML_CALLBACK samlValidator;
			public void* samlValidatorCallbackState;
		}
		[CRepr]
		public struct WS_SAML_MESSAGE_SECURITY_BINDING
		{
			public WS_SECURITY_BINDING binding;
			public WS_MESSAGE_SECURITY_USAGE bindingUsage;
			public WS_SAML_AUTHENTICATOR* authenticator;
		}
		[CRepr]
		public struct WS_REQUEST_SECURITY_TOKEN_PROPERTY
		{
			public WS_REQUEST_SECURITY_TOKEN_PROPERTY_ID id;
			public void* value;
			public uint32 valueSize;
		}
		[CRepr]
		public struct WS_ANY_ATTRIBUTE
		{
			public WS_XML_STRING localName;
			public WS_XML_STRING ns;
			public WS_XML_TEXT* value;
		}
		[CRepr]
		public struct WS_ANY_ATTRIBUTES
		{
			public WS_ANY_ATTRIBUTE* attributes;
			public uint32 attributeCount;
		}
		[CRepr]
		public struct WS_BOOL_DESCRIPTION
		{
			public BOOL value;
		}
		[CRepr]
		public struct WS_GUID_DESCRIPTION
		{
			public Guid value;
		}
		[CRepr]
		public struct WS_DATETIME_DESCRIPTION
		{
			public WS_DATETIME minValue;
			public WS_DATETIME maxValue;
		}
		[CRepr]
		public struct WS_DURATION
		{
			public BOOL negative;
			public uint32 years;
			public uint32 months;
			public uint32 days;
			public uint32 hours;
			public uint32 minutes;
			public uint32 seconds;
			public uint32 milliseconds;
			public uint32 ticks;
		}
		[CRepr]
		public struct WS_DURATION_DESCRIPTION
		{
			public WS_DURATION minValue;
			public WS_DURATION maxValue;
			public WS_DURATION_COMPARISON_CALLBACK comparer;
		}
		[CRepr]
		public struct WS_TIMESPAN_DESCRIPTION
		{
			public WS_TIMESPAN minValue;
			public WS_TIMESPAN maxValue;
		}
		[CRepr]
		public struct WS_UNIQUE_ID_DESCRIPTION
		{
			public uint32 minCharCount;
			public uint32 maxCharCount;
		}
		[CRepr]
		public struct WS_STRING_DESCRIPTION
		{
			public uint32 minCharCount;
			public uint32 maxCharCount;
		}
		[CRepr]
		public struct WS_XML_STRING_DESCRIPTION
		{
			public uint32 minByteCount;
			public uint32 maxByteCount;
		}
		[CRepr]
		public struct WS_XML_QNAME_DESCRIPTION
		{
			public uint32 minLocalNameByteCount;
			public uint32 maxLocalNameByteCount;
			public uint32 minNsByteCount;
			public uint32 maxNsByteCount;
		}
		[CRepr]
		public struct WS_CHAR_ARRAY_DESCRIPTION
		{
			public uint32 minCharCount;
			public uint32 maxCharCount;
		}
		[CRepr]
		public struct WS_BYTE_ARRAY_DESCRIPTION
		{
			public uint32 minByteCount;
			public uint32 maxByteCount;
		}
		[CRepr]
		public struct WS_UTF8_ARRAY_DESCRIPTION
		{
			public uint32 minByteCount;
			public uint32 maxByteCount;
		}
		[CRepr]
		public struct WS_WSZ_DESCRIPTION
		{
			public uint32 minCharCount;
			public uint32 maxCharCount;
		}
		[CRepr]
		public struct WS_INT8_DESCRIPTION
		{
			public CHAR minValue;
			public CHAR maxValue;
		}
		[CRepr]
		public struct WS_UINT8_DESCRIPTION
		{
			public uint8 minValue;
			public uint8 maxValue;
		}
		[CRepr]
		public struct WS_INT16_DESCRIPTION
		{
			public int16 minValue;
			public int16 maxValue;
		}
		[CRepr]
		public struct WS_UINT16_DESCRIPTION
		{
			public uint16 minValue;
			public uint16 maxValue;
		}
		[CRepr]
		public struct WS_INT32_DESCRIPTION
		{
			public int32 minValue;
			public int32 maxValue;
		}
		[CRepr]
		public struct WS_UINT32_DESCRIPTION
		{
			public uint32 minValue;
			public uint32 maxValue;
		}
		[CRepr]
		public struct WS_INT64_DESCRIPTION
		{
			public int64 minValue;
			public int64 maxValue;
		}
		[CRepr]
		public struct WS_UINT64_DESCRIPTION
		{
			public uint64 minValue;
			public uint64 maxValue;
		}
		[CRepr]
		public struct WS_FLOAT_DESCRIPTION
		{
			public float minValue;
			public float maxValue;
		}
		[CRepr]
		public struct WS_DOUBLE_DESCRIPTION
		{
			public double minValue;
			public double maxValue;
		}
		[CRepr]
		public struct WS_DECIMAL_DESCRIPTION
		{
			public DECIMAL minValue;
			public DECIMAL maxValue;
		}
		[CRepr]
		public struct WS_BYTES_DESCRIPTION
		{
			public uint32 minByteCount;
			public uint32 maxByteCount;
		}
		[CRepr]
		public struct WS_ENUM_VALUE
		{
			public int32 value;
			public WS_XML_STRING* name;
		}
		[CRepr]
		public struct WS_ENUM_DESCRIPTION
		{
			public WS_ENUM_VALUE* values;
			public uint32 valueCount;
			public uint32 maxByteCount;
			public uint32* nameIndices;
		}
		[CRepr]
		public struct WS_ITEM_RANGE
		{
			public uint32 minItemCount;
			public uint32 maxItemCount;
		}
		[CRepr]
		public struct WS_DEFAULT_VALUE
		{
			public void* value;
			public uint32 valueSize;
		}
		[CRepr]
		public struct WS_FIELD_DESCRIPTION
		{
			public WS_FIELD_MAPPING mapping;
			public WS_XML_STRING* localName;
			public WS_XML_STRING* ns;
			public WS_TYPE type;
			public void* typeDescription;
			public uint32 offset;
			public uint32 options;
			public WS_DEFAULT_VALUE* defaultValue;
			public uint32 countOffset;
			public WS_XML_STRING* itemLocalName;
			public WS_XML_STRING* itemNs;
			public WS_ITEM_RANGE* itemRange;
		}
		[CRepr]
		public struct WS_UNION_FIELD_DESCRIPTION
		{
			public int32 value;
			public WS_FIELD_DESCRIPTION field;
		}
		[CRepr]
		public struct WS_STRUCT_DESCRIPTION
		{
			public uint32 size;
			public uint32 alignment;
			public WS_FIELD_DESCRIPTION** fields;
			public uint32 fieldCount;
			public WS_XML_STRING* typeLocalName;
			public WS_XML_STRING* typeNs;
			public WS_STRUCT_DESCRIPTION* parentType;
			public WS_STRUCT_DESCRIPTION** subTypes;
			public uint32 subTypeCount;
			public uint32 structOptions;
		}
		[CRepr]
		public struct WS_UNION_DESCRIPTION
		{
			public uint32 size;
			public uint32 alignment;
			public WS_UNION_FIELD_DESCRIPTION** fields;
			public uint32 fieldCount;
			public uint32 enumOffset;
			public int32 noneEnumValue;
			public uint32* valueIndices;
		}
		[CRepr]
		public struct WS_ENDPOINT_ADDRESS_DESCRIPTION
		{
			public WS_ADDRESSING_VERSION addressingVersion;
		}
		[CRepr]
		public struct WS_FAULT_DESCRIPTION
		{
			public WS_ENVELOPE_VERSION envelopeVersion;
		}
		[CRepr]
		public struct WS_VOID_DESCRIPTION
		{
			public uint32 size;
		}
		[CRepr]
		public struct WS_CUSTOM_TYPE_DESCRIPTION
		{
			public uint32 size;
			public uint32 alignment;
			public WS_READ_TYPE_CALLBACK readCallback;
			public WS_WRITE_TYPE_CALLBACK writeCallback;
			public void* descriptionData;
			public WS_IS_DEFAULT_VALUE_CALLBACK isDefaultValueCallback;
		}
		[CRepr]
		public struct WS_ATTRIBUTE_DESCRIPTION
		{
			public WS_XML_STRING* attributeLocalName;
			public WS_XML_STRING* attributeNs;
			public WS_TYPE type;
			public void* typeDescription;
		}
		[CRepr]
		public struct WS_PARAMETER_DESCRIPTION
		{
			public WS_PARAMETER_TYPE parameterType;
			public uint16 inputMessageIndex;
			public uint16 outputMessageIndex;
		}
		[CRepr]
		public struct WS_OPERATION_DESCRIPTION
		{
			public uint32 versionInfo;
			public WS_MESSAGE_DESCRIPTION* inputMessageDescription;
			public WS_MESSAGE_DESCRIPTION* outputMessageDescription;
			public uint32 inputMessageOptions;
			public uint32 outputMessageOptions;
			public uint16 parameterCount;
			public WS_PARAMETER_DESCRIPTION* parameterDescription;
			public WS_SERVICE_STUB_CALLBACK stubCallback;
			public WS_OPERATION_STYLE style;
		}
		[CRepr]
		public struct WS_CONTRACT_DESCRIPTION
		{
			public uint32 operationCount;
			public WS_OPERATION_DESCRIPTION** operations;
		}
		[CRepr]
		public struct WS_SERVICE_CONTRACT
		{
			public WS_CONTRACT_DESCRIPTION* contractDescription;
			public WS_SERVICE_MESSAGE_RECEIVE_CALLBACK defaultMessageHandlerCallback;
			public void* methodTable;
		}
		[CRepr]
		public struct WS_SERVICE_PROPERTY
		{
			public WS_SERVICE_PROPERTY_ID id;
			public void* value;
			public uint32 valueSize;
		}
		[CRepr]
		public struct WS_SERVICE_ENDPOINT_PROPERTY
		{
			public WS_SERVICE_ENDPOINT_PROPERTY_ID id;
			public void* value;
			public uint32 valueSize;
		}
		[CRepr]
		public struct WS_SERVICE_PROPERTY_ACCEPT_CALLBACK
		{
			public WS_SERVICE_ACCEPT_CHANNEL_CALLBACK callback;
		}
		[CRepr]
		public struct WS_SERVICE_METADATA_DOCUMENT
		{
			public WS_XML_STRING* content;
			public WS_STRING* name;
		}
		[CRepr]
		public struct WS_SERVICE_METADATA
		{
			public uint32 documentCount;
			public WS_SERVICE_METADATA_DOCUMENT** documents;
			public WS_XML_STRING* serviceName;
			public WS_XML_STRING* serviceNs;
		}
		[CRepr]
		public struct WS_SERVICE_PROPERTY_CLOSE_CALLBACK
		{
			public WS_SERVICE_CLOSE_CHANNEL_CALLBACK callback;
		}
		[CRepr]
		public struct WS_SERVICE_ENDPOINT_METADATA
		{
			public WS_XML_STRING* portName;
			public WS_XML_STRING* bindingName;
			public WS_XML_STRING* bindingNs;
		}
		[CRepr]
		public struct WS_SERVICE_ENDPOINT
		{
			public WS_ENDPOINT_ADDRESS address;
			public WS_CHANNEL_BINDING channelBinding;
			public WS_CHANNEL_TYPE channelType;
			public WS_SECURITY_DESCRIPTION* securityDescription;
			public WS_SERVICE_CONTRACT* contract;
			public WS_SERVICE_SECURITY_CALLBACK authorizationCallback;
			public WS_SERVICE_ENDPOINT_PROPERTY* properties;
			public uint32 propertyCount;
			public WS_CHANNEL_PROPERTIES channelProperties;
		}
		[CRepr]
		public struct WS_PROXY_PROPERTY
		{
			public WS_PROXY_PROPERTY_ID id;
			public void* value;
			public uint32 valueSize;
		}
		[CRepr]
		public struct WS_PROXY_MESSAGE_CALLBACK_CONTEXT
		{
			public WS_PROXY_MESSAGE_CALLBACK callback;
			public void* state;
		}
		[CRepr]
		public struct WS_CALL_PROPERTY
		{
			public WS_CALL_PROPERTY_ID id;
			public void* value;
			public uint32 valueSize;
		}
		[CRepr]
		public struct WS_URL
		{
			public WS_URL_SCHEME_TYPE scheme;
		}
		[CRepr]
		public struct WS_HTTP_URL
		{
			public WS_URL url;
			public WS_STRING host;
			public uint16 port;
			public WS_STRING portAsString;
			public WS_STRING path;
			public WS_STRING query;
			public WS_STRING fragment;
		}
		[CRepr]
		public struct WS_HTTPS_URL
		{
			public WS_URL url;
			public WS_STRING host;
			public uint16 port;
			public WS_STRING portAsString;
			public WS_STRING path;
			public WS_STRING query;
			public WS_STRING fragment;
		}
		[CRepr]
		public struct WS_NETTCP_URL
		{
			public WS_URL url;
			public WS_STRING host;
			public uint16 port;
			public WS_STRING portAsString;
			public WS_STRING path;
			public WS_STRING query;
			public WS_STRING fragment;
		}
		[CRepr]
		public struct WS_SOAPUDP_URL
		{
			public WS_URL url;
			public WS_STRING host;
			public uint16 port;
			public WS_STRING portAsString;
			public WS_STRING path;
			public WS_STRING query;
			public WS_STRING fragment;
		}
		[CRepr]
		public struct WS_NETPIPE_URL
		{
			public WS_URL url;
			public WS_STRING host;
			public uint16 port;
			public WS_STRING portAsString;
			public WS_STRING path;
			public WS_STRING query;
			public WS_STRING fragment;
		}
		[CRepr]
		public struct WS_UNIQUE_ID
		{
			public WS_STRING uri;
			public Guid guid;
		}
		[CRepr]
		public struct WS_BUFFERS
		{
			public uint32 bufferCount;
			public WS_BYTES* buffers;
		}
		[CRepr]
		public struct WS_METADATA_ENDPOINT
		{
			public WS_ENDPOINT_ADDRESS endpointAddress;
			public WS_POLICY* endpointPolicy;
			public WS_XML_STRING* portName;
			public WS_XML_STRING* serviceName;
			public WS_XML_STRING* serviceNs;
			public WS_XML_STRING* bindingName;
			public WS_XML_STRING* bindingNs;
			public WS_XML_STRING* portTypeName;
			public WS_XML_STRING* portTypeNs;
		}
		[CRepr]
		public struct WS_METADATA_ENDPOINTS
		{
			public WS_METADATA_ENDPOINT* endpoints;
			public uint32 endpointCount;
		}
		[CRepr]
		public struct WS_METADATA_PROPERTY
		{
			public WS_METADATA_PROPERTY_ID id;
			public void* value;
			public uint32 valueSize;
		}
		[CRepr]
		public struct WS_POLICY_PROPERTY
		{
			public WS_POLICY_PROPERTY_ID id;
			public void* value;
			public uint32 valueSize;
		}
		[CRepr]
		public struct WS_POLICY_PROPERTIES
		{
			public WS_POLICY_PROPERTY* properties;
			public uint32 propertyCount;
		}
		[CRepr]
		public struct WS_SECURITY_BINDING_PROPERTY_CONSTRAINT
		{
			public WS_SECURITY_BINDING_PROPERTY_ID id;
			public void* allowedValues;
			public uint32 allowedValuesSize;
			public _out_e__Struct @out;
			
			[CRepr]
			public struct _out_e__Struct
			{
				public WS_SECURITY_BINDING_PROPERTY securityBindingProperty;
			}
		}
		[CRepr]
		public struct WS_SECURITY_BINDING_CONSTRAINT
		{
			public WS_SECURITY_BINDING_CONSTRAINT_TYPE type;
			public WS_SECURITY_BINDING_PROPERTY_CONSTRAINT* propertyConstraints;
			public uint32 propertyConstraintCount;
		}
		[CRepr]
		public struct WS_SSL_TRANSPORT_SECURITY_BINDING_CONSTRAINT
		{
			public WS_SECURITY_BINDING_CONSTRAINT bindingConstraint;
			public _out_e__Struct @out;
			
			[CRepr]
			public struct _out_e__Struct
			{
				public BOOL clientCertCredentialRequired;
			}
		}
		[CRepr]
		public struct WS_USERNAME_MESSAGE_SECURITY_BINDING_CONSTRAINT
		{
			public WS_SECURITY_BINDING_CONSTRAINT bindingConstraint;
			public WS_MESSAGE_SECURITY_USAGE bindingUsage;
		}
		[CRepr]
		public struct WS_HTTP_HEADER_AUTH_SECURITY_BINDING_CONSTRAINT
		{
			public WS_SECURITY_BINDING_CONSTRAINT bindingConstraint;
		}
		[CRepr]
		public struct WS_TCP_SSPI_TRANSPORT_SECURITY_BINDING_CONSTRAINT
		{
			public WS_SECURITY_BINDING_CONSTRAINT bindingConstraint;
		}
		[CRepr]
		public struct WS_CERT_MESSAGE_SECURITY_BINDING_CONSTRAINT
		{
			public WS_SECURITY_BINDING_CONSTRAINT bindingConstraint;
			public WS_MESSAGE_SECURITY_USAGE bindingUsage;
		}
		[CRepr]
		public struct WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING_CONSTRAINT
		{
			public WS_SECURITY_BINDING_CONSTRAINT bindingConstraint;
			public WS_MESSAGE_SECURITY_USAGE bindingUsage;
		}
		[CRepr]
		public struct WS_REQUEST_SECURITY_TOKEN_PROPERTY_CONSTRAINT
		{
			public WS_REQUEST_SECURITY_TOKEN_PROPERTY_ID id;
			public void* allowedValues;
			public uint32 allowedValuesSize;
			public _out_e__Struct @out;
			
			[CRepr]
			public struct _out_e__Struct
			{
				public WS_REQUEST_SECURITY_TOKEN_PROPERTY requestSecurityTokenProperty;
			}
		}
		[CRepr]
		public struct WS_ISSUED_TOKEN_MESSAGE_SECURITY_BINDING_CONSTRAINT
		{
			public WS_SECURITY_BINDING_CONSTRAINT bindingConstraint;
			public WS_MESSAGE_SECURITY_USAGE bindingUsage;
			public WS_XML_STRING* claimConstraints;
			public uint32 claimConstraintCount;
			public WS_REQUEST_SECURITY_TOKEN_PROPERTY_CONSTRAINT* requestSecurityTokenPropertyConstraints;
			public uint32 requestSecurityTokenPropertyConstraintCount;
			public _out_e__Struct @out;
			
			[CRepr]
			public struct _out_e__Struct
			{
				public WS_ENDPOINT_ADDRESS* issuerAddress;
				public WS_XML_BUFFER* requestSecurityTokenTemplate;
			}
		}
		[CRepr]
		public struct WS_SECURITY_PROPERTY_CONSTRAINT
		{
			public WS_SECURITY_PROPERTY_ID id;
			public void* allowedValues;
			public uint32 allowedValuesSize;
			public _out_e__Struct @out;
			
			[CRepr]
			public struct _out_e__Struct
			{
				public WS_SECURITY_PROPERTY securityProperty;
			}
		}
		[CRepr]
		public struct WS_SECURITY_CONSTRAINTS
		{
			public WS_SECURITY_PROPERTY_CONSTRAINT* securityPropertyConstraints;
			public uint32 securityPropertyConstraintCount;
			public WS_SECURITY_BINDING_CONSTRAINT** securityBindingConstraints;
			public uint32 securityBindingConstraintCount;
		}
		[CRepr]
		public struct WS_SECURITY_CONTEXT_MESSAGE_SECURITY_BINDING_CONSTRAINT
		{
			public WS_SECURITY_BINDING_CONSTRAINT bindingConstraint;
			public WS_MESSAGE_SECURITY_USAGE bindingUsage;
			public WS_SECURITY_CONSTRAINTS* bootstrapSecurityConstraint;
		}
		[CRepr]
		public struct WS_CHANNEL_PROPERTY_CONSTRAINT
		{
			public WS_CHANNEL_PROPERTY_ID id;
			public void* allowedValues;
			public uint32 allowedValuesSize;
			public _out_e__Struct @out;
			
			[CRepr]
			public struct _out_e__Struct
			{
				public WS_CHANNEL_PROPERTY channelProperty;
			}
		}
		[CRepr]
		public struct WS_POLICY_EXTENSION
		{
			public WS_POLICY_EXTENSION_TYPE type;
		}
		[CRepr]
		public struct WS_ENDPOINT_POLICY_EXTENSION
		{
			public WS_POLICY_EXTENSION policyExtension;
			public WS_XML_STRING* assertionName;
			public WS_XML_STRING* assertionNs;
			public _out_e__Struct @out;
			
			[CRepr]
			public struct _out_e__Struct
			{
				public WS_XML_BUFFER* assertionValue;
			}
		}
		[CRepr]
		public struct WS_POLICY_CONSTRAINTS
		{
			public WS_CHANNEL_BINDING channelBinding;
			public WS_CHANNEL_PROPERTY_CONSTRAINT* channelPropertyConstraints;
			public uint32 channelPropertyConstraintCount;
			public WS_SECURITY_CONSTRAINTS* securityConstraints;
			public WS_POLICY_EXTENSION** policyExtensions;
			public uint32 policyExtensionCount;
		}
		[CRepr]
		public struct WS_HTTP_POLICY_DESCRIPTION
		{
			public WS_CHANNEL_PROPERTIES channelProperties;
		}
		[CRepr]
		public struct WS_SSL_TRANSPORT_SECURITY_BINDING_POLICY_DESCRIPTION
		{
			public WS_SECURITY_BINDING_PROPERTIES securityBindingProperties;
		}
		[CRepr]
		public struct WS_HTTP_SSL_POLICY_DESCRIPTION
		{
			public WS_CHANNEL_PROPERTIES channelProperties;
			public WS_SECURITY_PROPERTIES securityProperties;
			public WS_SSL_TRANSPORT_SECURITY_BINDING_POLICY_DESCRIPTION sslTransportSecurityBinding;
		}
		[CRepr]
		public struct WS_HTTP_HEADER_AUTH_SECURITY_BINDING_POLICY_DESCRIPTION
		{
			public WS_SECURITY_BINDING_PROPERTIES securityBindingProperties;
		}
		[CRepr]
		public struct WS_HTTP_HEADER_AUTH_POLICY_DESCRIPTION
		{
			public WS_CHANNEL_PROPERTIES channelProperties;
			public WS_SECURITY_PROPERTIES securityProperties;
			public WS_HTTP_HEADER_AUTH_SECURITY_BINDING_POLICY_DESCRIPTION httpHeaderAuthSecurityBinding;
		}
		[CRepr]
		public struct WS_HTTP_SSL_HEADER_AUTH_POLICY_DESCRIPTION
		{
			public WS_CHANNEL_PROPERTIES channelProperties;
			public WS_SECURITY_PROPERTIES securityProperties;
			public WS_SSL_TRANSPORT_SECURITY_BINDING_POLICY_DESCRIPTION sslTransportSecurityBinding;
			public WS_HTTP_HEADER_AUTH_SECURITY_BINDING_POLICY_DESCRIPTION httpHeaderAuthSecurityBinding;
		}
		[CRepr]
		public struct WS_USERNAME_MESSAGE_SECURITY_BINDING_POLICY_DESCRIPTION
		{
			public WS_SECURITY_BINDING_PROPERTIES securityBindingProperties;
			public WS_MESSAGE_SECURITY_USAGE bindingUsage;
		}
		[CRepr]
		public struct WS_HTTP_SSL_USERNAME_POLICY_DESCRIPTION
		{
			public WS_CHANNEL_PROPERTIES channelProperties;
			public WS_SECURITY_PROPERTIES securityProperties;
			public WS_SSL_TRANSPORT_SECURITY_BINDING_POLICY_DESCRIPTION sslTransportSecurityBinding;
			public WS_USERNAME_MESSAGE_SECURITY_BINDING_POLICY_DESCRIPTION usernameMessageSecurityBinding;
		}
		[CRepr]
		public struct WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING_POLICY_DESCRIPTION
		{
			public WS_SECURITY_BINDING_PROPERTIES securityBindingProperties;
			public WS_MESSAGE_SECURITY_USAGE bindingUsage;
		}
		[CRepr]
		public struct WS_HTTP_SSL_KERBEROS_APREQ_POLICY_DESCRIPTION
		{
			public WS_CHANNEL_PROPERTIES channelProperties;
			public WS_SECURITY_PROPERTIES securityProperties;
			public WS_SSL_TRANSPORT_SECURITY_BINDING_POLICY_DESCRIPTION sslTransportSecurityBinding;
			public WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING_POLICY_DESCRIPTION kerberosApreqMessageSecurityBinding;
		}
		[CRepr]
		public struct WS_TCP_POLICY_DESCRIPTION
		{
			public WS_CHANNEL_PROPERTIES channelProperties;
		}
		[CRepr]
		public struct WS_SSPI_TRANSPORT_SECURITY_BINDING_POLICY_DESCRIPTION
		{
			public WS_SECURITY_BINDING_PROPERTIES securityBindingProperties;
		}
		[CRepr]
		public struct WS_TCP_SSPI_POLICY_DESCRIPTION
		{
			public WS_CHANNEL_PROPERTIES channelProperties;
			public WS_SECURITY_PROPERTIES securityProperties;
			public WS_SSPI_TRANSPORT_SECURITY_BINDING_POLICY_DESCRIPTION sspiTransportSecurityBinding;
		}
		[CRepr]
		public struct WS_TCP_SSPI_USERNAME_POLICY_DESCRIPTION
		{
			public WS_CHANNEL_PROPERTIES channelProperties;
			public WS_SECURITY_PROPERTIES securityProperties;
			public WS_SSPI_TRANSPORT_SECURITY_BINDING_POLICY_DESCRIPTION sspiTransportSecurityBinding;
			public WS_USERNAME_MESSAGE_SECURITY_BINDING_POLICY_DESCRIPTION usernameMessageSecurityBinding;
		}
		[CRepr]
		public struct WS_TCP_SSPI_KERBEROS_APREQ_POLICY_DESCRIPTION
		{
			public WS_CHANNEL_PROPERTIES channelProperties;
			public WS_SECURITY_PROPERTIES securityProperties;
			public WS_SSPI_TRANSPORT_SECURITY_BINDING_POLICY_DESCRIPTION sspiTransportSecurityBinding;
			public WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING_POLICY_DESCRIPTION kerberosApreqMessageSecurityBinding;
		}
		[CRepr]
		public struct WS_SECURITY_CONTEXT_MESSAGE_SECURITY_BINDING_POLICY_DESCRIPTION
		{
			public WS_SECURITY_BINDING_PROPERTIES securityBindingProperties;
			public WS_MESSAGE_SECURITY_USAGE bindingUsage;
		}
		[CRepr]
		public struct WS_SECURITY_CONTEXT_SECURITY_BINDING_POLICY_DESCRIPTION
		{
			public WS_SECURITY_CONTEXT_MESSAGE_SECURITY_BINDING_POLICY_DESCRIPTION securityContextMessageSecurityBinding;
			public WS_SECURITY_PROPERTIES securityProperties;
		}
		[CRepr]
		public struct WS_TCP_SSPI_KERBEROS_APREQ_SECURITY_CONTEXT_POLICY_DESCRIPTION
		{
			public WS_CHANNEL_PROPERTIES channelProperties;
			public WS_SECURITY_PROPERTIES securityProperties;
			public WS_SSPI_TRANSPORT_SECURITY_BINDING_POLICY_DESCRIPTION sspiTransportSecurityBinding;
			public WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING_POLICY_DESCRIPTION kerberosApreqMessageSecurityBinding;
			public WS_SECURITY_CONTEXT_SECURITY_BINDING_POLICY_DESCRIPTION securityContextSecurityBinding;
		}
		[CRepr]
		public struct WS_TCP_SSPI_USERNAME_SECURITY_CONTEXT_POLICY_DESCRIPTION
		{
			public WS_CHANNEL_PROPERTIES channelProperties;
			public WS_SECURITY_PROPERTIES securityProperties;
			public WS_SSPI_TRANSPORT_SECURITY_BINDING_POLICY_DESCRIPTION sspiTransportSecurityBinding;
			public WS_USERNAME_MESSAGE_SECURITY_BINDING_POLICY_DESCRIPTION usernameMessageSecurityBinding;
			public WS_SECURITY_CONTEXT_SECURITY_BINDING_POLICY_DESCRIPTION securityContextSecurityBinding;
		}
		[CRepr]
		public struct WS_HTTP_SSL_USERNAME_SECURITY_CONTEXT_POLICY_DESCRIPTION
		{
			public WS_CHANNEL_PROPERTIES channelProperties;
			public WS_SECURITY_PROPERTIES securityProperties;
			public WS_SSL_TRANSPORT_SECURITY_BINDING_POLICY_DESCRIPTION sslTransportSecurityBinding;
			public WS_USERNAME_MESSAGE_SECURITY_BINDING_POLICY_DESCRIPTION usernameMessageSecurityBinding;
			public WS_SECURITY_CONTEXT_SECURITY_BINDING_POLICY_DESCRIPTION securityContextSecurityBinding;
		}
		[CRepr]
		public struct WS_HTTP_SSL_KERBEROS_APREQ_SECURITY_CONTEXT_POLICY_DESCRIPTION
		{
			public WS_CHANNEL_PROPERTIES channelProperties;
			public WS_SECURITY_PROPERTIES securityProperties;
			public WS_SSL_TRANSPORT_SECURITY_BINDING_POLICY_DESCRIPTION sslTransportSecurityBinding;
			public WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING_POLICY_DESCRIPTION kerberosApreqMessageSecurityBinding;
			public WS_SECURITY_CONTEXT_SECURITY_BINDING_POLICY_DESCRIPTION securityContextSecurityBinding;
		}
		[CRepr]
		public struct WS_HTTP_BINDING_TEMPLATE
		{
			public WS_CHANNEL_PROPERTIES channelProperties;
		}
		[CRepr]
		public struct WS_TCP_BINDING_TEMPLATE
		{
			public WS_CHANNEL_PROPERTIES channelProperties;
		}
		[CRepr]
		public struct WS_SSL_TRANSPORT_SECURITY_BINDING_TEMPLATE
		{
			public WS_SECURITY_BINDING_PROPERTIES securityBindingProperties;
			public WS_CERT_CREDENTIAL* localCertCredential;
		}
		[CRepr]
		public struct WS_HTTP_SSL_BINDING_TEMPLATE
		{
			public WS_CHANNEL_PROPERTIES channelProperties;
			public WS_SECURITY_PROPERTIES securityProperties;
			public WS_SSL_TRANSPORT_SECURITY_BINDING_TEMPLATE sslTransportSecurityBinding;
		}
		[CRepr]
		public struct WS_HTTP_HEADER_AUTH_SECURITY_BINDING_TEMPLATE
		{
			public WS_SECURITY_BINDING_PROPERTIES securityBindingProperties;
			public WS_WINDOWS_INTEGRATED_AUTH_CREDENTIAL* clientCredential;
		}
		[CRepr]
		public struct WS_HTTP_HEADER_AUTH_BINDING_TEMPLATE
		{
			public WS_CHANNEL_PROPERTIES channelProperties;
			public WS_SECURITY_PROPERTIES securityProperties;
			public WS_HTTP_HEADER_AUTH_SECURITY_BINDING_TEMPLATE httpHeaderAuthSecurityBinding;
		}
		[CRepr]
		public struct WS_TCP_SSPI_TRANSPORT_SECURITY_BINDING_TEMPLATE
		{
			public WS_SECURITY_BINDING_PROPERTIES securityBindingProperties;
			public WS_WINDOWS_INTEGRATED_AUTH_CREDENTIAL* clientCredential;
		}
		[CRepr]
		public struct WS_TCP_SSPI_BINDING_TEMPLATE
		{
			public WS_CHANNEL_PROPERTIES channelProperties;
			public WS_SECURITY_PROPERTIES securityProperties;
			public WS_TCP_SSPI_TRANSPORT_SECURITY_BINDING_TEMPLATE sspiTransportSecurityBinding;
		}
		[CRepr]
		public struct WS_HTTP_SSL_HEADER_AUTH_BINDING_TEMPLATE
		{
			public WS_CHANNEL_PROPERTIES channelProperties;
			public WS_SECURITY_PROPERTIES securityProperties;
			public WS_SSL_TRANSPORT_SECURITY_BINDING_TEMPLATE sslTransportSecurityBinding;
			public WS_HTTP_HEADER_AUTH_SECURITY_BINDING_TEMPLATE httpHeaderAuthSecurityBinding;
		}
		[CRepr]
		public struct WS_USERNAME_MESSAGE_SECURITY_BINDING_TEMPLATE
		{
			public WS_SECURITY_BINDING_PROPERTIES securityBindingProperties;
			public WS_USERNAME_CREDENTIAL* clientCredential;
			public WS_VALIDATE_PASSWORD_CALLBACK passwordValidator;
			public void* passwordValidatorCallbackState;
		}
		[CRepr]
		public struct WS_HTTP_SSL_USERNAME_BINDING_TEMPLATE
		{
			public WS_CHANNEL_PROPERTIES channelProperties;
			public WS_SECURITY_PROPERTIES securityProperties;
			public WS_SSL_TRANSPORT_SECURITY_BINDING_TEMPLATE sslTransportSecurityBinding;
			public WS_USERNAME_MESSAGE_SECURITY_BINDING_TEMPLATE usernameMessageSecurityBinding;
		}
		[CRepr]
		public struct WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING_TEMPLATE
		{
			public WS_SECURITY_BINDING_PROPERTIES securityBindingProperties;
			public WS_WINDOWS_INTEGRATED_AUTH_CREDENTIAL* clientCredential;
		}
		[CRepr]
		public struct WS_HTTP_SSL_KERBEROS_APREQ_BINDING_TEMPLATE
		{
			public WS_CHANNEL_PROPERTIES channelProperties;
			public WS_SECURITY_PROPERTIES securityProperties;
			public WS_SSL_TRANSPORT_SECURITY_BINDING_TEMPLATE sslTransportSecurityBinding;
			public WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING_TEMPLATE kerberosApreqMessageSecurityBinding;
		}
		[CRepr]
		public struct WS_TCP_SSPI_USERNAME_BINDING_TEMPLATE
		{
			public WS_CHANNEL_PROPERTIES channelProperties;
			public WS_SECURITY_PROPERTIES securityProperties;
			public WS_TCP_SSPI_TRANSPORT_SECURITY_BINDING_TEMPLATE sspiTransportSecurityBinding;
			public WS_USERNAME_MESSAGE_SECURITY_BINDING_TEMPLATE usernameMessageSecurityBinding;
		}
		[CRepr]
		public struct WS_TCP_SSPI_KERBEROS_APREQ_BINDING_TEMPLATE
		{
			public WS_CHANNEL_PROPERTIES channelProperties;
			public WS_SECURITY_PROPERTIES securityProperties;
			public WS_TCP_SSPI_TRANSPORT_SECURITY_BINDING_TEMPLATE sspiTransportSecurityBinding;
			public WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING_TEMPLATE kerberosApreqMessageSecurityBinding;
		}
		[CRepr]
		public struct WS_SECURITY_CONTEXT_MESSAGE_SECURITY_BINDING_TEMPLATE
		{
			public WS_SECURITY_BINDING_PROPERTIES securityBindingProperties;
		}
		[CRepr]
		public struct WS_SECURITY_CONTEXT_SECURITY_BINDING_TEMPLATE
		{
			public WS_SECURITY_CONTEXT_MESSAGE_SECURITY_BINDING_TEMPLATE securityContextMessageSecurityBinding;
			public WS_SECURITY_PROPERTIES securityProperties;
		}
		[CRepr]
		public struct WS_HTTP_SSL_USERNAME_SECURITY_CONTEXT_BINDING_TEMPLATE
		{
			public WS_CHANNEL_PROPERTIES channelProperties;
			public WS_SECURITY_PROPERTIES securityProperties;
			public WS_SSL_TRANSPORT_SECURITY_BINDING_TEMPLATE sslTransportSecurityBinding;
			public WS_USERNAME_MESSAGE_SECURITY_BINDING_TEMPLATE usernameMessageSecurityBinding;
			public WS_SECURITY_CONTEXT_SECURITY_BINDING_TEMPLATE securityContextSecurityBinding;
		}
		[CRepr]
		public struct WS_HTTP_SSL_KERBEROS_APREQ_SECURITY_CONTEXT_BINDING_TEMPLATE
		{
			public WS_CHANNEL_PROPERTIES channelProperties;
			public WS_SECURITY_PROPERTIES securityProperties;
			public WS_SSL_TRANSPORT_SECURITY_BINDING_TEMPLATE sslTransportSecurityBinding;
			public WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING_TEMPLATE kerberosApreqMessageSecurityBinding;
			public WS_SECURITY_CONTEXT_SECURITY_BINDING_TEMPLATE securityContextSecurityBinding;
		}
		[CRepr]
		public struct WS_TCP_SSPI_USERNAME_SECURITY_CONTEXT_BINDING_TEMPLATE
		{
			public WS_CHANNEL_PROPERTIES channelProperties;
			public WS_SECURITY_PROPERTIES securityProperties;
			public WS_TCP_SSPI_TRANSPORT_SECURITY_BINDING_TEMPLATE sspiTransportSecurityBinding;
			public WS_USERNAME_MESSAGE_SECURITY_BINDING_TEMPLATE usernameMessageSecurityBinding;
			public WS_SECURITY_CONTEXT_SECURITY_BINDING_TEMPLATE securityContextSecurityBinding;
		}
		[CRepr]
		public struct WS_TCP_SSPI_KERBEROS_APREQ_SECURITY_CONTEXT_BINDING_TEMPLATE
		{
			public WS_CHANNEL_PROPERTIES channelProperties;
			public WS_SECURITY_PROPERTIES securityProperties;
			public WS_TCP_SSPI_TRANSPORT_SECURITY_BINDING_TEMPLATE sspiTransportSecurityBinding;
			public WS_KERBEROS_APREQ_MESSAGE_SECURITY_BINDING_TEMPLATE kerberosApreqMessageSecurityBinding;
			public WS_SECURITY_CONTEXT_SECURITY_BINDING_TEMPLATE securityContextSecurityBinding;
		}
		[CRepr]
		public struct WEBAUTHN_RP_ENTITY_INFORMATION
		{
			public uint32 dwVersion;
			public PWSTR pwszId;
			public PWSTR pwszName;
			public PWSTR pwszIcon;
		}
		[CRepr]
		public struct WEBAUTHN_USER_ENTITY_INFORMATION
		{
			public uint32 dwVersion;
			public uint32 cbId;
			public uint8* pbId;
			public PWSTR pwszName;
			public PWSTR pwszIcon;
			public PWSTR pwszDisplayName;
		}
		[CRepr]
		public struct WEBAUTHN_CLIENT_DATA
		{
			public uint32 dwVersion;
			public uint32 cbClientDataJSON;
			public uint8* pbClientDataJSON;
			public PWSTR pwszHashAlgId;
		}
		[CRepr]
		public struct WEBAUTHN_COSE_CREDENTIAL_PARAMETER
		{
			public uint32 dwVersion;
			public PWSTR pwszCredentialType;
			public int32 lAlg;
		}
		[CRepr]
		public struct WEBAUTHN_COSE_CREDENTIAL_PARAMETERS
		{
			public uint32 cCredentialParameters;
			public WEBAUTHN_COSE_CREDENTIAL_PARAMETER* pCredentialParameters;
		}
		[CRepr]
		public struct WEBAUTHN_CREDENTIAL
		{
			public uint32 dwVersion;
			public uint32 cbId;
			public uint8* pbId;
			public PWSTR pwszCredentialType;
		}
		[CRepr]
		public struct WEBAUTHN_CREDENTIALS
		{
			public uint32 cCredentials;
			public WEBAUTHN_CREDENTIAL* pCredentials;
		}
		[CRepr]
		public struct WEBAUTHN_CREDENTIAL_EX
		{
			public uint32 dwVersion;
			public uint32 cbId;
			public uint8* pbId;
			public PWSTR pwszCredentialType;
			public uint32 dwTransports;
		}
		[CRepr]
		public struct WEBAUTHN_CREDENTIAL_LIST
		{
			public uint32 cCredentials;
			public WEBAUTHN_CREDENTIAL_EX** ppCredentials;
		}
		[CRepr]
		public struct WEBAUTHN_CRED_PROTECT_EXTENSION_IN
		{
			public uint32 dwCredProtect;
			public BOOL bRequireCredProtect;
		}
		[CRepr]
		public struct WEBAUTHN_CRED_BLOB_EXTENSION
		{
			public uint32 cbCredBlob;
			public uint8* pbCredBlob;
		}
		[CRepr]
		public struct WEBAUTHN_EXTENSION
		{
			public PWSTR pwszExtensionIdentifier;
			public uint32 cbExtension;
			public void* pvExtension;
		}
		[CRepr]
		public struct WEBAUTHN_EXTENSIONS
		{
			public uint32 cExtensions;
			public WEBAUTHN_EXTENSION* pExtensions;
		}
		[CRepr]
		public struct WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS
		{
			public uint32 dwVersion;
			public uint32 dwTimeoutMilliseconds;
			public WEBAUTHN_CREDENTIALS CredentialList;
			public WEBAUTHN_EXTENSIONS Extensions;
			public uint32 dwAuthenticatorAttachment;
			public BOOL bRequireResidentKey;
			public uint32 dwUserVerificationRequirement;
			public uint32 dwAttestationConveyancePreference;
			public uint32 dwFlags;
			public Guid* pCancellationId;
			public WEBAUTHN_CREDENTIAL_LIST* pExcludeCredentialList;
			public uint32 dwEnterpriseAttestation;
			public uint32 dwLargeBlobSupport;
			public BOOL bPreferResidentKey;
		}
		[CRepr]
		public struct WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS
		{
			public uint32 dwVersion;
			public uint32 dwTimeoutMilliseconds;
			public WEBAUTHN_CREDENTIALS CredentialList;
			public WEBAUTHN_EXTENSIONS Extensions;
			public uint32 dwAuthenticatorAttachment;
			public uint32 dwUserVerificationRequirement;
			public uint32 dwFlags;
			public PWSTR pwszU2fAppId;
			public BOOL* pbU2fAppId;
			public Guid* pCancellationId;
			public WEBAUTHN_CREDENTIAL_LIST* pAllowCredentialList;
			public uint32 dwCredLargeBlobOperation;
			public uint32 cbCredLargeBlob;
			public uint8* pbCredLargeBlob;
		}
		[CRepr]
		public struct WEBAUTHN_X5C
		{
			public uint32 cbData;
			public uint8* pbData;
		}
		[CRepr]
		public struct WEBAUTHN_COMMON_ATTESTATION
		{
			public uint32 dwVersion;
			public PWSTR pwszAlg;
			public int32 lAlg;
			public uint32 cbSignature;
			public uint8* pbSignature;
			public uint32 cX5c;
			public WEBAUTHN_X5C* pX5c;
			public PWSTR pwszVer;
			public uint32 cbCertInfo;
			public uint8* pbCertInfo;
			public uint32 cbPubArea;
			public uint8* pbPubArea;
		}
		[CRepr]
		public struct WEBAUTHN_CREDENTIAL_ATTESTATION
		{
			public uint32 dwVersion;
			public PWSTR pwszFormatType;
			public uint32 cbAuthenticatorData;
			public uint8* pbAuthenticatorData;
			public uint32 cbAttestation;
			public uint8* pbAttestation;
			public uint32 dwAttestationDecodeType;
			public void* pvAttestationDecode;
			public uint32 cbAttestationObject;
			public uint8* pbAttestationObject;
			public uint32 cbCredentialId;
			public uint8* pbCredentialId;
			public WEBAUTHN_EXTENSIONS Extensions;
			public uint32 dwUsedTransport;
			public BOOL bEpAtt;
			public BOOL bLargeBlobSupported;
			public BOOL bResidentKey;
		}
		[CRepr]
		public struct WEBAUTHN_ASSERTION
		{
			public uint32 dwVersion;
			public uint32 cbAuthenticatorData;
			public uint8* pbAuthenticatorData;
			public uint32 cbSignature;
			public uint8* pbSignature;
			public WEBAUTHN_CREDENTIAL Credential;
			public uint32 cbUserId;
			public uint8* pbUserId;
			public WEBAUTHN_EXTENSIONS Extensions;
			public uint32 cbCredLargeBlob;
			public uint8* pbCredLargeBlob;
			public uint32 dwCredLargeBlobStatus;
		}
		
		// --- COM Interfaces ---
		
		[CRepr]
		public struct IContentPrefetcherTaskTrigger : IInspectable
		{
			public const new Guid IID = .(0x1b35a14a, 0x6094, 0x4799, 0xa6, 0x0e, 0xe4, 0x74, 0xe1, 0x5d, 0x4d, 0xc9);
			
			public new VTable* VT { get => (.)vt; }
			
			public HRESULT TriggerContentPrefetcherTask(PWSTR packageFullName) mut => VT.TriggerContentPrefetcherTask(ref this, packageFullName);
			public HRESULT IsRegisteredForContentPrefetch(PWSTR packageFullName, out uint8 isRegistered) mut => VT.IsRegisteredForContentPrefetch(ref this, packageFullName, out isRegistered);

			[CRepr]
			public struct VTable : IInspectable.VTable
			{
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IContentPrefetcherTaskTrigger self, PWSTR packageFullName) TriggerContentPrefetcherTask;
				public new function [CallingConvention(.Stdcall)] HRESULT(ref IContentPrefetcherTaskTrigger self, PWSTR packageFullName, out uint8 isRegistered) IsRegisteredForContentPrefetch;
			}
		}
		
		// --- Functions ---
		
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsStartReaderCanonicalization(ref WS_XML_READER reader, WS_WRITE_CALLBACK writeCallback, void* writeCallbackState, WS_XML_CANONICALIZATION_PROPERTY* properties, uint32 propertyCount, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsEndReaderCanonicalization(ref WS_XML_READER reader, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsStartWriterCanonicalization(ref WS_XML_WRITER writer, WS_WRITE_CALLBACK writeCallback, void* writeCallbackState, WS_XML_CANONICALIZATION_PROPERTY* properties, uint32 propertyCount, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsEndWriterCanonicalization(ref WS_XML_WRITER writer, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsCreateXmlBuffer(ref WS_HEAP heap, WS_XML_BUFFER_PROPERTY* properties, uint32 propertyCount, out WS_XML_BUFFER* buffer, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsRemoveNode(in WS_XML_NODE_POSITION nodePosition, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsCreateReader(WS_XML_READER_PROPERTY* properties, uint32 propertyCount, out WS_XML_READER* reader, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsSetInput(ref WS_XML_READER reader, WS_XML_READER_ENCODING* encoding, WS_XML_READER_INPUT* input, WS_XML_READER_PROPERTY* properties, uint32 propertyCount, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsSetInputToBuffer(ref WS_XML_READER reader, ref WS_XML_BUFFER buffer, WS_XML_READER_PROPERTY* properties, uint32 propertyCount, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern void WsFreeReader(ref WS_XML_READER reader);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsGetReaderProperty(ref WS_XML_READER reader, WS_XML_READER_PROPERTY_ID id, void* value, uint32 valueSize, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsGetReaderNode(ref WS_XML_READER xmlReader, out WS_XML_NODE* node, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsFillReader(ref WS_XML_READER reader, uint32 minSize, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsReadStartElement(ref WS_XML_READER reader, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsReadToStartElement(ref WS_XML_READER reader, WS_XML_STRING* localName, WS_XML_STRING* ns, BOOL* found, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsReadStartAttribute(ref WS_XML_READER reader, uint32 attributeIndex, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsReadEndAttribute(ref WS_XML_READER reader, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsReadNode(ref WS_XML_READER reader, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsSkipNode(ref WS_XML_READER reader, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsReadEndElement(ref WS_XML_READER reader, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsFindAttribute(ref WS_XML_READER reader, in WS_XML_STRING localName, in WS_XML_STRING ns, BOOL required, out uint32 attributeIndex, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsReadValue(ref WS_XML_READER reader, WS_VALUE_TYPE valueType, void* value, uint32 valueSize, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsReadChars(ref WS_XML_READER reader, char16* chars, uint32 maxCharCount, out uint32 actualCharCount, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsReadCharsUtf8(ref WS_XML_READER reader, uint8* bytes, uint32 maxByteCount, out uint32 actualByteCount, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsReadBytes(ref WS_XML_READER reader, void* bytes, uint32 maxByteCount, out uint32 actualByteCount, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsReadArray(ref WS_XML_READER reader, in WS_XML_STRING localName, in WS_XML_STRING ns, WS_VALUE_TYPE valueType, void* array, uint32 arraySize, uint32 itemOffset, uint32 itemCount, out uint32 actualItemCount, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsGetReaderPosition(ref WS_XML_READER reader, out WS_XML_NODE_POSITION nodePosition, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsSetReaderPosition(ref WS_XML_READER reader, in WS_XML_NODE_POSITION nodePosition, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsMoveReader(ref WS_XML_READER reader, WS_MOVE_TO moveTo, BOOL* found, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsCreateWriter(WS_XML_WRITER_PROPERTY* properties, uint32 propertyCount, out WS_XML_WRITER* writer, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern void WsFreeWriter(ref WS_XML_WRITER writer);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsSetOutput(ref WS_XML_WRITER writer, WS_XML_WRITER_ENCODING* encoding, WS_XML_WRITER_OUTPUT* output, WS_XML_WRITER_PROPERTY* properties, uint32 propertyCount, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsSetOutputToBuffer(ref WS_XML_WRITER writer, ref WS_XML_BUFFER buffer, WS_XML_WRITER_PROPERTY* properties, uint32 propertyCount, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsGetWriterProperty(ref WS_XML_WRITER writer, WS_XML_WRITER_PROPERTY_ID id, void* value, uint32 valueSize, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsFlushWriter(ref WS_XML_WRITER writer, uint32 minSize, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsWriteStartElement(ref WS_XML_WRITER writer, WS_XML_STRING* prefix, in WS_XML_STRING localName, in WS_XML_STRING ns, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsWriteEndStartElement(ref WS_XML_WRITER writer, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsWriteXmlnsAttribute(ref WS_XML_WRITER writer, WS_XML_STRING* prefix, in WS_XML_STRING ns, BOOL singleQuote, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsWriteStartAttribute(ref WS_XML_WRITER writer, WS_XML_STRING* prefix, in WS_XML_STRING localName, in WS_XML_STRING ns, BOOL singleQuote, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsWriteEndAttribute(ref WS_XML_WRITER writer, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsWriteValue(ref WS_XML_WRITER writer, WS_VALUE_TYPE valueType, void* value, uint32 valueSize, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsWriteXmlBuffer(ref WS_XML_WRITER writer, ref WS_XML_BUFFER xmlBuffer, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsReadXmlBuffer(ref WS_XML_READER reader, ref WS_HEAP heap, out WS_XML_BUFFER* xmlBuffer, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsWriteXmlBufferToBytes(ref WS_XML_WRITER writer, ref WS_XML_BUFFER xmlBuffer, WS_XML_WRITER_ENCODING* encoding, WS_XML_WRITER_PROPERTY* properties, uint32 propertyCount, ref WS_HEAP heap, void** bytes, out uint32 byteCount, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsReadXmlBufferFromBytes(ref WS_XML_READER reader, WS_XML_READER_ENCODING* encoding, WS_XML_READER_PROPERTY* properties, uint32 propertyCount, void* bytes, uint32 byteCount, ref WS_HEAP heap, out WS_XML_BUFFER* xmlBuffer, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsWriteArray(ref WS_XML_WRITER writer, in WS_XML_STRING localName, in WS_XML_STRING ns, WS_VALUE_TYPE valueType, void* array, uint32 arraySize, uint32 itemOffset, uint32 itemCount, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsWriteQualifiedName(ref WS_XML_WRITER writer, WS_XML_STRING* prefix, in WS_XML_STRING localName, WS_XML_STRING* ns, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsWriteChars(ref WS_XML_WRITER writer, char16* chars, uint32 charCount, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsWriteCharsUtf8(ref WS_XML_WRITER writer, uint8* bytes, uint32 byteCount, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsWriteBytes(ref WS_XML_WRITER writer, void* bytes, uint32 byteCount, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsPushBytes(ref WS_XML_WRITER writer, WS_PUSH_BYTES_CALLBACK callback, void* callbackState, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsPullBytes(ref WS_XML_WRITER writer, WS_PULL_BYTES_CALLBACK callback, void* callbackState, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsWriteEndElement(ref WS_XML_WRITER writer, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsWriteText(ref WS_XML_WRITER writer, in WS_XML_TEXT text, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsWriteStartCData(ref WS_XML_WRITER writer, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsWriteEndCData(ref WS_XML_WRITER writer, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsWriteNode(ref WS_XML_WRITER writer, in WS_XML_NODE node, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsGetPrefixFromNamespace(ref WS_XML_WRITER writer, in WS_XML_STRING ns, BOOL required, out WS_XML_STRING* prefix, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsGetWriterPosition(ref WS_XML_WRITER writer, out WS_XML_NODE_POSITION nodePosition, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsSetWriterPosition(ref WS_XML_WRITER writer, in WS_XML_NODE_POSITION nodePosition, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsMoveWriter(ref WS_XML_WRITER writer, WS_MOVE_TO moveTo, BOOL* found, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsTrimXmlWhitespace(char16* chars, uint32 charCount, out uint16* trimmedChars, out uint32 trimmedCount, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsVerifyXmlNCName(char16* ncNameChars, uint32 ncNameCharCount, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsXmlStringEquals(in WS_XML_STRING string1, in WS_XML_STRING string2, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsGetNamespaceFromPrefix(ref WS_XML_READER reader, in WS_XML_STRING prefix, BOOL required, out WS_XML_STRING* ns, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsReadQualifiedName(ref WS_XML_READER reader, ref WS_HEAP heap, WS_XML_STRING* prefix, out WS_XML_STRING localName, WS_XML_STRING* ns, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsGetXmlAttribute(ref WS_XML_READER reader, in WS_XML_STRING localName, ref WS_HEAP heap, uint16** valueChars, out uint32 valueCharCount, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsCopyNode(ref WS_XML_WRITER writer, ref WS_XML_READER reader, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsAsyncExecute(ref WS_ASYNC_STATE asyncState, WS_ASYNC_FUNCTION operation, WS_CALLBACK_MODEL callbackModel, void* callbackState, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsCreateChannel(WS_CHANNEL_TYPE channelType, WS_CHANNEL_BINDING channelBinding, WS_CHANNEL_PROPERTY* properties, uint32 propertyCount, WS_SECURITY_DESCRIPTION* securityDescription, out WS_CHANNEL* channel, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsOpenChannel(ref WS_CHANNEL channel, in WS_ENDPOINT_ADDRESS endpointAddress, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsSendMessage(ref WS_CHANNEL channel, ref WS_MESSAGE message, in WS_MESSAGE_DESCRIPTION messageDescription, WS_WRITE_OPTION writeOption, void* bodyValue, uint32 bodyValueSize, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsReceiveMessage(ref WS_CHANNEL channel, ref WS_MESSAGE message, WS_MESSAGE_DESCRIPTION** messageDescriptions, uint32 messageDescriptionCount, WS_RECEIVE_OPTION receiveOption, WS_READ_OPTION readBodyOption, WS_HEAP* heap, void* value, uint32 valueSize, uint32* index, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsRequestReply(ref WS_CHANNEL channel, ref WS_MESSAGE requestMessage, in WS_MESSAGE_DESCRIPTION requestMessageDescription, WS_WRITE_OPTION writeOption, void* requestBodyValue, uint32 requestBodyValueSize, ref WS_MESSAGE replyMessage, in WS_MESSAGE_DESCRIPTION replyMessageDescription, WS_READ_OPTION readOption, WS_HEAP* heap, void* value, uint32 valueSize, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsSendReplyMessage(ref WS_CHANNEL channel, ref WS_MESSAGE replyMessage, in WS_MESSAGE_DESCRIPTION replyMessageDescription, WS_WRITE_OPTION writeOption, void* replyBodyValue, uint32 replyBodyValueSize, ref WS_MESSAGE requestMessage, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsSendFaultMessageForError(ref WS_CHANNEL channel, ref WS_MESSAGE replyMessage, ref WS_ERROR faultError, HRESULT faultErrorCode, WS_FAULT_DISCLOSURE faultDisclosure, ref WS_MESSAGE requestMessage, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsGetChannelProperty(ref WS_CHANNEL channel, WS_CHANNEL_PROPERTY_ID id, void* value, uint32 valueSize, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsSetChannelProperty(ref WS_CHANNEL channel, WS_CHANNEL_PROPERTY_ID id, void* value, uint32 valueSize, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsWriteMessageStart(ref WS_CHANNEL channel, ref WS_MESSAGE message, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsWriteMessageEnd(ref WS_CHANNEL channel, ref WS_MESSAGE message, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsReadMessageStart(ref WS_CHANNEL channel, ref WS_MESSAGE message, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsReadMessageEnd(ref WS_CHANNEL channel, ref WS_MESSAGE message, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsCloseChannel(ref WS_CHANNEL channel, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsAbortChannel(ref WS_CHANNEL channel, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern void WsFreeChannel(ref WS_CHANNEL channel);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsResetChannel(ref WS_CHANNEL channel, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsAbandonMessage(ref WS_CHANNEL channel, ref WS_MESSAGE message, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsShutdownSessionChannel(ref WS_CHANNEL channel, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsGetOperationContextProperty(in WS_OPERATION_CONTEXT context, WS_OPERATION_CONTEXT_PROPERTY_ID id, void* value, uint32 valueSize, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsGetDictionary(WS_ENCODING encoding, WS_XML_DICTIONARY** dictionary, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsReadEndpointAddressExtension(ref WS_XML_READER reader, ref WS_ENDPOINT_ADDRESS endpointAddress, WS_ENDPOINT_ADDRESS_EXTENSION_TYPE extensionType, WS_READ_OPTION readOption, ref WS_HEAP heap, void* value, uint32 valueSize, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsCreateError(WS_ERROR_PROPERTY* properties, uint32 propertyCount, out WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsAddErrorString(ref WS_ERROR error, in WS_STRING string);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsGetErrorString(ref WS_ERROR error, uint32 index, out WS_STRING string);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsCopyError(ref WS_ERROR source, ref WS_ERROR destination);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsGetErrorProperty(ref WS_ERROR error, WS_ERROR_PROPERTY_ID id, void* buffer, uint32 bufferSize);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsSetErrorProperty(ref WS_ERROR error, WS_ERROR_PROPERTY_ID id, void* value, uint32 valueSize);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsResetError(ref WS_ERROR error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern void WsFreeError(ref WS_ERROR error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsGetFaultErrorProperty(ref WS_ERROR error, WS_FAULT_ERROR_PROPERTY_ID id, void* buffer, uint32 bufferSize);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsSetFaultErrorProperty(ref WS_ERROR error, WS_FAULT_ERROR_PROPERTY_ID id, void* value, uint32 valueSize);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsCreateFaultFromError(ref WS_ERROR error, HRESULT faultErrorCode, WS_FAULT_DISCLOSURE faultDisclosure, ref WS_HEAP heap, out WS_FAULT fault);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsSetFaultErrorDetail(ref WS_ERROR error, in WS_FAULT_DETAIL_DESCRIPTION faultDetailDescription, WS_WRITE_OPTION writeOption, void* value, uint32 valueSize);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsGetFaultErrorDetail(ref WS_ERROR error, in WS_FAULT_DETAIL_DESCRIPTION faultDetailDescription, WS_READ_OPTION readOption, WS_HEAP* heap, void* value, uint32 valueSize);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsCreateHeap(uint maxSize, uint trimSize, WS_HEAP_PROPERTY* properties, uint32 propertyCount, out WS_HEAP* heap, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsAlloc(ref WS_HEAP heap, uint size, void** ptr, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsGetHeapProperty(ref WS_HEAP heap, WS_HEAP_PROPERTY_ID id, void* value, uint32 valueSize, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsResetHeap(ref WS_HEAP heap, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern void WsFreeHeap(ref WS_HEAP heap);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsCreateListener(WS_CHANNEL_TYPE channelType, WS_CHANNEL_BINDING channelBinding, WS_LISTENER_PROPERTY* properties, uint32 propertyCount, WS_SECURITY_DESCRIPTION* securityDescription, out WS_LISTENER* listener, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsOpenListener(ref WS_LISTENER listener, in WS_STRING url, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsAcceptChannel(ref WS_LISTENER listener, ref WS_CHANNEL channel, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsCloseListener(ref WS_LISTENER listener, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsAbortListener(ref WS_LISTENER listener, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsResetListener(ref WS_LISTENER listener, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern void WsFreeListener(ref WS_LISTENER listener);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsGetListenerProperty(ref WS_LISTENER listener, WS_LISTENER_PROPERTY_ID id, void* value, uint32 valueSize, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsSetListenerProperty(ref WS_LISTENER listener, WS_LISTENER_PROPERTY_ID id, void* value, uint32 valueSize, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsCreateChannelForListener(ref WS_LISTENER listener, WS_CHANNEL_PROPERTY* properties, uint32 propertyCount, out WS_CHANNEL* channel, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsCreateMessage(WS_ENVELOPE_VERSION envelopeVersion, WS_ADDRESSING_VERSION addressingVersion, WS_MESSAGE_PROPERTY* properties, uint32 propertyCount, out WS_MESSAGE* message, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsCreateMessageForChannel(ref WS_CHANNEL channel, WS_MESSAGE_PROPERTY* properties, uint32 propertyCount, out WS_MESSAGE* message, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsInitializeMessage(ref WS_MESSAGE message, WS_MESSAGE_INITIALIZATION initialization, WS_MESSAGE* sourceMessage, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsResetMessage(ref WS_MESSAGE message, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern void WsFreeMessage(ref WS_MESSAGE message);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsGetHeaderAttributes(ref WS_MESSAGE message, ref WS_XML_READER reader, out uint32 headerAttributes, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsGetHeader(ref WS_MESSAGE message, WS_HEADER_TYPE headerType, WS_TYPE valueType, WS_READ_OPTION readOption, WS_HEAP* heap, void* value, uint32 valueSize, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsGetCustomHeader(ref WS_MESSAGE message, in WS_ELEMENT_DESCRIPTION customHeaderDescription, WS_REPEATING_HEADER_OPTION repeatingOption, uint32 headerIndex, WS_READ_OPTION readOption, WS_HEAP* heap, void* value, uint32 valueSize, uint32* headerAttributes, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsRemoveHeader(ref WS_MESSAGE message, WS_HEADER_TYPE headerType, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsSetHeader(ref WS_MESSAGE message, WS_HEADER_TYPE headerType, WS_TYPE valueType, WS_WRITE_OPTION writeOption, void* value, uint32 valueSize, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsRemoveCustomHeader(ref WS_MESSAGE message, in WS_XML_STRING headerName, in WS_XML_STRING headerNs, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsAddCustomHeader(ref WS_MESSAGE message, in WS_ELEMENT_DESCRIPTION headerDescription, WS_WRITE_OPTION writeOption, void* value, uint32 valueSize, uint32 headerAttributes, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsAddMappedHeader(ref WS_MESSAGE message, in WS_XML_STRING headerName, WS_TYPE valueType, WS_WRITE_OPTION writeOption, void* value, uint32 valueSize, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsRemoveMappedHeader(ref WS_MESSAGE message, in WS_XML_STRING headerName, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsGetMappedHeader(ref WS_MESSAGE message, in WS_XML_STRING headerName, WS_REPEATING_HEADER_OPTION repeatingOption, uint32 headerIndex, WS_TYPE valueType, WS_READ_OPTION readOption, WS_HEAP* heap, void* value, uint32 valueSize, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsWriteBody(ref WS_MESSAGE message, in WS_ELEMENT_DESCRIPTION bodyDescription, WS_WRITE_OPTION writeOption, void* value, uint32 valueSize, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsReadBody(ref WS_MESSAGE message, in WS_ELEMENT_DESCRIPTION bodyDescription, WS_READ_OPTION readOption, WS_HEAP* heap, void* value, uint32 valueSize, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsWriteEnvelopeStart(ref WS_MESSAGE message, ref WS_XML_WRITER writer, WS_MESSAGE_DONE_CALLBACK doneCallback, void* doneCallbackState, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsWriteEnvelopeEnd(ref WS_MESSAGE message, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsReadEnvelopeStart(ref WS_MESSAGE message, ref WS_XML_READER reader, WS_MESSAGE_DONE_CALLBACK doneCallback, void* doneCallbackState, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsReadEnvelopeEnd(ref WS_MESSAGE message, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsGetMessageProperty(ref WS_MESSAGE message, WS_MESSAGE_PROPERTY_ID id, void* value, uint32 valueSize, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsSetMessageProperty(ref WS_MESSAGE message, WS_MESSAGE_PROPERTY_ID id, void* value, uint32 valueSize, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsAddressMessage(ref WS_MESSAGE message, WS_ENDPOINT_ADDRESS* address, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsCheckMustUnderstandHeaders(ref WS_MESSAGE message, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsMarkHeaderAsUnderstood(ref WS_MESSAGE message, in WS_XML_NODE_POSITION headerPosition, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsFillBody(ref WS_MESSAGE message, uint32 minSize, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsFlushBody(ref WS_MESSAGE message, uint32 minSize, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsRequestSecurityToken(ref WS_CHANNEL channel, WS_REQUEST_SECURITY_TOKEN_PROPERTY* properties, uint32 propertyCount, out WS_SECURITY_TOKEN* token, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsGetSecurityTokenProperty(ref WS_SECURITY_TOKEN securityToken, WS_SECURITY_TOKEN_PROPERTY_ID id, void* value, uint32 valueSize, WS_HEAP* heap, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsCreateXmlSecurityToken(WS_XML_BUFFER* tokenXml, WS_SECURITY_KEY_HANDLE* tokenKey, WS_XML_SECURITY_TOKEN_PROPERTY* properties, uint32 propertyCount, out WS_SECURITY_TOKEN* token, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern void WsFreeSecurityToken(ref WS_SECURITY_TOKEN token);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsRevokeSecurityContext(ref WS_SECURITY_CONTEXT securityContext, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsGetSecurityContextProperty(ref WS_SECURITY_CONTEXT securityContext, WS_SECURITY_CONTEXT_PROPERTY_ID id, void* value, uint32 valueSize, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsReadElement(ref WS_XML_READER reader, in WS_ELEMENT_DESCRIPTION elementDescription, WS_READ_OPTION readOption, WS_HEAP* heap, void* value, uint32 valueSize, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsReadAttribute(ref WS_XML_READER reader, in WS_ATTRIBUTE_DESCRIPTION attributeDescription, WS_READ_OPTION readOption, WS_HEAP* heap, void* value, uint32 valueSize, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsReadType(ref WS_XML_READER reader, WS_TYPE_MAPPING typeMapping, WS_TYPE type, void* typeDescription, WS_READ_OPTION readOption, WS_HEAP* heap, void* value, uint32 valueSize, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsWriteElement(ref WS_XML_WRITER writer, in WS_ELEMENT_DESCRIPTION elementDescription, WS_WRITE_OPTION writeOption, void* value, uint32 valueSize, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsWriteAttribute(ref WS_XML_WRITER writer, in WS_ATTRIBUTE_DESCRIPTION attributeDescription, WS_WRITE_OPTION writeOption, void* value, uint32 valueSize, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsWriteType(ref WS_XML_WRITER writer, WS_TYPE_MAPPING typeMapping, WS_TYPE type, void* typeDescription, WS_WRITE_OPTION writeOption, void* value, uint32 valueSize, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsRegisterOperationForCancel(in WS_OPERATION_CONTEXT context, WS_OPERATION_CANCEL_CALLBACK cancelCallback, WS_OPERATION_FREE_STATE_CALLBACK freestateCallback, void* userState, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsGetServiceHostProperty(ref WS_SERVICE_HOST serviceHost, WS_SERVICE_PROPERTY_ID id, void* value, uint32 valueSize, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsCreateServiceHost(WS_SERVICE_ENDPOINT** endpoints, uint16 endpointCount, WS_SERVICE_PROPERTY* serviceProperties, uint32 servicePropertyCount, out WS_SERVICE_HOST* serviceHost, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsOpenServiceHost(ref WS_SERVICE_HOST serviceHost, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsCloseServiceHost(ref WS_SERVICE_HOST serviceHost, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsAbortServiceHost(ref WS_SERVICE_HOST serviceHost, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern void WsFreeServiceHost(ref WS_SERVICE_HOST serviceHost);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsResetServiceHost(ref WS_SERVICE_HOST serviceHost, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsGetServiceProxyProperty(ref WS_SERVICE_PROXY serviceProxy, WS_PROXY_PROPERTY_ID id, void* value, uint32 valueSize, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsCreateServiceProxy(WS_CHANNEL_TYPE channelType, WS_CHANNEL_BINDING channelBinding, WS_SECURITY_DESCRIPTION* securityDescription, WS_PROXY_PROPERTY* properties, uint32 propertyCount, WS_CHANNEL_PROPERTY* channelProperties, uint32 channelPropertyCount, out WS_SERVICE_PROXY* serviceProxy, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsOpenServiceProxy(ref WS_SERVICE_PROXY serviceProxy, in WS_ENDPOINT_ADDRESS address, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsCloseServiceProxy(ref WS_SERVICE_PROXY serviceProxy, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsAbortServiceProxy(ref WS_SERVICE_PROXY serviceProxy, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern void WsFreeServiceProxy(ref WS_SERVICE_PROXY serviceProxy);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsResetServiceProxy(ref WS_SERVICE_PROXY serviceProxy, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsAbandonCall(ref WS_SERVICE_PROXY serviceProxy, uint32 callId, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsCall(ref WS_SERVICE_PROXY serviceProxy, in WS_OPERATION_DESCRIPTION operation, void** arguments, ref WS_HEAP heap, WS_CALL_PROPERTY* callProperties, uint32 callPropertyCount, WS_ASYNC_CONTEXT* asyncContext, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsDecodeUrl(in WS_STRING url, uint32 flags, ref WS_HEAP heap, out WS_URL* outUrl, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsEncodeUrl(in WS_URL url, uint32 flags, ref WS_HEAP heap, out WS_STRING outUrl, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsCombineUrl(in WS_STRING baseUrl, in WS_STRING referenceUrl, uint32 flags, ref WS_HEAP heap, out WS_STRING resultUrl, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsDateTimeToFileTime(in WS_DATETIME dateTime, out FILETIME fileTime, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsFileTimeToDateTime(in FILETIME fileTime, out WS_DATETIME dateTime, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsCreateMetadata(WS_METADATA_PROPERTY* properties, uint32 propertyCount, out WS_METADATA* metadata, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsReadMetadata(ref WS_METADATA metadata, ref WS_XML_READER reader, in WS_STRING url, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern void WsFreeMetadata(ref WS_METADATA metadata);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsResetMetadata(ref WS_METADATA metadata, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsGetMetadataProperty(ref WS_METADATA metadata, WS_METADATA_PROPERTY_ID id, void* value, uint32 valueSize, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsGetMissingMetadataDocumentAddress(ref WS_METADATA metadata, WS_ENDPOINT_ADDRESS** address, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsGetMetadataEndpoints(ref WS_METADATA metadata, out WS_METADATA_ENDPOINTS endpoints, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsMatchPolicyAlternative(ref WS_POLICY policy, uint32 alternativeIndex, ref WS_POLICY_CONSTRAINTS policyConstraints, BOOL matchRequired, ref WS_HEAP heap, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsGetPolicyProperty(ref WS_POLICY policy, WS_POLICY_PROPERTY_ID id, void* value, uint32 valueSize, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsGetPolicyAlternativeCount(ref WS_POLICY policy, out uint32 count, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsCreateServiceProxyFromTemplate(WS_CHANNEL_TYPE channelType, WS_PROXY_PROPERTY* properties, uint32 propertyCount, WS_BINDING_TEMPLATE_TYPE templateType, void* templateValue, uint32 templateSize, void* templateDescription, uint32 templateDescriptionSize, out WS_SERVICE_PROXY* serviceProxy, WS_ERROR* error);
		[Import("webservices.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WsCreateServiceEndpointFromTemplate(WS_CHANNEL_TYPE channelType, WS_SERVICE_ENDPOINT_PROPERTY* properties, uint32 propertyCount, WS_STRING* addressUrl, in WS_SERVICE_CONTRACT contract, WS_SERVICE_SECURITY_CALLBACK authorizationCallback, ref WS_HEAP heap, WS_BINDING_TEMPLATE_TYPE templateType, void* templateValue, uint32 templateSize, void* templateDescription, uint32 templateDescriptionSize, out WS_SERVICE_ENDPOINT* serviceEndpoint, WS_ERROR* error);
		[Import("webauthn.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern uint32 WebAuthNGetApiVersionNumber();
		[Import("webauthn.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WebAuthNIsUserVerifyingPlatformAuthenticatorAvailable(out BOOL pbIsUserVerifyingPlatformAuthenticatorAvailable);
		[Import("webauthn.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WebAuthNAuthenticatorMakeCredential(HWND hWnd, ref WEBAUTHN_RP_ENTITY_INFORMATION pRpInformation, ref WEBAUTHN_USER_ENTITY_INFORMATION pUserInformation, ref WEBAUTHN_COSE_CREDENTIAL_PARAMETERS pPubKeyCredParams, ref WEBAUTHN_CLIENT_DATA pWebAuthNClientData, WEBAUTHN_AUTHENTICATOR_MAKE_CREDENTIAL_OPTIONS* pWebAuthNMakeCredentialOptions, WEBAUTHN_CREDENTIAL_ATTESTATION** ppWebAuthNCredentialAttestation);
		[Import("webauthn.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WebAuthNAuthenticatorGetAssertion(HWND hWnd, PWSTR pwszRpId, ref WEBAUTHN_CLIENT_DATA pWebAuthNClientData, WEBAUTHN_AUTHENTICATOR_GET_ASSERTION_OPTIONS* pWebAuthNGetAssertionOptions, WEBAUTHN_ASSERTION** ppWebAuthNAssertion);
		[Import("webauthn.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern void WebAuthNFreeCredentialAttestation(WEBAUTHN_CREDENTIAL_ATTESTATION* pWebAuthNCredentialAttestation);
		[Import("webauthn.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern void WebAuthNFreeAssertion(ref WEBAUTHN_ASSERTION pWebAuthNAssertion);
		[Import("webauthn.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WebAuthNGetCancellationId(out Guid pCancellationId);
		[Import("webauthn.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WebAuthNCancelCurrentOperation(in Guid pCancellationId);
		[Import("webauthn.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern PWSTR WebAuthNGetErrorName(HRESULT hr);
		[Import("webauthn.dll"), CLink, CallingConvention(.Stdcall)]
		public static extern HRESULT WebAuthNGetW3CExceptionDOMError(HRESULT hr);
	}
}
