270 lines
10 KiB
C
270 lines
10 KiB
C
#ifndef _INODECNT_H_
|
||
#define _INODECNT_H_
|
||
|
||
typedef void * REQUEST_HANDLE;
|
||
typedef REQUEST_HANDLE * PREQUEST_HANDLE;
|
||
typedef void * ROSTER_DATA_HANDLE;
|
||
|
||
typedef struct T120PRODUCTVERSION
|
||
{
|
||
DWORD dwVersion;
|
||
DWORD dwExpirationDate; // (year<<16)+(month<<8)+day
|
||
DWORD dwInformation;
|
||
DWORD dwEarliestPossibleVersion;
|
||
DWORD dwMaxDifference;
|
||
DWORD dwReserved;
|
||
} T120PRODUCTVERSION, * PT120PRODUCTVERSION;
|
||
|
||
typedef struct USERDATAINFO
|
||
{
|
||
UINT cbData;
|
||
PVOID pData;
|
||
GUID* pGUID;
|
||
} USERDATAINFO, * PUSERDATAINFO;
|
||
|
||
typedef struct NC_ROSTER_NODE_ENTRY
|
||
{
|
||
PWSTR pwszNodeName;
|
||
UINT uNodeID;
|
||
UINT uSuperiorNodeID;
|
||
BOOL fMCU;
|
||
ROSTER_DATA_HANDLE hUserData;
|
||
} NC_ROSTER_NODE_ENTRY, * PNC_ROSTER_NODE_ENTRY;
|
||
|
||
typedef struct NC_ROSTER
|
||
{
|
||
UINT uNumNodes;
|
||
PWSTR pwszConferenceName;
|
||
UINT_PTR uConferenceID;
|
||
UINT uLocalNodeID;
|
||
NC_ROSTER_NODE_ENTRY nodes[1];
|
||
} NC_ROSTER, * PNC_ROSTER;
|
||
|
||
|
||
|
||
#undef INTERFACE
|
||
#define INTERFACE IDataConference
|
||
|
||
DECLARE_INTERFACE(IDataConference)
|
||
{
|
||
STDMETHOD_(void, ReleaseInterface)( THIS ) PURE;
|
||
|
||
STDMETHOD_(UINT_PTR, GetConferenceID) ( THIS ) PURE;
|
||
|
||
STDMETHOD(Leave) ( THIS ) PURE;
|
||
|
||
STDMETHOD(EjectUser) ( THIS_
|
||
UINT uNodeID) PURE;
|
||
|
||
STDMETHOD(Invite) ( THIS_
|
||
LPCSTR pcszAddress,
|
||
USERDATAINFO aUserDataInfoEntries[],
|
||
UINT cUserDataEntries,
|
||
PREQUEST_HANDLE phRequest) PURE;
|
||
|
||
STDMETHOD(InviteResponse) ( THIS_
|
||
BOOL fResponse) PURE;
|
||
|
||
STDMETHOD(JoinResponse) ( THIS_
|
||
BOOL fResponse) PURE;
|
||
|
||
STDMETHOD(LaunchGuid) ( THIS_
|
||
const GUID* pcGUID,
|
||
UINT auNodeIDs[],
|
||
UINT cNodes) PURE;
|
||
|
||
STDMETHOD(SetUserData)( THIS_
|
||
const GUID* pcGUID,
|
||
UINT cbData,
|
||
LPVOID pvData) PURE;
|
||
STDMETHOD_(BOOL, IsSecure) ( THIS_) PURE;
|
||
|
||
STDMETHOD(UpdateUserData) ( THIS ) PURE;
|
||
|
||
STDMETHOD(GetLocalAddressList) ( THIS_
|
||
LPWSTR pwszBuffer,
|
||
UINT cchBuffer) PURE;
|
||
STDMETHOD(CancelInvite) ( THIS_
|
||
REQUEST_HANDLE hRequest) PURE;
|
||
STDMETHOD(SetSecurity) ( THIS_
|
||
BOOL fSecure) PURE;
|
||
|
||
STDMETHOD(GetCred) ( THIS_
|
||
PBYTE* ppbCred,
|
||
DWORD* pcbCred) PURE;
|
||
|
||
STDMETHOD_(UINT, GetParentNodeID) ( THIS ) PURE;
|
||
};
|
||
|
||
typedef IDataConference * CONF_HANDLE;
|
||
typedef CONF_HANDLE * PCONF_HANDLE;
|
||
|
||
|
||
|
||
#undef INTERFACE
|
||
#define INTERFACE INodeControllerEvents
|
||
|
||
DECLARE_INTERFACE(INodeControllerEvents)
|
||
{
|
||
STDMETHOD(OnConferenceStarted)( THIS_
|
||
CONF_HANDLE hConference,
|
||
HRESULT hResult) PURE;
|
||
STDMETHOD(OnConferenceEnded)( THIS_
|
||
CONF_HANDLE hConference) PURE;
|
||
STDMETHOD(OnRosterChanged)( THIS_
|
||
CONF_HANDLE hConference,
|
||
PNC_ROSTER pRoster) PURE;
|
||
STDMETHOD(OnIncomingInviteRequest)( THIS_
|
||
CONF_HANDLE hConference,
|
||
PCWSTR pcwszNodeName,
|
||
PT120PRODUCTVERSION pRequestorVersion,
|
||
PUSERDATAINFO pUserDataInfoEntries,
|
||
UINT cUserDataEntries,
|
||
BOOL fSecure) PURE;
|
||
STDMETHOD(OnIncomingJoinRequest)( THIS_
|
||
CONF_HANDLE hConference,
|
||
PCWSTR pcwszNodeName,
|
||
PT120PRODUCTVERSION pRequestorVersion,
|
||
PUSERDATAINFO pUserDataInfoEntries,
|
||
UINT cUserDataEntries) PURE;
|
||
STDMETHOD(OnQueryRemoteResult)( THIS_
|
||
PVOID pvCallerContext,
|
||
HRESULT hResult,
|
||
BOOL fMCU,
|
||
PWSTR* ppwszConferenceNames,
|
||
PT120PRODUCTVERSION pVersion,
|
||
PWSTR* ppwszConfDescriptors) PURE;
|
||
STDMETHOD(OnInviteResult)( THIS_
|
||
CONF_HANDLE hConference,
|
||
REQUEST_HANDLE hRequest,
|
||
UINT uNodeID,
|
||
HRESULT hResult,
|
||
PT120PRODUCTVERSION pVersion) PURE;
|
||
STDMETHOD(OnUpdateUserData)( THIS_
|
||
CONF_HANDLE hConference) PURE;
|
||
};
|
||
|
||
|
||
|
||
#undef INTERFACE
|
||
#define INTERFACE INodeController
|
||
|
||
DECLARE_INTERFACE(INodeController)
|
||
{
|
||
STDMETHOD_(void, ReleaseInterface)( THIS_) PURE;
|
||
|
||
STDMETHOD(CheckVersion)( THIS_
|
||
PT120PRODUCTVERSION pRemoteVersion) PURE;
|
||
|
||
STDMETHOD(QueryRemote)( THIS_
|
||
LPVOID pCallerContext,
|
||
LPCSTR pcszAddress,
|
||
BOOL fSecure,
|
||
BOOL fIsConferenceActive) PURE;
|
||
|
||
STDMETHOD(CancelQueryRemote)( THIS_
|
||
LPVOID pCallerContext) PURE;
|
||
|
||
STDMETHOD(CreateConference)( THIS_
|
||
LPCWSTR pcwszConferenceName,
|
||
LPCWSTR pcwszPassword,
|
||
PBYTE pbHashedPassword,
|
||
DWORD cbHashedPassword,
|
||
BOOL fSecure,
|
||
PCONF_HANDLE phConference) PURE;
|
||
|
||
STDMETHOD(JoinConference)( THIS_
|
||
LPCWSTR pcwszConferenceName,
|
||
LPCWSTR pcwszPassword,
|
||
LPCSTR pcszAddress,
|
||
BOOL fSecure,
|
||
PUSERDATAINFO pUserDataInfoEntries,
|
||
UINT cUserDataEntries,
|
||
PCONF_HANDLE phConference) PURE;
|
||
|
||
STDMETHOD(GetUserData)( THIS_
|
||
ROSTER_DATA_HANDLE hUserData,
|
||
const GUID* pcGUID,
|
||
PUINT pcbData,
|
||
LPVOID* ppvData) PURE;
|
||
STDMETHOD_(UINT, GetPluggableConnID) (THIS_
|
||
LPCSTR pcszNodeAddress) PURE;
|
||
};
|
||
|
||
|
||
HRESULT WINAPI T120_CreateNodeController(INodeController **, INodeControllerEvents *);
|
||
BOOL WINAPI T120_GetSecurityInfoFromGCCID(DWORD dwGCCID, PBYTE pInfo, PDWORD pcbInfo);
|
||
DWORD WINAPI T120_TprtSecCtrl(DWORD dwCode, DWORD_PTR dwParam1, DWORD_PTR dwParam2);
|
||
|
||
//
|
||
// Return codes
|
||
//
|
||
|
||
#define NC_ERR_FAC 0xfe00
|
||
#define NC_E(e) (0x81000000UL | NC_ERR_FAC | (ULONG) (e))
|
||
|
||
enum UI_RC_ERRORS
|
||
{
|
||
UI_RC_ALREADY_IN_CONFERENCE = NC_E(0x01),
|
||
UI_RC_CONFERENCE_ALREADY_EXISTS,
|
||
UI_RC_INVALID_PASSWORD,
|
||
UI_RC_NO_CONFERENCE_NAME,
|
||
UI_RC_T120_FAILURE,
|
||
UI_RC_UNKNOWN_CONFERENCE,
|
||
UI_RC_BAD_TRANSPORT_NAME,
|
||
UI_RC_USER_REJECTED,
|
||
|
||
LAST_RC_GCC_MAPPED_ERROR = UI_RC_USER_REJECTED,
|
||
|
||
UI_RC_T120_ALREADY_INITIALIZED,
|
||
UI_RC_BAD_ADDRESS,
|
||
UI_RC_NO_ADDRESS,
|
||
UI_RC_NO_SUCH_CONFERENCE,
|
||
UI_RC_CONFERENCE_CREATE_FAILED,
|
||
UI_RC_BAD_PARAMETER,
|
||
UI_RC_OUT_OF_MEMORY,
|
||
UI_RC_CALL_GOING_DOWN,
|
||
UI_RC_CALL_FAILED,
|
||
UI_NO_SUCH_CONFERENCE,
|
||
UI_RC_CONFERENCE_GOING_DOWN,
|
||
UI_RC_INVALID_REQUEST,
|
||
UI_RC_USER_DISCONNECTED,
|
||
UI_RC_EXITING_CORE_UI,
|
||
UI_RC_NO_NODE_NAME,
|
||
UI_RC_INVALID_TRANSPORT_SETTINGS,
|
||
UI_RC_REGISTER_CPI_FAILURE,
|
||
UI_RC_CMP_FAILURE,
|
||
UI_RC_TRANSPORT_DISABLED,
|
||
UI_RC_TRANSPORT_FAILED,
|
||
UI_RC_NOT_SUPPORTED,
|
||
UI_RC_NOT_SUPPORTED_IN_BACKLEVEL,
|
||
UI_RC_CONFERENCE_NOT_READY,
|
||
UI_RC_NO_SUCH_USER_DATA,
|
||
UI_RC_INTERNAL_ERROR,
|
||
UI_RC_VERSION_REMOTE_INCOMPATIBLE,
|
||
UI_RC_VERSION_LOCAL_INCOMPATIBLE,
|
||
UI_RC_VERSION_REMOTE_EXPIRED,
|
||
UI_RC_VERSION_LOCAL_UPGRADE_RECOMMENDED,
|
||
UI_RC_VERSION_REMOTE_UPGRADE_RECOMMENDED,
|
||
UI_RC_VERSION_REMOTE_OLDER,
|
||
UI_RC_VERSION_REMOTE_NEWER,
|
||
UI_RC_BACKLEVEL_LOADED,
|
||
UI_RC_NULL_MODEM_CONNECTION,
|
||
UI_RC_CANCELED,
|
||
UI_RC_T120_REMOTE_NO_SECURITY,
|
||
UI_RC_T120_REMOTE_DOWNLEVEL_SECURITY,
|
||
UI_RC_T120_REMOTE_REQUIRE_SECURITY,
|
||
UI_RC_T120_SECURITY_FAILED,
|
||
UI_RC_T120_AUTHENTICATION_FAILED,
|
||
UI_RC_NO_WINSOCK,
|
||
|
||
//
|
||
// Internal return codes
|
||
//
|
||
UI_RC_START_PRIMARY = NC_E(0x81),
|
||
UI_RC_START_ALTERNATE = NC_E(0x82)
|
||
};
|
||
|
||
#endif // _INODECNT_H_
|
||
|
||
|