//
// Copyright (c) Microsoft Corporation. All rights reserved.
// 
//
// File generated by WinMDIDL version 8.00.0021
//

import "inspectable.idl";
import "AsyncInfo.idl";
import "EventToken.idl";
import "windowscontracts.idl";
import "Windows.Foundation.idl";
import "Windows.Networking.idl";
import "Windows.Storage.Streams.idl";

// Forward Declare
namespace Windows
{
    namespace Foundation
    {
        interface IAsyncAction;
    }
}
namespace Windows
{
    namespace Networking
    {
        runtimeclass HostName;
    }
}
namespace Windows
{
    namespace Storage
    {
        namespace Streams
        {
            interface IBuffer;
        }
    }
}
namespace Windows
{
    namespace Networking
    {
        namespace XboxLive
        {
            apicontract XboxLiveSecureSocketsContract;

            typedef enum XboxLiveEndpointPairCreationBehaviors XboxLiveEndpointPairCreationBehaviors;

            typedef enum XboxLiveEndpointPairCreationStatus XboxLiveEndpointPairCreationStatus;

            typedef enum XboxLiveEndpointPairState XboxLiveEndpointPairState;

            typedef enum XboxLiveNetworkAccessKind XboxLiveNetworkAccessKind;

            typedef enum XboxLiveQualityOfServiceMeasurementStatus XboxLiveQualityOfServiceMeasurementStatus;

            typedef enum XboxLiveQualityOfServiceMetric XboxLiveQualityOfServiceMetric;

            typedef enum XboxLiveSocketKind XboxLiveSocketKind;

            interface IXboxLiveDeviceAddress;

            interface IXboxLiveDeviceAddressStatics;

            interface IXboxLiveEndpointPair;

            interface IXboxLiveEndpointPairCreationResult;

            interface IXboxLiveEndpointPairStateChangedEventArgs;

            interface IXboxLiveEndpointPairStatics;

            interface IXboxLiveEndpointPairTemplate;

            interface IXboxLiveEndpointPairTemplateStatics;

            interface IXboxLiveInboundEndpointPairCreatedEventArgs;

            interface IXboxLiveQualityOfServiceMeasurement;

            interface IXboxLiveQualityOfServiceMeasurementStatics;

            interface IXboxLiveQualityOfServiceMetricResult;

            interface IXboxLiveQualityOfServicePrivatePayloadResult;

            runtimeclass XboxLiveDeviceAddress;

            runtimeclass XboxLiveEndpointPair;

            runtimeclass XboxLiveEndpointPairCreationResult;

            runtimeclass XboxLiveEndpointPairStateChangedEventArgs;

            runtimeclass XboxLiveEndpointPairTemplate;

            runtimeclass XboxLiveInboundEndpointPairCreatedEventArgs;

            runtimeclass XboxLiveQualityOfServiceMeasurement;

            runtimeclass XboxLiveQualityOfServiceMetricResult;

            runtimeclass XboxLiveQualityOfServicePrivatePayloadResult;
        }
    }
}

