/** * This file has no copyright assigned and is placed in the Public Domain. * This file is part of the mingw-w64 runtime package. * No warranty is given; refer to the file DISCLAIMER.PD within this package. */ #ifndef _INC_P2P #define _INC_P2P #if (_WIN32_WINNT >= 0x0600) #ifdef __cplusplus extern "C" { #endif typedef enum _PEER_APPLICATION_REGISTRATION_TYPE { PEER_APPLICATION_CURRENT_USER, PEER_APPLICATION_ALL_USERS } PEER_APPLICATION_REGISTRATION_TYPE, PEER_APPLICATION_REGISTRATION_FLAGS; typedef enum _PEER_CHANGE_TYPE { PEER_CHANGE_ADDED, PEER_CHANGE_DELETED, PEER_CHANGE_UPDATED } PEER_CHANGE_TYPE; typedef enum _PEER_COLLAB_EVENT_TYPE { PEER_EVENT_WATCHLIST_CHANGED, PEER_EVENT_ENDPOINT_CHANGED, PEER_EVENT_ENDPOINT_PRESENCE_CHANGED, PEER_EVENT_ENDPOINT_APPLICATION_CHANGED, PEER_EVENT_ENDPOINT_OBJECT_CHANGED, PEER_EVENT_MY_ENDPOINT_CHANGED, PEER_EVENT_MY_PRESENCE_CHANGED, PEER_EVENT_MY_APPLICATION_CHANGED, PEER_EVENT_MY_OBJECT_CHANGED, PEER_EVENT_PEOPLE_NEAR_ME_CHANGED, PEER_EVENT_REQUEST_STATUS_CHANGED } PEER_COLLAB_EVENT_TYPE; typedef enum _PEER_GROUP_AUTHENTICATION_SCHEME { PEER_GROUP_GMC_AUTHENTICATION = 0x00000001, PEER_GROUP_PASSWORD_AUTHENTICATION = 0x00000002 } PEER_GROUP_AUTHENTICATION_SCHEME; typedef enum _PEER_GROUP_ISSUE_CREDENTIAL_FLAGS { PEER_GROUP_STORE_CREDENTIALS = 0x0001 } PEER_GROUP_ISSUE_CREDENTIAL_FLAGS; typedef enum _PEER_INVITATION_RESPONSE_TYPE { PEER_INVITATION_RESPONSE_DECLINED, PEER_INVITATION_RESPONSE_ACCEPTED, PEER_INVITATION_RESPONSE_EXPIRED, PEER_INVITATION_RESPONSE_ERROR } PEER_INVITATION_RESPONSE_TYPE; typedef enum _PEER_PRESENCE_STATUS { PEER_PRESENCE_OFFLINE, PEER_PRESENCE_OUT_TO_LUNCH, PEER_PRESENCE_AWAY, PEER_PRESENCE_BE_RIGHT_BACK, PEER_PRESENCE_IDLE, PEER_PRESENCE_BUSY, PEER_PRESENCE_ON_THE_PHONE, PEER_PRESENCE_ONLINE } PEER_PRESENCE_STATUS; typedef enum _PEER_PUBLICATION_SCOPE { PEER_PUBLICATION_SCOPE_NONE, PEER_PUBLICATION_SCOPE_NEAR_ME, PEER_PUBLICATION_SCOPE_INTERNET, PEER_PUBLICATION_SCOPE_ALL } PEER_PUBLICATION_SCOPE; typedef enum _PEER_SIGNIN_FLAGS { PEER_SIGNIN_NONE, PEER_SIGNIN_NEAR_ME, PEER_SIGNIN_INTERNET, PEER_SIGNIN_ALL } PEER_SIGNIN_FLAGS; typedef enum _PEER_WATCH_PERMISSION { PEER_WATCH_BLOCKED, PEER_WATCH_ALLOWED } PEER_WATCH_PERMISSION; typedef struct _PEER_CONTACT *PPEER_CONTACT; typedef struct _PEER_ENDPOINT *PPEER_ENDPOINT; typedef struct _PEER_INVITATION *PPEER_INVITATION; typedef struct _PEER_OBJECT *PPEER_OBJECT; typedef struct _PEER_PEOPLE_NEAR_ME *PPEER_PEOPLE_NEAR_ME; typedef struct _PEER_PRESENCE_INFO *PPEER_PRESENCE_INFO; typedef LPVOID HPEERENUM; typedef LPVOID HPEEREVENT; typedef struct peer_address_tag { DWORD dwSize; SOCKADDR_IN6 sin6; } PEER_ADDRESS, *PPEER_ADDRESS; typedef struct _PEER_APP_LAUNCH_INFO { PPEER_CONTACT pContact; PPEER_ENDPOINT pEndpoint; PPEER_INVITATION pInvitation; } PEER_APP_LAUNCH_INFO, *PPEER_APP_LAUNCH_INFO; typedef const PEER_APP_LAUNCH_INFO *PCPEER_APP_LAUNCH_INFO; typedef struct peer_data_tag { ULONG cbData; PBYTE pbData; } PEER_DATA, *PPEER_DATA; typedef struct _PEER_APPLICATION { GUID id; PEER_DATA data; PWSTR pwzDescription; } PEER_APPLICATION, *PPEER_APPLICATION; typedef const PEER_APPLICATION *PCPEER_APPLICATION; typedef struct _PEER_APPLICATION_REGISTRATION_INFO { PEER_APPLICATION application; PWSTR pwzApplicationToLaunch; PWSTR pwzApplicationArguments; DWORD dwPublicationScope; } PEER_APPLICATION_REGISTRATION_INFO, *PPEER_APPLICATION_REGISTRATION_INFO; typedef const PEER_APPLICATION_REGISTRATION_INFO *PCPEER_APPLICATION_REGISTRATION_INFO; typedef struct _PEER_EVENT_APPLICATION_CHANGED_DATA { PPEER_CONTACT pContact; PPEER_ENDPOINT pEndpoint; PEER_CHANGE_TYPE changeType; PPEER_APPLICATION pApplication; } PEER_EVENT_APPLICATION_CHANGED_DATA, *PPEER_EVENT_APPLICATION_CHANGED_DATA; typedef struct _PEER_EVENT_ENDPOINT_CHANGED_DATA { PPEER_CONTACT pContact; PPEER_ENDPOINT pEndpoint; } PEER_EVENT_ENDPOINT_CHANGED_DATA, *PPEER_EVENT_ENDPOINT_CHANGED_DATA; typedef struct _PEER_EVENT_OBJECT_CHANGED_DATA { PPEER_CONTACT pContact; PPEER_ENDPOINT pEndpoint; PEER_CHANGE_TYPE changeType; PPEER_OBJECT pObject; } PEER_EVENT_OBJECT_CHANGED_DATA, *PPEER_EVENT_OBJECT_CHANGED_DATA; typedef struct _PEER_EVENT_PEOPLE_NEAR_ME_CHANGED_DATA { PEER_CHANGE_TYPE changeType; PPEER_PEOPLE_NEAR_ME pPeopleNearMe; } PEER_EVENT_PEOPLE_NEAR_ME_CHANGED_DATA, *PPEER_EVENT_PEOPLE_NEAR_ME_CHANGED_DATA; typedef struct _PEER_EVENT_PRESENCE_CHANGED_DATA { PPEER_CONTACT pContact; PPEER_ENDPOINT pEndpoint; PEER_CHANGE_TYPE changeType; PPEER_PRESENCE_INFO pPresenceInfo; } PEER_EVENT_PRESENCE_CHANGED_DATA, *PPEER_EVENT_PRESENCE_CHANGED_DATA; typedef struct _PEER_EVENT_REQUEST_STATUS_CHANGED_DATA { PPEER_ENDPOINT pEndpoint; HRESULT hrChange; } PEER_EVENT_REQUEST_STATUS_CHANGED_DATA, *PPEER_EVENT_REQUEST_STATUS_CHANGED_DATA; typedef struct _PEER_EVENT_WATCHLIST_CHANGED_DATA { PPEER_CONTACT pContact; PEER_CHANGE_TYPE changeType; } PEER_EVENT_WATCHLIST_CHANGED_DATA, *PPEER_EVENT_WATCHLIST_CHANGED_DATA; typedef struct _PEER_INVITATION { GUID applicationId; PEER_DATA applicationData; PWSTR pwzMessage; } PEER_INVITATION, *PPEER_INVITATION; typedef const PEER_INVITATION *PCPEER_INVITATION; typedef union _PEER_COLLAB_EVENT_DATA { PEER_COLLAB_EVENT_TYPE eventType; __C89_NAMELESS union { PEER_EVENT_WATCHLIST_CHANGED_DATA watchlistChangedData; PEER_EVENT_PRESENCE_CHANGED_DATA presenceChangedData; PEER_EVENT_APPLICATION_CHANGED_DATA applicationChangedData; PEER_EVENT_OBJECT_CHANGED_DATA objectChangedData; PEER_EVENT_ENDPOINT_CHANGED_DATA endpointChangedData; PEER_EVENT_PEOPLE_NEAR_ME_CHANGED_DATA peopleNearMeChangedData; PEER_EVENT_REQUEST_STATUS_CHANGED_DATA requestStatusChangedData; } DUMMYUNIONNAME; } PEER_COLLAB_EVENT_DATA, *PPEER_COLLAB_EVENT_DATA; typedef struct _PEER_COLLAB_EVENT_REGISTRATION{ PEER_COLLAB_EVENT_TYPE eventType; GUID * pInstance; } PEER_COLLAB_EVENT_REGISTRATION, *PPEER_COLLAB_EVENT_REGISTRATION; typedef const PEER_COLLAB_EVENT_REGISTRATION *PCPEER_COLLAB_EVENT_REGISTRATION; typedef struct { PEER_INVITATION_RESPONSE_TYPE action; PWSTR pwzMessage; HRESULT hrExtendedInfo; } PEER_INVITATION_RESPONSE, *PPEER_INVITATION_RESPONSE; typedef const PEER_INVITATION_RESPONSE *PCPEER_INVITATION_RESPONSE; typedef struct _PEER_CONTACT { PWSTR pwzPeerName; PWSTR pwzNickName; PWSTR pwzDisplayName; PWSTR pwzEmailAddress; WINBOOL fWatch; PEER_WATCH_PERMISSION WatcherPermissions; PEER_DATA credentials; } PEER_CONTACT, *PPEER_CONTACT; typedef const PEER_CONTACT *PCPEER_CONTACT; typedef struct _PEER_ENDPOINT { PEER_ADDRESS address; PWSTR pwzEndpointName; } PEER_ENDPOINT, *PPEER_ENDPOINT; typedef const PEER_ENDPOINT *PCPEER_ENDPOINT; typedef struct _PEER_OBJECT { GUID id; PEER_DATA data; DWORD dwPublicationScope; } PEER_OBJECT, *PPEER_OBJECT; typedef const PEER_OBJECT *PCPEER_OBJECT; typedef struct _PEER_PEOPLE_NEAR_ME { PWSTR pwzNickName; PEER_ENDPOINT endpoint; GUID id; } PEER_PEOPLE_NEAR_ME, *PPEER_PEOPLE_NEAR_ME, *PCPEER_PEOPLE_NEAR_ME, **PPPEER_PEOPLE_NEAR_ME; typedef struct _PEER_PRESENCE_INFO { PEER_PRESENCE_STATUS status; PWSTR pwzDescriptiveText; } PEER_PRESENCE_INFO, *PPEER_PRESENCE_INFO; typedef const PEER_PRESENCE_INFO *PCPEER_PRESENCE_INFO; HRESULT WINAPI PeerCollabAddContact( PCWSTR pwzContactData, PPEER_CONTACT *ppContact ); HRESULT WINAPI PeerCollabAsyncInviteContact( PCPEER_CONTACT pcContact, PPEER_ENDPOINT pcEndpoint, PCPEER_INVITATION pcInvitation, HANDLE hEvent, HANDLE *phInvitation ); HRESULT WINAPI PeerCollabAsyncInviteEndpoint( PPEER_ENDPOINT pcEndpoint, PCPEER_INVITATION pcInvitation, HANDLE hEvent, HANDLE *phInvitation ); HRESULT WINAPI PeerCollabCancelInvitation( HANDLE hInvitation ); HRESULT WINAPI PeerCollabCloseHandle( HANDLE handle ); HRESULT WINAPI PeerCollabDeleteContact( PCWSTR pwzPeerName ); HRESULT WINAPI PeerCollabDeleteEndpointData( PCPEER_ENDPOINT pcEndpoint ); HRESULT WINAPI PeerCollabDeleteObject( const GUID *pObjectId ); HRESULT WINAPI PeerCollabEnumApplicationRegistrationInfo( PEER_APPLICATION_REGISTRATION_TYPE registrationType, HPEERENUM *phPeerEnum ); HRESULT WINAPI PeerCollabEnumApplications( PCPEER_ENDPOINT pcEndpoint, const GUID *pApplicationId, HPEERENUM *phPeerEnum ); HRESULT WINAPI PeerCollabEnumContacts( HPEERENUM *phPeerEnum ); HRESULT WINAPI PeerCollabEnumEndpoints( PCPEER_CONTACT pcContact, HPEERENUM *phPeerEnum ); HRESULT WINAPI PeerCollabEnumObjects( PCPEER_ENDPOINT pcEndpoint, const GUID *pObjectId, HPEERENUM *phPeerEnum ); HRESULT WINAPI PeerCollabEnumPeopleNearMe( HPEERENUM *phPeerEnum ); HRESULT WINAPI PeerCollabExportContact( PWSTR pwzPeerName, PWSTR *ppwzContactData ); HRESULT WINAPI PeerCollabGetAppLaunchInfo( PPEER_APP_LAUNCH_INFO *ppLaunchInfo ); HRESULT WINAPI PeerCollabGetApplicationRegistrationInfo( const GUID *pApplicationId, PEER_APPLICATION_REGISTRATION_TYPE registrationType, PPEER_APPLICATION_REGISTRATION_INFO *ppRegInfo ); HRESULT WINAPI PeerCollabGetContact( PWSTR pwzPeerName, PCPEER_CONTACT *ppContact ); HRESULT WINAPI PeerCollabGetEndpointName( PWSTR *ppwzEndpointName ); HRESULT WINAPI PeerCollabGetEventData( HPEEREVENT hPeerEvent, PPEER_COLLAB_EVENT_DATA *ppEventData ); HRESULT WINAPI PeerCollabGetInvitationResponse( HANDLE hInvitation, PPEER_INVITATION_RESPONSE *ppInvitationResponse ); HRESULT WINAPI PeerCollabGetPresenceInfo( PCPEER_ENDPOINT pEndpoint, PPEER_PRESENCE_INFO *ppPresenceInfo ); HRESULT WINAPI PeerCollabGetSigninOptions( DWORD *dwSigninOptions ); HRESULT WINAPI PeerCollabInviteContact( PCPEER_CONTACT pcContact, PCPEER_ENDPOINT pcEndpoint, const PCPEER_INVITATION pcInvitation, PPEER_INVITATION_RESPONSE *ppResponse ); HRESULT WINAPI PeerCollabInviteEndpoint( PCPEER_ENDPOINT pcEndpoint, PCPEER_INVITATION pcInvitation, PPEER_INVITATION_RESPONSE *ppResponse ); HRESULT WINAPI PeerCollabParseContact( PWSTR pwzContactData, PCPEER_CONTACT *ppContact ); HRESULT WINAPI PeerCollabQueryContactData( PCPEER_ENDPOINT pcEndpoint, PWSTR *ppwzContactData ); HRESULT WINAPI PeerCollabRefreshEndpointData( PCPEER_ENDPOINT pcEndpoint ); HRESULT WINAPI PeerCollabRegisterApplication( PCPEER_APPLICATION_REGISTRATION_INFO pcApplication, PEER_APPLICATION_REGISTRATION_FLAGS registrationType ); HRESULT WINAPI PeerCollabRegisterEvent( HANDLE hEvent, DWORD cEventRegistration, PPEER_COLLAB_EVENT_REGISTRATION pEventRegistrations, HPEEREVENT *phPeerEvent ); HRESULT WINAPI PeerCollabSetEndpointName( PCWSTR pwzEndpointName ); HRESULT WINAPI PeerCollabSetObject( PCPEER_OBJECT pcObject ); HRESULT WINAPI PeerCollabSetPresenceInfo( PCPEER_PRESENCE_INFO pcPresenceInfo ); HRESULT WINAPI PeerCollabShutdown(void); HRESULT WINAPI PeerCollabSignin( HWND hwndParent, DWORD dwSigninOptions ); HRESULT WINAPI PeerCollabSignout( DWORD dwSignoutOptions ); HRESULT WINAPI PeerCollabStartup( WORD wVersionRequested ); HRESULT WINAPI PeerCollabSubscribeEndpointData( PCPEER_ENDPOINT pcEndpoint ); HRESULT WINAPI PeerCollabUnregisterApplication( const GUID *pApplicationID, PEER_APPLICATION_REGISTRATION_FLAGS registrationType ); HRESULT WINAPI PeerCollabUnregisterEvent( HPEEREVENT hPeerEvent ); HRESULT WINAPI PeerCollabUnsubscribeEndpointData( PCPEER_ENDPOINT pcEndpoint ); HRESULT WINAPI PeerCollabUpdateContact( PCPEER_CONTACT pContact ); #ifdef __cplusplus } #endif #endif /* (_WIN32_WINNT >= 0x0600) */ #endif /*_INC_P2P*/