internal unsafe static extern UInt32 PartyCreateNewNetwork(
     PARTY_HANDLE handle,
     PARTY_LOCAL_USER_HANDLE localUser,
     PARTY_NETWORK_CONFIGURATION *networkConfiguration,
     UInt32 regionCount,
     IntPtr regions,
     PARTY_INVITATION_CONFIGURATION *initialInvitationConfiguration,
     IntPtr asyncIdentifier,
     out PARTY_NETWORK_DESCRIPTOR networkDescriptor,
     IntPtr appliedInitialInvitationIdentifier);
 internal static UInt32 WrapAndReturnError(UInt32 error, Interop.PARTY_HANDLE interopHandle, out PARTY_HANDLE handle)
 {
     if (PartyError.SUCCEEDED(error))
     {
         handle = new PARTY_HANDLE(interopHandle);
     }
     else
     {
         handle = default(PARTY_HANDLE);
     }
     return(error);
 }
 unsafe internal static extern UInt32 PartyGetNetworks(
     PARTY_HANDLE handle,
     out UInt32 networkCount,
     out IntPtr networks);
 internal static extern UInt32 PartyCreateLocalUser(
     PARTY_HANDLE handle,
     Byte[] entityId,
     Byte[] titlePlayerEntityToken,
     out PARTY_LOCAL_USER_HANDLE localUser);
 internal static extern UInt32 PartyCleanup(
     PARTY_HANDLE handle);
 unsafe internal static extern UInt32 PartyGetLocalUsers(
     PARTY_HANDLE handle,
     out UInt32 userCount,
     out IntPtr users);
 internal static extern UInt32 PartyGetLocalDevice(
     PARTY_HANDLE handle,
     out PARTY_DEVICE_HANDLE localDevice);
 unsafe internal static extern UInt32 PartyStartProcessingStateChanges(
     PARTY_HANDLE handle,
     out UInt32 stateChangeCount,
     out IntPtr stateChanges);
 internal static extern UInt32 PartyInitialize(
     Byte[] titleId,
     out PARTY_HANDLE handle);
 internal static extern UInt32 PartyDestroyLocalUser(
     PARTY_HANDLE handle,
     PARTY_LOCAL_USER_HANDLE localUser,
     IntPtr asyncIdentifier);
 unsafe internal static extern UInt32 PartyGetRegions(
     PARTY_HANDLE handle,
     out UInt32 regionListCount,
     out IntPtr regionList);
 unsafe internal static extern UInt32 PartyConnectToNetwork(
     PARTY_HANDLE handle,
     PARTY_NETWORK_DESCRIPTOR *networkDescriptor,
     IntPtr asyncIdentifier,
     out PARTY_NETWORK_HANDLE network);
 unsafe internal static extern UInt32 PartyFinishProcessingStateChanges(
     PARTY_HANDLE handle,
     UInt32 stateChangeCount,
     IntPtr stateChanges);
 unsafe internal static extern UInt32 PartyGetChatControls(
     PARTY_HANDLE handle,
     out UInt32 chatControlCount,
     out IntPtr chatControls);
 internal static extern UInt32 PartySynchronizeMessagesBetweenEndpoints(
     PARTY_HANDLE handle,
     UInt32 endpointCount,
     [In] PARTY_ENDPOINT_HANDLE[] endpoints,
     PARTY_SYNCHRONIZE_MESSAGES_BETWEEN_ENDPOINTS_OPTIONS options,
     IntPtr asyncIdentifier);
 internal PARTY_HANDLE(Interop.PARTY_HANDLE interopHandle)
 {
     this.InteropHandle = interopHandle;
 }