// Generic instantiations
namespace Windows
{
    namespace Networking
    {
        namespace XboxLive
        {
            declare
            {
                interface Windows.Foundation.Collections.IIterable<Windows.Networking.XboxLive.XboxLiveDeviceAddress*>;

                interface Windows.Foundation.Collections.IIterable<Windows.Networking.XboxLive.XboxLiveEndpointPair*>;

                interface Windows.Foundation.Collections.IIterable<Windows.Networking.XboxLive.XboxLiveEndpointPairTemplate*>;

                interface Windows.Foundation.Collections.IIterable<Windows.Networking.XboxLive.XboxLiveQualityOfServiceMetric>;

                interface Windows.Foundation.Collections.IIterable<Windows.Networking.XboxLive.XboxLiveQualityOfServiceMetricResult*>;

                interface Windows.Foundation.Collections.IIterable<Windows.Networking.XboxLive.XboxLiveQualityOfServicePrivatePayloadResult*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Networking.XboxLive.XboxLiveDeviceAddress*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Networking.XboxLive.XboxLiveEndpointPair*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Networking.XboxLive.XboxLiveEndpointPairTemplate*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Networking.XboxLive.XboxLiveQualityOfServiceMetric>;

                interface Windows.Foundation.Collections.IIterator<Windows.Networking.XboxLive.XboxLiveQualityOfServiceMetricResult*>;

                interface Windows.Foundation.Collections.IIterator<Windows.Networking.XboxLive.XboxLiveQualityOfServicePrivatePayloadResult*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Networking.XboxLive.XboxLiveDeviceAddress*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Networking.XboxLive.XboxLiveEndpointPair*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Networking.XboxLive.XboxLiveEndpointPairTemplate*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Networking.XboxLive.XboxLiveQualityOfServiceMetric>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Networking.XboxLive.XboxLiveQualityOfServiceMetricResult*>;

                interface Windows.Foundation.Collections.IVectorView<Windows.Networking.XboxLive.XboxLiveQualityOfServicePrivatePayloadResult*>;

                interface Windows.Foundation.Collections.IVector<Windows.Networking.XboxLive.XboxLiveDeviceAddress*>;

                interface Windows.Foundation.Collections.IVector<Windows.Networking.XboxLive.XboxLiveQualityOfServiceMetric>;

                interface Windows.Foundation.IAsyncOperation<Windows.Networking.XboxLive.XboxLiveEndpointPairCreationResult*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Networking.XboxLive.XboxLiveDeviceAddress*, IInspectable*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Networking.XboxLive.XboxLiveEndpointPair*, Windows.Networking.XboxLive.XboxLiveEndpointPairStateChangedEventArgs*>;

                interface Windows.Foundation.TypedEventHandler<Windows.Networking.XboxLive.XboxLiveEndpointPairTemplate*, Windows.Networking.XboxLive.XboxLiveInboundEndpointPairCreatedEventArgs*>;
            }
        }
    }
}

// Type definition
namespace Windows
{
    namespace Networking
    {
        namespace XboxLive
        {
            [contractversion(1.0)]
            apicontract XboxLiveSecureSocketsContract
            {
            }

            [contract(Windows.Networking.XboxLive.XboxLiveSecureSocketsContract, 1.0)]
            [flags]
            enum XboxLiveEndpointPairCreationBehaviors
            {
                None           = 0x0,
                ReevaluatePath = 0x1
            };

            [contract(Windows.Networking.XboxLive.XboxLiveSecureSocketsContract, 1.0)]
            enum XboxLiveEndpointPairCreationStatus
            {
                Succeeded                 = 0,
                NoLocalNetworks           = 1,
                NoCompatibleNetworkPaths  = 2,
                LocalSystemNotAuthorized  = 3,
                Canceled                  = 4,
                TimedOut                  = 5,
                RemoteSystemNotAuthorized = 6,
                RefusedDueToConfiguration = 7,
                UnexpectedInternalError   = 8
            };

            [contract(Windows.Networking.XboxLive.XboxLiveSecureSocketsContract, 1.0)]
            enum XboxLiveEndpointPairState
            {
                Invalid                   = 0,
                CreatingOutbound          = 1,
                CreatingInbound           = 2,
                Ready                     = 3,
                DeletingLocally           = 4,
                RemoteEndpointTerminating = 5,
                Deleted                   = 6
            };

            [contract(Windows.Networking.XboxLive.XboxLiveSecureSocketsContract, 1.0)]
            enum XboxLiveNetworkAccessKind
            {
                Open     = 0,
                Moderate = 1,
                Strict   = 2
            };

            [contract(Windows.Networking.XboxLive.XboxLiveSecureSocketsContract, 1.0)]
            enum XboxLiveQualityOfServiceMeasurementStatus
            {
                NotStarted                       = 0,
                InProgress                       = 1,
                InProgressWithProvisionalResults = 2,
                Succeeded                        = 3,
                NoLocalNetworks                  = 4,
                NoCompatibleNetworkPaths         = 5,
                LocalSystemNotAuthorized         = 6,
                Canceled                         = 7,
                TimedOut                         = 8,
                RemoteSystemNotAuthorized        = 9,
                RefusedDueToConfiguration        = 10,
                UnexpectedInternalError          = 11
            };

            [contract(Windows.Networking.XboxLive.XboxLiveSecureSocketsContract, 1.0)]
            enum XboxLiveQualityOfServiceMetric
            {
                AverageLatencyInMilliseconds = 0,
                MinLatencyInMilliseconds     = 1,
                MaxLatencyInMilliseconds     = 2,
                AverageOutboundBitsPerSecond = 3,
                MinOutboundBitsPerSecond     = 4,
                MaxOutboundBitsPerSecond     = 5,
                AverageInboundBitsPerSecond  = 6,
                MinInboundBitsPerSecond      = 7,
                MaxInboundBitsPerSecond      = 8
            };

