Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

511 lines
11 KiB

  1. /*++ BUILD Version: 0000 // Increment this if a change has global effects
  2. Copyright (c) 1994-1998 Microsoft Corporation
  3. Module Name:
  4. client.h
  5. Abstract:
  6. Header file for tapi client module
  7. Author:
  8. Dan Knudson (DanKn) 01-Apr-1994
  9. Revision History:
  10. --*/
  11. #define TAPI_VERSION1_0 0x00010003
  12. #define TAPI_VERSION1_4 0x00010004
  13. #define TAPI_VERSION2_0 0x00020000
  14. #define TAPI_VERSION2_1 0x00020001
  15. #define TAPI_VERSION2_2 0x00020002
  16. #define TAPI_VERSION3_0 0x00030000
  17. #define TAPI_VERSION_CURRENT TAPI_VERSION3_0
  18. #define NUM_ARGS_MASK 0x0000000f
  19. #define LINE_FUNC 0x00000010
  20. #define PHONE_FUNC 0x00000020
  21. #define TAPI_FUNC 0x00000000
  22. #define ASYNC 0x00000040
  23. #define SYNC 0x00000000
  24. #define INITDATA_KEY ((DWORD) 'INIT')
  25. #define TPROXYREQUESTHEADER_KEY ((DWORD) 'REQH')
  26. #define WM_ASYNCEVENT (WM_USER+111)
  27. #define DEF_NUM_EVENT_BUFFER_ENTRIES 16
  28. #define TAPI_SUCCESS 0
  29. #define TAPI_NO_DATA -1
  30. #define MAX_TAPI_FUNC_ARGS 13
  31. #define REMOVEPROVIDER 0
  32. #define CONFIGPROVIDER 1
  33. #define ADDPROVIDER 2
  34. #define TAPI16BITSUCCESS -2
  35. #define INITIAL_CLIENT_THREAD_BUF_SIZE 512
  36. #define WM_TAPI16_CALLBACKMSG (WM_USER+101)
  37. #define IsOnlyOneBitSetInDWORD(dw) (dw && !(((DWORD)dw) & (((DWORD)dw) - 1)))
  38. #define AllCallSelect \
  39. (LINECALLSELECT_CALL | \
  40. LINECALLSELECT_ADDRESS | \
  41. LINECALLSELECT_LINE)
  42. #define AllDigitModes \
  43. (LINEDIGITMODE_PULSE | \
  44. LINEDIGITMODE_DTMF | \
  45. LINEDIGITMODE_DTMFEND)
  46. #define AllForwardModes \
  47. (LINEFORWARDMODE_UNCOND | \
  48. LINEFORWARDMODE_UNCONDINTERNAL | \
  49. LINEFORWARDMODE_UNCONDEXTERNAL | \
  50. LINEFORWARDMODE_UNCONDSPECIFIC | \
  51. LINEFORWARDMODE_BUSY | \
  52. LINEFORWARDMODE_BUSYINTERNAL | \
  53. LINEFORWARDMODE_BUSYEXTERNAL | \
  54. LINEFORWARDMODE_BUSYSPECIFIC | \
  55. LINEFORWARDMODE_NOANSW | \
  56. LINEFORWARDMODE_NOANSWINTERNAL | \
  57. LINEFORWARDMODE_NOANSWEXTERNAL | \
  58. LINEFORWARDMODE_NOANSWSPECIFIC | \
  59. LINEFORWARDMODE_BUSYNA | \
  60. LINEFORWARDMODE_BUSYNAINTERNAL | \
  61. LINEFORWARDMODE_BUSYNAEXTERNAL | \
  62. LINEFORWARDMODE_BUSYNASPECIFIC)
  63. #define AllTerminalModes \
  64. (LINETERMMODE_BUTTONS | \
  65. LINETERMMODE_LAMPS | \
  66. LINETERMMODE_DISPLAY | \
  67. LINETERMMODE_RINGER | \
  68. LINETERMMODE_HOOKSWITCH | \
  69. LINETERMMODE_MEDIATOLINE | \
  70. LINETERMMODE_MEDIAFROMLINE | \
  71. LINETERMMODE_MEDIABIDIRECT)
  72. #define AllToneModes \
  73. (LINETONEMODE_CUSTOM | \
  74. LINETONEMODE_RINGBACK | \
  75. LINETONEMODE_BUSY | \
  76. LINETONEMODE_BEEP | \
  77. LINETONEMODE_BILLING)
  78. #define AllHookSwitchDevs \
  79. (PHONEHOOKSWITCHDEV_HANDSET | \
  80. PHONEHOOKSWITCHDEV_SPEAKER | \
  81. PHONEHOOKSWITCHDEV_HEADSET)
  82. #define AllHookSwitchModes \
  83. (PHONEHOOKSWITCHMODE_ONHOOK | \
  84. PHONEHOOKSWITCHMODE_MIC | \
  85. PHONEHOOKSWITCHMODE_SPEAKER | \
  86. PHONEHOOKSWITCHMODE_MICSPEAKER)
  87. #define AllLampModes \
  88. (PHONELAMPMODE_BROKENFLUTTER | \
  89. PHONELAMPMODE_FLASH | \
  90. PHONELAMPMODE_FLUTTER | \
  91. PHONELAMPMODE_OFF | \
  92. PHONELAMPMODE_STEADY | \
  93. PHONELAMPMODE_WINK | \
  94. PHONELAMPMODE_DUMMY)
  95. #define AllMediaModes \
  96. (LINEMEDIAMODE_UNKNOWN | \
  97. LINEMEDIAMODE_INTERACTIVEVOICE | \
  98. LINEMEDIAMODE_AUTOMATEDVOICE | \
  99. LINEMEDIAMODE_DIGITALDATA | \
  100. LINEMEDIAMODE_G3FAX | \
  101. LINEMEDIAMODE_G4FAX | \
  102. LINEMEDIAMODE_DATAMODEM | \
  103. LINEMEDIAMODE_TELETEX | \
  104. LINEMEDIAMODE_VIDEOTEX | \
  105. LINEMEDIAMODE_TELEX | \
  106. LINEMEDIAMODE_MIXED | \
  107. LINEMEDIAMODE_TDD | \
  108. LINEMEDIAMODE_ADSI | \
  109. LINEMEDIAMODE_VOICEVIEW | \
  110. LINEMEDIAMODE_VIDEO)
  111. typedef enum
  112. {
  113. xGetAsyncEvents,
  114. xGetUIDllName,
  115. xUIDLLCallback,
  116. xFreeDialogInstance,
  117. lAccept,
  118. lAddToConference,
  119. lAgentSpecific,
  120. lAnswer,
  121. lBlindTransfer,
  122. lClose,
  123. lCompleteCall,
  124. lCompleteTransfer,
  125. // lConditionalMediaDetection, //remotesp
  126. lDeallocateCall,
  127. lDevSpecific,
  128. lDevSpecificFeature,
  129. lDial,
  130. lDrop,
  131. lForward,
  132. lGatherDigits,
  133. lGenerateDigits,
  134. lGenerateTone,
  135. lGetAddressCaps,
  136. lGetAddressID,
  137. lGetAddressStatus,
  138. lGetAgentActivityList,
  139. lGetAgentCaps,
  140. lGetAgentGroupList,
  141. lGetAgentStatus,
  142. lGetAppPriority,
  143. lGetCallAddressID, // remotesp only
  144. lGetCallInfo,
  145. lGetCallStatus,
  146. lGetConfRelatedCalls,
  147. lGetCountry,
  148. lGetDevCaps,
  149. lGetDevConfig,
  150. lGetIcon,
  151. lGetID,
  152. lGetLineDevStatus,
  153. lGetNewCalls,
  154. lGetNumAddressIDs, // remotesp only
  155. lGetNumRings,
  156. lGetProviderList,
  157. lGetRequest,
  158. lGetStatusMessages,
  159. //In TAPI32.DLL now: lGetTranslateCaps,
  160. lHandoff,
  161. lHold,
  162. lInitialize,
  163. lMakeCall,
  164. lMonitorDigits,
  165. lMonitorMedia,
  166. lMonitorTones,
  167. lNegotiateAPIVersion,
  168. lNegotiateExtVersion,
  169. lOpen,
  170. lPark,
  171. lPickup,
  172. lPrepareAddToConference,
  173. lProxyMessage,
  174. lProxyResponse,
  175. lRedirect,
  176. lRegisterRequestRecipient,
  177. lReleaseUserUserInfo,
  178. lRemoveFromConference,
  179. lSecureCall,
  180. // lSelectExtVersion,
  181. lSendUserUserInfo,
  182. lSetAgentActivity,
  183. lSetAgentGroup,
  184. lSetAgentState,
  185. lSetAppPriority,
  186. lSetAppSpecific,
  187. lSetCallData,
  188. lSetCallParams,
  189. lSetCallPrivilege,
  190. lSetCallQualityOfService,
  191. lSetCallTreatment,
  192. //In TAPI32.DLL now: lSetCurrentLocation,
  193. lSetDefaultMediaDetection, // remotesp only
  194. lSetDevConfig,
  195. lSetLineDevStatus,
  196. lSetMediaControl,
  197. lSetMediaMode,
  198. lSetNumRings,
  199. lSetStatusMessages,
  200. lSetTerminal,
  201. //In TAPI32.DLL now: lSetTollList,
  202. lSetupConference,
  203. lSetupTransfer,
  204. lShutdown,
  205. lSwapHold,
  206. //In TAPI32.DLL now: lTranslateAddress,
  207. lUncompleteCall,
  208. lUnhold,
  209. lUnpark,
  210. pClose,
  211. pDevSpecific,
  212. pGetButtonInfo,
  213. pGetData,
  214. pGetDevCaps,
  215. pGetDisplay,
  216. pGetGain,
  217. pGetHookSwitch,
  218. pGetID,
  219. pGetIcon,
  220. pGetLamp,
  221. pGetRing,
  222. pGetStatus,
  223. pGetStatusMessages,
  224. pGetVolume,
  225. pInitialize,
  226. pOpen,
  227. pNegotiateAPIVersion,
  228. pNegotiateExtVersion,
  229. // pSelectExtVersion, // remotesp
  230. pSetButtonInfo,
  231. pSetData,
  232. pSetDisplay,
  233. pSetGain,
  234. pSetHookSwitch,
  235. pSetLamp,
  236. pSetRing,
  237. pSetStatusMessages,
  238. pSetVolume,
  239. pShutdown,
  240. //In TAPI32.DLL now: tGetLocationInfo,
  241. tRequestDrop,
  242. tRequestMakeCall,
  243. tRequestMediaCall,
  244. // tMarkLineEvent,
  245. tReadLocations,
  246. tWriteLocations,
  247. tAllocNewID,
  248. tPerformance,
  249. lConditionalMediaDetection, //remotesp
  250. lSelectExtVersion,
  251. pSelectExtVersion, // remotesp
  252. // lOpenInt,
  253. // lShutdownInt,
  254. //
  255. // Ordinals for tapi 2.1 ended here. the lOpenInt & lShutdownInt
  256. // were Win95 local-machine-only hacks which have since been removed
  257. //
  258. xNegotiateAPIVersionForAllDevices, // remotesp
  259. mGetAvailableProviders,
  260. mGetLineInfo,
  261. mGetPhoneInfo,
  262. mGetServerConfig,
  263. mSetLineInfo,
  264. mSetPhoneInfo,
  265. mSetServerConfig,
  266. //
  267. // Ordinals for 2.1 update (nt4 sp4) ended here.
  268. //
  269. lMSPIdentify,
  270. lReceiveMSPData,
  271. lGetCallHubTracking,
  272. lGetCallIDs,
  273. lGetHubRelatedCalls,
  274. lSetCallHubTracking,
  275. xPrivateFactoryIdentify,
  276. lDevSpecificEx,
  277. lCreateAgent,
  278. lCreateAgentSession,
  279. lGetAgentInfo,
  280. lGetAgentSessionInfo,
  281. lGetAgentSessionList,
  282. lGetQueueInfo,
  283. lGetGroupList,
  284. lGetQueueList,
  285. lSetAgentMeasurementPeriod,
  286. lSetAgentSessionState,
  287. lSetQueueMeasurementPeriod,
  288. lSetAgentStateEx,
  289. lGetProxyStatus,
  290. lCreateMSPInstance,
  291. lCloseMSPInstance,
  292. //
  293. // The following is always the last one in the list
  294. //
  295. xLastFunc
  296. } FUNC_TYPE;
  297. typedef struct _CLIENT_THREAD_INFO
  298. {
  299. LIST_ENTRY TlsList;
  300. LPBYTE pBuf;
  301. DWORD dwBufSize;
  302. } CLIENT_THREAD_INFO, *PCLIENT_THREAD_INFO;
  303. typedef struct _TAPI32_MSG
  304. {
  305. //
  306. // The following union is used:
  307. //
  308. // 1. by requests from client to server to specify a function type
  309. // 2. by acks from server to client to specify a return value
  310. // 3. by async msgs from server to client to specify msg type
  311. //
  312. union
  313. {
  314. DWORD Req_Func;
  315. LONG_PTR Ack_ReturnValue;
  316. DWORD Msg_Type;
  317. } u;
  318. //
  319. // The following...
  320. //
  321. ULONG_PTR hRpcClientInst;
  322. //
  323. // Function paramters
  324. //
  325. ULONG_PTR Params[MAX_TAPI_FUNC_ARGS];
  326. } TAPI32_MSG, *PTAPI32_MSG;
  327. typedef struct _ASYNCEVENTMSG
  328. {
  329. ULONG_PTR TotalSize;
  330. ULONG_PTR InitContext;
  331. ULONG_PTR pfnPostProcessProc;
  332. ULONG_PTR hDevice;
  333. ULONG_PTR Msg;
  334. ULONG_PTR OpenContext;
  335. ULONG_PTR Param1;
  336. ULONG_PTR Param2;
  337. ULONG_PTR Param3;
  338. ULONG_PTR Param4;
  339. } ASYNCEVENTMSG, *PASYNCEVENTMSG;
  340. typedef void (PASCAL *POSTPROCESSPROC)(PASYNCEVENTMSG pMsg);
  341. typedef struct _ASYNC_EVENT_PARAMS
  342. {
  343. DWORD hDevice;
  344. DWORD dwMsg;
  345. ULONG_PTR dwCallbackInstance;
  346. ULONG_PTR dwParam1;
  347. ULONG_PTR dwParam2;
  348. ULONG_PTR dwParam3;
  349. } ASYNC_EVENT_PARAMS, *PASYNC_EVENT_PARAMS;
  350. typedef LONG (PASCAL *TUISPIPROC)();
  351. typedef struct _UITHREADDATA
  352. {
  353. HTAPIDIALOGINSTANCE htDlgInst;
  354. HINSTANCE hUIDll;
  355. HANDLE hThread;
  356. HANDLE hEvent;
  357. LPVOID pParams;
  358. DWORD dwSize;
  359. TUISPIPROC pfnTUISPI_providerGenericDialog;
  360. TUISPIPROC pfnTUISPI_providerGenericDialogData;
  361. struct _UITHREADDATA *pPrev;
  362. struct _UITHREADDATA *pNext;
  363. } UITHREADDATA, *PUITHREADDATA;
  364. typedef struct _PROXYREQUESTHEADER
  365. {
  366. DWORD dwKey;
  367. DWORD dwInstance;
  368. } PROXYREQUESTHEADER, *PPROXYREQUESTHEADER;
  369. #if DBG
  370. extern char gszDebug[];
  371. #endif
  372. //extern const char gszLocation[];
  373. //extern const char gszLocations[];
  374. extern const char gszCurrentLocation[];
  375. extern const CHAR gszNullString[];
  376. #if DBG
  377. #define ClientAlloc( __size__ ) ClientAllocReal( __size__, __LINE__, __FILE__ )
  378. LPVOID
  379. WINAPI
  380. ClientAllocReal(
  381. DWORD dwSize,
  382. DWORD dwLine,
  383. PSTR pszFile
  384. );
  385. #else
  386. #define ClientAlloc( __size__ ) ClientAllocReal( __size__ )
  387. LPVOID
  388. WINAPI
  389. ClientAllocReal(
  390. DWORD dwSize
  391. );
  392. #endif
  393. SIZE_T
  394. WINAPI
  395. ClientSize(
  396. LPVOID lp
  397. );
  398. void
  399. WINAPI
  400. ClientFree(
  401. LPVOID lp
  402. );
  403. LONG
  404. WINAPI
  405. MarkLineEvent(
  406. DWORD dwApiVersion,
  407. DWORD ptLine,
  408. DWORD ptLineClientToExclude,
  409. DWORD dwMsg,
  410. DWORD dwParam1,
  411. DWORD dwParam2,
  412. DWORD dwParam3
  413. );