            [contract(Windows.Networking.XboxLive.XboxLiveSecureSocketsContract, 1.0)]
            enum XboxLiveSocketKind
            {
                None     = 0,
                Datagram = 1,
                Stream   = 2
            };

            [contract(Windows.Networking.XboxLive.XboxLiveSecureSocketsContract, 1.0)]
            [exclusiveto(Windows.Networking.XboxLive.XboxLiveDeviceAddress)]
            [uuid(F5BBD279-3C86-4B57-A31A-B9462408FD01)]
            interface IXboxLiveDeviceAddress : IInspectable
            {
                [eventadd] HRESULT SnapshotChanged([in] Windows.Foundation.TypedEventHandler<Windows.Networking.XboxLive.XboxLiveDeviceAddress*, IInspectable*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT SnapshotChanged([in] EventRegistrationToken token);
                HRESULT GetSnapshotAsBase64([out] [retval] HSTRING* value);
                HRESULT GetSnapshotAsBuffer([out] [retval] Windows.Storage.Streams.IBuffer** value);
                HRESULT GetSnapshotAsBytes([in] UINT32 __bufferSize, [out] [size_is(__bufferSize)] BYTE* buffer, [out] UINT32* bytesWritten);
                HRESULT Compare([in] Windows.Networking.XboxLive.XboxLiveDeviceAddress* otherDeviceAddress, [out] [retval] INT32* result);
                [propget] HRESULT IsValid([out] [retval] boolean* value);
                [propget] HRESULT IsLocal([out] [retval] boolean* value);
                [propget] HRESULT NetworkAccessKind([out] [retval] Windows.Networking.XboxLive.XboxLiveNetworkAccessKind* value);
            }

            [contract(Windows.Networking.XboxLive.XboxLiveSecureSocketsContract, 1.0)]
            [exclusiveto(Windows.Networking.XboxLive.XboxLiveDeviceAddress)]
            [uuid(5954A819-4A79-4931-827C-7F503E963263)]
            interface IXboxLiveDeviceAddressStatics : IInspectable
            {
                HRESULT CreateFromSnapshotBase64([in] HSTRING base64, [out] [retval] Windows.Networking.XboxLive.XboxLiveDeviceAddress** value);
                HRESULT CreateFromSnapshotBuffer([in] Windows.Storage.Streams.IBuffer* buffer, [out] [retval] Windows.Networking.XboxLive.XboxLiveDeviceAddress** value);
                HRESULT CreateFromSnapshotBytes([in] UINT32 __bufferSize, [in] [size_is(__bufferSize)] BYTE* buffer, [out] [retval] Windows.Networking.XboxLive.XboxLiveDeviceAddress** value);
                HRESULT GetLocal([out] [retval] Windows.Networking.XboxLive.XboxLiveDeviceAddress** value);
                [propget] HRESULT MaxSnapshotBytesSize([out] [retval] UINT32* value);
            }

            [contract(Windows.Networking.XboxLive.XboxLiveSecureSocketsContract, 1.0)]
            [exclusiveto(Windows.Networking.XboxLive.XboxLiveEndpointPair)]
            [uuid(1E9A839B-813E-44E0-B87F-C87A093475E4)]
            interface IXboxLiveEndpointPair : IInspectable
            {
                [eventadd] HRESULT StateChanged([in] Windows.Foundation.TypedEventHandler<Windows.Networking.XboxLive.XboxLiveEndpointPair*, Windows.Networking.XboxLive.XboxLiveEndpointPairStateChangedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT StateChanged([in] EventRegistrationToken token);
                HRESULT DeleteAsync([out] [retval] Windows.Foundation.IAsyncAction** action);
                HRESULT GetRemoteSocketAddressBytes([in] UINT32 __socketAddressSize, [out] [size_is(__socketAddressSize)] BYTE* socketAddress);
                HRESULT GetLocalSocketAddressBytes([in] UINT32 __socketAddressSize, [out] [size_is(__socketAddressSize)] BYTE* socketAddress);
                [propget] HRESULT State([out] [retval] Windows.Networking.XboxLive.XboxLiveEndpointPairState* value);
                [propget] HRESULT Template([out] [retval] Windows.Networking.XboxLive.XboxLiveEndpointPairTemplate** value);
                [propget] HRESULT RemoteDeviceAddress([out] [retval] Windows.Networking.XboxLive.XboxLiveDeviceAddress** value);
                [propget] HRESULT RemoteHostName([out] [retval] Windows.Networking.HostName** value);
                [propget] HRESULT RemotePort([out] [retval] HSTRING* value);
                [propget] HRESULT LocalHostName([out] [retval] Windows.Networking.HostName** value);
                [propget] HRESULT LocalPort([out] [retval] HSTRING* value);
            }

            [contract(Windows.Networking.XboxLive.XboxLiveSecureSocketsContract, 1.0)]
            [exclusiveto(Windows.Networking.XboxLive.XboxLiveEndpointPairCreationResult)]
            [uuid(D9A8BB95-2AAB-4D1E-9794-33ECC0DCF0FE)]
            interface IXboxLiveEndpointPairCreationResult : IInspectable
            {
                [propget] HRESULT DeviceAddress([out] [retval] Windows.Networking.XboxLive.XboxLiveDeviceAddress** value);
                [propget] HRESULT Status([out] [retval] Windows.Networking.XboxLive.XboxLiveEndpointPairCreationStatus* value);
                [propget] HRESULT IsExistingPathEvaluation([out] [retval] boolean* value);
                [propget] HRESULT EndpointPair([out] [retval] Windows.Networking.XboxLive.XboxLiveEndpointPair** value);
            }

            [contract(Windows.Networking.XboxLive.XboxLiveSecureSocketsContract, 1.0)]
            [exclusiveto(Windows.Networking.XboxLive.XboxLiveEndpointPairStateChangedEventArgs)]
            [uuid(592E3B55-DE08-44E7-AC3B-B9B9A169583A)]
            interface IXboxLiveEndpointPairStateChangedEventArgs : IInspectable
            {
                [propget] HRESULT OldState([out] [retval] Windows.Networking.XboxLive.XboxLiveEndpointPairState* value);
                [propget] HRESULT NewState([out] [retval] Windows.Networking.XboxLive.XboxLiveEndpointPairState* value);
            }

            [contract(Windows.Networking.XboxLive.XboxLiveSecureSocketsContract, 1.0)]
            [exclusiveto(Windows.Networking.XboxLive.XboxLiveEndpointPair)]
            [uuid(64316B30-217A-4243-8EE1-6729281D27DB)]
            interface IXboxLiveEndpointPairStatics : IInspectable
            {
                HRESULT FindEndpointPairBySocketAddressBytes([in] UINT32 __localSocketAddressSize, [in] [size_is(__localSocketAddressSize)] BYTE* localSocketAddress, [in] UINT32 __remoteSocketAddressSize, [in] [size_is(__remoteSocketAddressSize)] BYTE* remoteSocketAddress, [out] [retval] Windows.Networking.XboxLive.XboxLiveEndpointPair** endpointPair);
                HRESULT FindEndpointPairByHostNamesAndPorts([in] Windows.Networking.HostName* localHostName, [in] HSTRING localPort, [in] Windows.Networking.HostName* remoteHostName, [in] HSTRING remotePort, [out] [retval] Windows.Networking.XboxLive.XboxLiveEndpointPair** endpointPair);
            }

            [contract(Windows.Networking.XboxLive.XboxLiveSecureSocketsContract, 1.0)]
            [exclusiveto(Windows.Networking.XboxLive.XboxLiveEndpointPairTemplate)]
            [uuid(6B286ECF-3457-40CE-B9A1-C0CFE0213EA7)]
            interface IXboxLiveEndpointPairTemplate : IInspectable
            {
                [eventadd] HRESULT InboundEndpointPairCreated([in] Windows.Foundation.TypedEventHandler<Windows.Networking.XboxLive.XboxLiveEndpointPairTemplate*, Windows.Networking.XboxLive.XboxLiveInboundEndpointPairCreatedEventArgs*>* handler, [out] [retval] EventRegistrationToken* token);
                [eventremove] HRESULT InboundEndpointPairCreated([in] EventRegistrationToken token);
                [default_overload] [overload("CreateEndpointPairAsync")] HRESULT CreateEndpointPairDefaultAsync([in] Windows.Networking.XboxLive.XboxLiveDeviceAddress* deviceAddress, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Networking.XboxLive.XboxLiveEndpointPairCreationResult*>** operation);
                [default_overload] [overload("CreateEndpointPairAsync")] HRESULT CreateEndpointPairWithBehaviorsAsync([in] Windows.Networking.XboxLive.XboxLiveDeviceAddress* deviceAddress, [in] Windows.Networking.XboxLive.XboxLiveEndpointPairCreationBehaviors behaviors, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Networking.XboxLive.XboxLiveEndpointPairCreationResult*>** operation);
                [default_overload] [overload("CreateEndpointPairForPortsAsync")] HRESULT CreateEndpointPairForPortsDefaultAsync([in] Windows.Networking.XboxLive.XboxLiveDeviceAddress* deviceAddress, [in] HSTRING initiatorPort, [in] HSTRING acceptorPort, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Networking.XboxLive.XboxLiveEndpointPairCreationResult*>** operation);
                [default_overload] [overload("CreateEndpointPairForPortsAsync")] HRESULT CreateEndpointPairForPortsWithBehaviorsAsync([in] Windows.Networking.XboxLive.XboxLiveDeviceAddress* deviceAddress, [in] HSTRING initiatorPort, [in] HSTRING acceptorPort, [in] Windows.Networking.XboxLive.XboxLiveEndpointPairCreationBehaviors behaviors, [out] [retval] Windows.Foundation.IAsyncOperation<Windows.Networking.XboxLive.XboxLiveEndpointPairCreationResult*>** operation);
                [propget] HRESULT Name([out] [retval] HSTRING* value);
                [propget] HRESULT SocketKind([out] [retval] Windows.Networking.XboxLive.XboxLiveSocketKind* value);
                [propget] HRESULT InitiatorBoundPortRangeLower([out] [retval] UINT16* value);
                [propget] HRESULT InitiatorBoundPortRangeUpper([out] [retval] UINT16* value);
                [propget] HRESULT AcceptorBoundPortRangeLower([out] [retval] UINT16* value);
                [propget] HRESULT AcceptorBoundPortRangeUpper([out] [retval] UINT16* value);
                [propget] HRESULT EndpointPairs([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Networking.XboxLive.XboxLiveEndpointPair*>** value);
            }

            [contract(Windows.Networking.XboxLive.XboxLiveSecureSocketsContract, 1.0)]
            [exclusiveto(Windows.Networking.XboxLive.XboxLiveEndpointPairTemplate)]
            [uuid(1E13137B-737B-4A23-BC64-0870F75655BA)]
            interface IXboxLiveEndpointPairTemplateStatics : IInspectable
            {
                HRESULT GetTemplateByName([in] HSTRING name, [out] [retval] Windows.Networking.XboxLive.XboxLiveEndpointPairTemplate** namedTemplate);
                [propget] HRESULT Templates([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Networking.XboxLive.XboxLiveEndpointPairTemplate*>** value);
            }

            [contract(Windows.Networking.XboxLive.XboxLiveSecureSocketsContract, 1.0)]
            [exclusiveto(Windows.Networking.XboxLive.XboxLiveInboundEndpointPairCreatedEventArgs)]
            [uuid(DC183B62-22BA-48D2-80DE-C23968BD198B)]
            interface IXboxLiveInboundEndpointPairCreatedEventArgs : IInspectable
            {
                [propget] HRESULT EndpointPair([out] [retval] Windows.Networking.XboxLive.XboxLiveEndpointPair** value);
            }

            [contract(Windows.Networking.XboxLive.XboxLiveSecureSocketsContract, 1.0)]
            [exclusiveto(Windows.Networking.XboxLive.XboxLiveQualityOfServiceMeasurement)]
            [uuid(4D682BCE-A5D6-47E6-A236-CFDE5FBDF2ED)]
            interface IXboxLiveQualityOfServiceMeasurement : IInspectable
            {
                HRESULT MeasureAsync([out] [retval] Windows.Foundation.IAsyncAction** action);
                HRESULT GetMetricResultsForDevice([in] Windows.Networking.XboxLive.XboxLiveDeviceAddress* deviceAddress, [out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Networking.XboxLive.XboxLiveQualityOfServiceMetricResult*>** value);
                HRESULT GetMetricResultsForMetric([in] Windows.Networking.XboxLive.XboxLiveQualityOfServiceMetric metric, [out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Networking.XboxLive.XboxLiveQualityOfServiceMetricResult*>** value);
                HRESULT GetMetricResult([in] Windows.Networking.XboxLive.XboxLiveDeviceAddress* deviceAddress, [in] Windows.Networking.XboxLive.XboxLiveQualityOfServiceMetric metric, [out] [retval] Windows.Networking.XboxLive.XboxLiveQualityOfServiceMetricResult** value);
                HRESULT GetPrivatePayloadResult([in] Windows.Networking.XboxLive.XboxLiveDeviceAddress* deviceAddress, [out] [retval] Windows.Networking.XboxLive.XboxLiveQualityOfServicePrivatePayloadResult** value);
                [propget] HRESULT Metrics([out] [retval] Windows.Foundation.Collections.IVector<Windows.Networking.XboxLive.XboxLiveQualityOfServiceMetric>** value);
                [propget] HRESULT DeviceAddresses([out] [retval] Windows.Foundation.Collections.IVector<Windows.Networking.XboxLive.XboxLiveDeviceAddress*>** value);
                [propget] HRESULT ShouldRequestPrivatePayloads([out] [retval] boolean* value);
                [propput] HRESULT ShouldRequestPrivatePayloads([in] boolean value);
                [propget] HRESULT TimeoutInMilliseconds([out] [retval] UINT32* value);
                [propput] HRESULT TimeoutInMilliseconds([in] UINT32 value);
                [propget] HRESULT NumberOfProbesToAttempt([out] [retval] UINT32* value);
                [propput] HRESULT NumberOfProbesToAttempt([in] UINT32 value);
                [propget] HRESULT NumberOfResultsPending([out] [retval] UINT32* value);
                [propget] HRESULT MetricResults([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Networking.XboxLive.XboxLiveQualityOfServiceMetricResult*>** value);
                [propget] HRESULT PrivatePayloadResults([out] [retval] Windows.Foundation.Collections.IVectorView<Windows.Networking.XboxLive.XboxLiveQualityOfServicePrivatePayloadResult*>** value);
            }

            [contract(Windows.Networking.XboxLive.XboxLiveSecureSocketsContract, 1.0)]
            [exclusiveto(Windows.Networking.XboxLive.XboxLiveQualityOfServiceMeasurement)]
            [uuid(6E352DCA-23CF-440A-B077-5E30857A8234)]
            interface IXboxLiveQualityOfServiceMeasurementStatics : IInspectable
            {
                HRESULT PublishPrivatePayloadBytes([in] UINT32 __payloadSize, [in] [size_is(__payloadSize)] BYTE* payload);
                HRESULT ClearPrivatePayload();
                [propget] HRESULT MaxSimultaneousProbeConnections([out] [retval] UINT32* value);
                [propput] HRESULT MaxSimultaneousProbeConnections([in] UINT32 value);
                [propget] HRESULT IsSystemOutboundBandwidthConstrained([out] [retval] boolean* value);
                [propput] HRESULT IsSystemOutboundBandwidthConstrained([in] boolean value);
                [propget] HRESULT IsSystemInboundBandwidthConstrained([out] [retval] boolean* value);
                [propput] HRESULT IsSystemInboundBandwidthConstrained([in] boolean value);
                [propget] HRESULT PublishedPrivatePayload([out] [retval] Windows.Storage.Streams.IBuffer** value);
                [propput] HRESULT PublishedPrivatePayload([in] Windows.Storage.Streams.IBuffer* value);
                [propget] HRESULT MaxPrivatePayloadSize([out] [retval] UINT32* value);
            }

            [contract(Windows.Networking.XboxLive.XboxLiveSecureSocketsContract, 1.0)]
            [exclusiveto(Windows.Networking.XboxLive.XboxLiveQualityOfServiceMetricResult)]
            [uuid(AEEC53D1-3561-4782-B0CF-D3AE29D9FA87)]
            interface IXboxLiveQualityOfServiceMetricResult : IInspectable
            {
                [propget] HRESULT Status([out] [retval] Windows.Networking.XboxLive.XboxLiveQualityOfServiceMeasurementStatus* value);
                [propget] HRESULT DeviceAddress([out] [retval] Windows.Networking.XboxLive.XboxLiveDeviceAddress** value);
                [propget] HRESULT Metric([out] [retval] Windows.Networking.XboxLive.XboxLiveQualityOfServiceMetric* value);
                [propget] HRESULT Value([out] [retval] UINT64* value);
            }

            [contract(Windows.Networking.XboxLive.XboxLiveSecureSocketsContract, 1.0)]
            [exclusiveto(Windows.Networking.XboxLive.XboxLiveQualityOfServicePrivatePayloadResult)]
            [uuid(5A6302AE-6F38-41C0-9FCC-EA6CB978CAFC)]
            interface IXboxLiveQualityOfServicePrivatePayloadResult : IInspectable
            {
                [propget] HRESULT Status([out] [retval] Windows.Networking.XboxLive.XboxLiveQualityOfServiceMeasurementStatus* value);
                [propget] HRESULT DeviceAddress([out] [retval] Windows.Networking.XboxLive.XboxLiveDeviceAddress** value);
                [propget] HRESULT Value([out] [retval] Windows.Storage.Streams.IBuffer** value);
            }

            [contract(Windows.Networking.XboxLive.XboxLiveSecureSocketsContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Networking.XboxLive.IXboxLiveDeviceAddressStatics, Windows.Networking.XboxLive.XboxLiveSecureSocketsContract, 1.0)]
            [threading(both)]
            runtimeclass XboxLiveDeviceAddress
            {
                [default] interface Windows.Networking.XboxLive.IXboxLiveDeviceAddress;
            }

            [contract(Windows.Networking.XboxLive.XboxLiveSecureSocketsContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Networking.XboxLive.IXboxLiveEndpointPairStatics, Windows.Networking.XboxLive.XboxLiveSecureSocketsContract, 1.0)]
            [threading(both)]
            runtimeclass XboxLiveEndpointPair
            {
                [default] interface Windows.Networking.XboxLive.IXboxLiveEndpointPair;
            }

            [contract(Windows.Networking.XboxLive.XboxLiveSecureSocketsContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass XboxLiveEndpointPairCreationResult
            {
                [default] interface Windows.Networking.XboxLive.IXboxLiveEndpointPairCreationResult;
            }

            [contract(Windows.Networking.XboxLive.XboxLiveSecureSocketsContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass XboxLiveEndpointPairStateChangedEventArgs
            {
                [default] interface Windows.Networking.XboxLive.IXboxLiveEndpointPairStateChangedEventArgs;
            }

            [contract(Windows.Networking.XboxLive.XboxLiveSecureSocketsContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Networking.XboxLive.IXboxLiveEndpointPairTemplateStatics, Windows.Networking.XboxLive.XboxLiveSecureSocketsContract, 1.0)]
            [threading(both)]
            runtimeclass XboxLiveEndpointPairTemplate
            {
                [default] interface Windows.Networking.XboxLive.IXboxLiveEndpointPairTemplate;
            }

            [contract(Windows.Networking.XboxLive.XboxLiveSecureSocketsContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass XboxLiveInboundEndpointPairCreatedEventArgs
            {
                [default] interface Windows.Networking.XboxLive.IXboxLiveInboundEndpointPairCreatedEventArgs;
            }

            [activatable(Windows.Networking.XboxLive.XboxLiveSecureSocketsContract, 1.0)]
            [contract(Windows.Networking.XboxLive.XboxLiveSecureSocketsContract, 1.0)]
            [marshaling_behavior(agile)]
            [static(Windows.Networking.XboxLive.IXboxLiveQualityOfServiceMeasurementStatics, Windows.Networking.XboxLive.XboxLiveSecureSocketsContract, 1.0)]
            [threading(both)]
            runtimeclass XboxLiveQualityOfServiceMeasurement
            {
                [default] interface Windows.Networking.XboxLive.IXboxLiveQualityOfServiceMeasurement;
            }

            [contract(Windows.Networking.XboxLive.XboxLiveSecureSocketsContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass XboxLiveQualityOfServiceMetricResult
            {
                [default] interface Windows.Networking.XboxLive.IXboxLiveQualityOfServiceMetricResult;
            }

            [contract(Windows.Networking.XboxLive.XboxLiveSecureSocketsContract, 1.0)]
            [marshaling_behavior(agile)]
            [threading(both)]
            runtimeclass XboxLiveQualityOfServicePrivatePayloadResult
            {
                [default] interface Windows.Networking.XboxLive.IXboxLiveQualityOfServicePrivatePayloadResult;
            }
        }
    }
}
