Tapi3cc.Idl
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:18k
源码类别:

模拟服务器

开发平台:

C/C++

  1. //
  2. // Copyright (c) Microsoft Corporation. All rights reserved.
  3. cpp_quote("/* Copyright (c) Microsoft Corporation. All rights reserved. */")
  4. // callcent.idl : IDL source for tapi3 Call centre support
  5. //
  6. import "oaidl.idl";
  7. import "tapi3if.idl";
  8. typedef enum AGENT_EVENT
  9. {
  10. AE_NOT_READY,
  11. AE_READY,
  12. AE_BUSY_ACD,
  13. AE_BUSY_INCOMING,
  14. AE_BUSY_OUTGOING,
  15. AE_UNKNOWN,
  16. } AGENT_EVENT;
  17. typedef enum AGENT_STATE
  18. {
  19.     AS_NOT_READY,
  20.     AS_READY,
  21.     AS_BUSY_ACD,
  22.     AS_BUSY_INCOMING,
  23.     AS_BUSY_OUTGOING,
  24.     AS_UNKNOWN
  25. }  AGENT_STATE;
  26. typedef enum AGENT_SESSION_EVENT
  27. {
  28.     ASE_NEW_SESSION,
  29.     ASE_NOT_READY,
  30.     ASE_READY,
  31.     ASE_BUSY,
  32.     ASE_WRAPUP, 
  33.     ASE_END
  34. } AGENT_SESSION_EVENT;
  35. typedef enum AGENT_SESSION_STATE
  36. {
  37. ASST_NOT_READY,
  38. ASST_READY,
  39.     ASST_BUSY_ON_CALL,
  40.     ASST_BUSY_WRAPUP,
  41.     ASST_SESSION_ENDED
  42. }  AGENT_SESSION_STATE;
  43. typedef enum AGENTHANDLER_EVENT
  44. {
  45. AHE_NEW_AGENTHANDLER,
  46. AHE_AGENTHANDLER_REMOVED
  47. } AGENTHANDLER_EVENT;
  48. typedef enum ACDGROUP_EVENT
  49. {
  50. ACDGE_NEW_GROUP,
  51. ACDGE_GROUP_REMOVED
  52. } ACDGROUP_EVENT;
  53. typedef enum ACDQUEUE_EVENT
  54. {
  55.     ACDQE_NEW_QUEUE,
  56. ACDQE_QUEUE_REMOVED
  57. } ACDQUEUE_EVENT;
  58. // forward definitions
  59. interface IEnumAgentSession;
  60. interface IEnumAgent;
  61. interface IEnumQueue;
  62. interface IEnumACDGroup;
  63. interface IEnumAgentHandler;
  64. interface ITAgentHandler;
  65. interface ITAgent;
  66. interface ITAgentSession;
  67. interface ITACDGroup;
  68. interface ITQueue;
  69. interface ITAgentEvent;
  70. interface ITAgentSessionEvent;
  71. interface ITAgentHandlerEvent;
  72. interface ITACDGroupEvent;
  73. interface ITQueueEvent;
  74. // ITAgent
  75. [
  76.    uuid( 5770ECE5-4B27-11d1-BF80-00805FC147D3 ),
  77.    helpstring("TAPI 3.0 ITAgent interface"),
  78.    dual
  79. ]
  80. interface ITAgent : IDispatch
  81. {
  82.     [id(1), hidden, helpstring("method EnumerateAgentSessions")]
  83.     HRESULT EnumerateAgentSessions(
  84.             [out, retval] IEnumAgentSession ** ppEnumAgentSession
  85.             );
  86.     [id(2), helpstring("method CreateSession")]
  87.     HRESULT CreateSession(
  88.             [in] ITACDGroup * pACDGroup,
  89.             [in] ITAddress * pAddress,
  90.             [out,retval] ITAgentSession ** ppAgentSession
  91.             );
  92.     [id(3), helpstring("method CreateSessionWithPIN")]
  93.     HRESULT CreateSessionWithPIN(
  94.             [in] ITACDGroup * pACDGroup,
  95.             [in] ITAddress * pAddress,
  96.             [in] BSTR pPIN,
  97.             [out,retval] ITAgentSession ** ppAgentSession
  98.             );
  99.     [propget, id(4), helpstring("property ID")]
  100.     HRESULT ID( 
  101.             [out, retval] BSTR *  ppID 
  102.             );
  103.     [propget, id(5), helpstring("property User")]
  104.     HRESULT User( 
  105.             [out, retval] BSTR *  ppUser
  106.             );
  107.     [propput, id(6), helpstring("property State")]
  108.     HRESULT State(
  109.             [in] AGENT_STATE  AgentState
  110.             );
  111.     [propget, id(6), helpstring("property State")]
  112.     HRESULT State(
  113.             [out, retval] AGENT_STATE * pAgentState
  114.             );
  115.     [propput, id(7), helpstring("property MeasurementPeriod")]
  116.     HRESULT MeasurementPeriod(
  117.             [in] long lPeriod
  118.             );
  119.     [propget, id(7), helpstring("property MeasurementPeriod")]
  120.     HRESULT MeasurementPeriod(
  121.             [out, retval] long * plPeriod
  122.             );
  123.     [propget, id(8), helpstring("property OverallCallRate")]
  124.     HRESULT OverallCallRate(
  125.             [out, retval] CURRENCY * pcyCallrate
  126.             );
  127.     [propget, id(9), helpstring("property NumberOfACDCalls")]
  128.     HRESULT NumberOfACDCalls(
  129.             [out, retval] long * plCalls
  130.             );
  131.     [propget, id(10), helpstring("property NumberOfIncomingCalls")]
  132.     HRESULT NumberOfIncomingCalls(
  133.             [out, retval] long * plCalls
  134.             );
  135.     [propget, id(11), helpstring("property NumberOfOutgoingCalls")]
  136.     HRESULT NumberOfOutgoingCalls(
  137.             [out, retval] long * plCalls
  138.             );
  139.     [propget, id(12), helpstring("property TotalACDTalkTime")]
  140.     HRESULT TotalACDTalkTime(
  141.             [out, retval] long * plTalkTime
  142.             );
  143.     [propget, id(13), helpstring("property TotalACDCallTime")]
  144.     HRESULT TotalACDCallTime(
  145.             [out, retval] long * plCallTime
  146.             );
  147.     [propget, id(14), helpstring("property TotalWrapUpTime")]
  148.     HRESULT TotalWrapUpTime(
  149.             [out, retval] long * plWrapUpTime
  150.             );
  151.     [propget, id(15), helpstring("property AgentSessions")]
  152.     HRESULT AgentSessions( 
  153.             [out, retval] VARIANT * pVariant
  154.             );
  155.             
  156. }
  157. // ITAgentSession
  158. [
  159.    uuid( 5AFC3147-4BCC-11d1-BF80-00805FC147D3 ),
  160.    helpstring("TAPI 3.0 ITAgentSession interface"),
  161.    dual                                                      
  162. ]
  163. interface ITAgentSession : IDispatch
  164. {
  165.     [propget, id(1), helpstring("property Agent")]
  166.     HRESULT Agent(
  167.             [out, retval] ITAgent ** ppAgent
  168.             );
  169.     [propget, id(2), helpstring("property Address")]
  170.     HRESULT Address(
  171.             [out, retval] ITAddress ** ppAddress
  172.             );
  173.     [propget, id(3), helpstring("property ACDGroup")]
  174.     HRESULT ACDGroup(
  175.             [out, retval] ITACDGroup ** ppACDGroup
  176.             );
  177.     
  178.     [propput, id(4), helpstring("property State")]
  179.     HRESULT State(
  180.             [in] AGENT_SESSION_STATE  SessionState
  181.             );
  182.     [propget, id(4), helpstring("property State")]
  183.     HRESULT State(
  184.             [out, retval] AGENT_SESSION_STATE * pSessionState
  185.             );
  186.     [propget, id(5), helpstring("property SessionStartTime")]
  187.     HRESULT SessionStartTime(
  188.             [out, retval] DATE * pdateSessionStart
  189.             );
  190.     [propget, id(6), helpstring("property SessionDuration")]
  191.     HRESULT SessionDuration(
  192.             [out, retval] long * plDuration
  193.             );
  194.     [propget, id(7), helpstring("property NumberOfCalls")]
  195.     HRESULT NumberOfCalls(
  196.             [out, retval] long * plCalls
  197.             );
  198.     [propget, id(8), helpstring("property TotalTalkTime")]
  199.     HRESULT TotalTalkTime(
  200.             [out, retval] long * plTalkTime
  201.             );
  202.     [propget, id(9), helpstring("property AverageTalkTime")]
  203.     HRESULT AverageTalkTime(
  204.             [out, retval] long * plTalkTime
  205.             );
  206.     [propget, id(10), helpstring("property TotalCallTime")]
  207.     HRESULT TotalCallTime(
  208.             [out, retval] long * plCallTime
  209.             );
  210.     [propget, id(11), helpstring("property AverageCallTime")]
  211.     HRESULT AverageCallTime(
  212.             [out, retval] long * plCallTime
  213.             );
  214.     [propget, id(12), helpstring("property TotalWrapUpTime")]
  215.     HRESULT TotalWrapUpTime(
  216.             [out, retval] long * plWrapUpTime
  217.             );
  218.     [propget, id(13), helpstring("property AverageWrapUpTime")]
  219.     HRESULT AverageWrapUpTime(
  220.             [out, retval] long * plWrapUpTime
  221.             );
  222.     [propget, id(14), helpstring("property ACDCallRate")]
  223.     HRESULT ACDCallRate(
  224.             [out, retval] CURRENCY * pcyCallrate
  225.             );
  226.     [propget, id(15), helpstring("property LongestTimeToAnswer")]
  227.     HRESULT LongestTimeToAnswer(
  228.             [out, retval] long * plAnswerTime
  229.             );
  230.     [propget, id(16), helpstring("property AverageTimeToAnswer")]
  231.     HRESULT AverageTimeToAnswer(
  232.             [out, retval] long * plAnswerTime
  233.             );
  234. }
  235. // ITACDGroup
  236. [
  237.    uuid( 5AFC3148-4BCC-11d1-BF80-00805FC147D3 ),
  238.    helpstring("TAPI 3.0 ITACDGroup interface"),
  239.    dual
  240. ]
  241. interface ITACDGroup : IDispatch
  242. {
  243.     [propget, id(1), helpstring("property Name")]
  244.     HRESULT Name( 
  245.             [out, retval] BSTR *  ppName
  246.             );
  247.     [id(2), hidden, helpstring("method EnumerateQueues")]
  248.     HRESULT EnumerateQueues(
  249.             [out, retval] IEnumQueue ** ppEnumQueue
  250.             );
  251.     [propget, id(3), helpstring("property Queues")]
  252.     HRESULT Queues( 
  253.             [out, retval] VARIANT * pVariant
  254.             );
  255. }
  256. /*
  257. // ITGroupSupervisor
  258. [
  259.    uuid( 587E8C24-9802-11d1-A0A4-00805FC147D3 ),
  260.    helpstring("TAPI 3.0 ITGroupSupervisor interface"),
  261.    dual
  262. ]
  263. interface ITGroupSupervisor : IDispatch
  264. {
  265.     [id(1), hidden, helpstring("method EnumerateAgentSessions")]
  266.     HRESULT EnumerateAgentSessions(
  267.             [out, retval] IEnumAgentSession ** ppEnumAgentSession
  268.             );
  269.     [id(2), hidden, helpstring("method EnumerateAgents")]
  270.     HRESULT EnumerateAgents(
  271.             [out, retval] IEnumAgent ** ppEnumAgent
  272.             );
  273.         
  274.     [id(3), helpstring("method RegisterAgentSessionEvents")]
  275.     HRESULT RegisterAgentSessionEvents(
  276.             [in] VARIANT_BOOL bNotify
  277.             );
  278. }
  279. */
  280. // ITQueue
  281. [
  282.    uuid( 5AFC3149-4BCC-11d1-BF80-00805FC147D3 ),
  283.    helpstring("TAPI 3.0 ITQueue interface"),
  284.    dual
  285. ]
  286. interface ITQueue : IDispatch
  287. {
  288.     
  289.     [propput, id(1), helpstring("property MeasurementPeriod")]
  290.     HRESULT MeasurementPeriod(
  291.             [in] long lPeriod
  292.             );
  293.     [propget, id(1), helpstring("property MeasurementPeriod")]
  294.     HRESULT MeasurementPeriod(
  295.             [out, retval] long * plPeriod
  296.             );
  297.     [propget, id(2), helpstring("property TotalCallsQueued")]
  298.     HRESULT TotalCallsQueued(
  299.             [out, retval] long * plCalls
  300.             );
  301.     [propget, id(3), helpstring("property CurrentCallsQueued")]
  302.     HRESULT CurrentCallsQueued(
  303.             [out, retval] long * plCalls
  304.             );
  305.                       
  306.     [propget, id(4), helpstring("property TotalCallsAbandoned")]
  307.     HRESULT TotalCallsAbandoned(
  308.             [out, retval] long * plCalls
  309.             );
  310.     [propget, id(5), helpstring("property TotalCallsFlowedIn")]
  311.     HRESULT TotalCallsFlowedIn(
  312.             [out, retval] long * plCalls
  313.             );
  314.     [propget, id(6), helpstring("property TotalCallsFlowedOut")]
  315.     HRESULT TotalCallsFlowedOut(
  316.             [out, retval] long * plCalls
  317.             );
  318.     [propget, id(7), helpstring("property LongestEverWaitTime")]
  319.     HRESULT LongestEverWaitTime(
  320.             [out, retval] long * plWaitTime
  321.             );
  322.     [propget, id(8), helpstring("property CurrentLongestWaitTime")]
  323.     HRESULT CurrentLongestWaitTime(
  324.             [out, retval] long * plWaitTime
  325.             );
  326.     [propget, id(9), helpstring("property AverageWaitTime")]
  327.     HRESULT AverageWaitTime(
  328.             [out, retval] long * plWaitTime
  329.             );
  330.     [propget, id(10), helpstring("property FinalDisposition")]
  331.     HRESULT FinalDisposition(
  332.             [out, retval] long * plCalls
  333.             );
  334.     [propget, id(11), helpstring("property Name")]
  335.     HRESULT Name( 
  336.             [out, retval] BSTR *  ppName
  337.             );
  338. }
  339. // ITAgentEvent;
  340. [
  341.    uuid( 5AFC314A-4BCC-11d1-BF80-00805FC147D3 ),
  342.    helpstring("TAPI 3.0 ITAgentEvent interface"),
  343.    dual
  344. ]
  345. interface ITAgentEvent : IDispatch
  346. {
  347.     [propget, id(1), helpstring("property Agent")]
  348.     HRESULT Agent(
  349.             [out, retval] ITAgent ** ppAgent
  350.             );
  351.     [propget, id(2), helpstring("property Event")]
  352.     HRESULT Event(
  353.             [out, retval] AGENT_EVENT * pEvent
  354.             );
  355. }
  356. // ITAgentSessionEvent;
  357. [
  358.    uuid( 5AFC314B-4BCC-11d1-BF80-00805FC147D3 ),
  359.    helpstring("TAPI 3.0 ITAgentSessionEvent interface"),
  360.    dual
  361. ]
  362. interface ITAgentSessionEvent : IDispatch
  363. {
  364.     [propget, id(1), helpstring("property Session")]
  365.     HRESULT Session(
  366.             [out, retval] ITAgentSession ** ppSession
  367.             );
  368.     [propget, id(2), helpstring("property Event")]
  369.     HRESULT Event(
  370.             [out, retval] AGENT_SESSION_EVENT * pEvent
  371.             );
  372. }
  373. // ITACDGroupEvent;
  374. [
  375.    uuid( 297F3032-BD11-11d1-A0A7-00805FC147D3 ),
  376.    helpstring("TAPI 3.0 ITACDGroupEvent interface"),
  377.    dual
  378. ]
  379. interface ITACDGroupEvent : IDispatch
  380. {
  381.     [propget, id(1), helpstring("property Group")]
  382.     HRESULT Group(
  383.             [out, retval] ITACDGroup ** ppGroup
  384.             );
  385.     [propget, id(2), helpstring("property Event")]
  386.     HRESULT Event(
  387.             [out, retval] ACDGROUP_EVENT * pEvent
  388.             );                                                                                   
  389. }
  390. // ITQueueEvent;
  391. [
  392.    uuid( 297F3033-BD11-11d1-A0A7-00805FC147D3 ),
  393.    helpstring("TAPI 3.0 ITQueueEvent interface"),
  394.    dual
  395. ]
  396. interface ITQueueEvent : IDispatch
  397. {
  398.     [propget, id(1), helpstring("property Queue")]
  399.     HRESULT Queue(
  400.             [out, retval] ITQueue ** ppQueue
  401.             );
  402.     [propget, id(2), helpstring("property Event")]
  403.     HRESULT Event(
  404.             [out, retval] ACDQUEUE_EVENT * pEvent
  405.             );
  406. }
  407. // ITAgentHandlerEvent;
  408. [
  409.    uuid( 297F3034-BD11-11d1-A0A7-00805FC147D3 ),
  410.    helpstring("TAPI 3.0 ITAgentHandlerEvent interface"),
  411.    dual
  412. ]
  413. interface ITAgentHandlerEvent : IDispatch
  414. {
  415.     [propget, id(1), helpstring("property AgentHandler")]
  416.     HRESULT AgentHandler(
  417.             [out, retval] ITAgentHandler ** ppAgentHandler
  418.             );
  419.     [propget, id(2), helpstring("property Event")]
  420.     HRESULT Event(
  421.             [out, retval] AGENTHANDLER_EVENT * pEvent
  422.             );
  423. }
  424. // ITTAPICallCenter
  425. [
  426.    uuid( 5AFC3154-4BCC-11d1-BF80-00805FC147D3 ),
  427.    helpstring("TAPI 3.0 ITTAPICallCenter interface"),
  428.    dual
  429. ]
  430. interface ITTAPICallCenter : IDispatch
  431. {
  432.     [id(IDISPTAPICALLCENTER | 1), hidden, helpstring("method EnumerateAgentHandlers")]
  433.     HRESULT EnumerateAgentHandlers(
  434.             [out, retval] IEnumAgentHandler ** ppEnumHandler
  435.             );
  436.     [propget, id(IDISPTAPICALLCENTER | 2), helpstring("property AgentHandlers")]
  437.     HRESULT AgentHandlers( 
  438.             [out, retval] VARIANT * pVariant
  439.             );
  440. }
  441. // ITAgentHandler
  442. [
  443.    uuid( 587E8C22-9802-11d1-A0A4-00805FC147D3 ),
  444.    helpstring("TAPI 3.0 ITAgentHandler interface"),
  445.    dual
  446. ]
  447. interface ITAgentHandler : IDispatch
  448. {
  449.     [propget, id(1), helpstring("property Name")]
  450.     HRESULT Name( 
  451.             [out, retval] BSTR *  ppName
  452.             );
  453.     
  454.     [id(2), helpstring("property CreateAgent")]
  455.     HRESULT CreateAgent(
  456.             [out, retval] ITAgent ** ppAgent
  457.             );
  458.     [id(3), helpstring("property CreateAgentWithID")]
  459.     HRESULT CreateAgentWithID(
  460.             [in] BSTR pID,
  461.             [in] BSTR pPIN,
  462.             [out, retval] ITAgent ** ppAgent
  463.             );
  464.     [id(4), hidden, helpstring("method EnumerateACDGroups")]
  465.     HRESULT EnumerateACDGroups(
  466.             [out, retval] IEnumACDGroup** ppEnumACDGroup
  467.             );
  468.     [id(5), hidden, helpstring("method EnumerateUsableAddresses")]
  469.     HRESULT EnumerateUsableAddresses(
  470.             [out, retval] IEnumAddress ** ppEnumAddress
  471.             );
  472.     [propget, id(6), helpstring("property ACDGroups")]
  473.     HRESULT ACDGroups( 
  474.             [out, retval] VARIANT * pVariant
  475.             );
  476.     [propget, id(7), helpstring("property UsableAddresses")]
  477.     HRESULT UsableAddresses( 
  478.             [out, retval] VARIANT * pVariant
  479.             );
  480. }
  481. /*
  482. // ITAgentSupervisor
  483. [
  484.    uuid( 587E8C26-9802-11d1-A0A4-00805FC147D3 ),
  485.    helpstring("TAPI 3.0 ITAgentSupervisor interface"),
  486.    dual
  487. ]
  488. interface ITAgentSupervisor : IDispatch
  489. {
  490.     [id(1), hidden, helpstring("method EnumerateQueues")]
  491.     HRESULT EnumerateQueues(
  492.             [out, retval] IEnumQueue ** ppEnumQueue
  493.             );
  494.     [id(2), hidden, helpstring("method EnumerateAgents")]
  495.     HRESULT EnumerateAgents(
  496.             [out, retval] IEnumAgent ** ppEnumAgent
  497.             );
  498. }
  499. */
  500. // IEnumAgent
  501. [
  502.     uuid( 5AFC314D-4BCC-11d1-BF80-00805FC147D3 ),
  503.     helpstring("TAPI 3.0 IEnumAgent interface"),
  504.     hidden,
  505.     pointer_default(unique)
  506. ]
  507.     
  508. interface IEnumAgent : IUnknown
  509. {
  510.     HRESULT Next(
  511.             [in] ULONG celt,
  512.             [out] ITAgent ** ppElements,
  513.             [out] ULONG * pceltFetched
  514.             );
  515.     HRESULT Reset( void );
  516.     HRESULT Skip (
  517.             [in] ULONG celt
  518.             );
  519.     HRESULT Clone (
  520.             [out, retval] IEnumAgent ** ppEnum
  521.             );
  522. }
  523. // IEnumAgentSession
  524. [
  525.     uuid( 5AFC314E-4BCC-11d1-BF80-00805FC147D3 ),
  526.     helpstring("TAPI 3.0 IEnumAgentSession interface"),
  527.     hidden,
  528.     pointer_default(unique)
  529. ]
  530.     
  531. interface IEnumAgentSession : IUnknown
  532. {
  533.     HRESULT Next(
  534.             [in] ULONG celt,
  535.             [out] ITAgentSession ** ppElements,
  536.             [out] ULONG * pceltFetched
  537.             );
  538.     HRESULT Reset( void );
  539.     HRESULT Skip (
  540.             [in] ULONG celt
  541.             );
  542.     HRESULT Clone (
  543.             [out, retval] IEnumAgentSession ** ppEnum
  544.             );
  545. }
  546. // IEnumQueue;
  547. [
  548.     uuid( 5AFC3158-4BCC-11d1-BF80-00805FC147D3 ),
  549.     helpstring("TAPI 3.0 IEnumQueue interface"),
  550.     hidden,
  551.     pointer_default(unique)
  552. ]
  553.     
  554. interface IEnumQueue : IUnknown
  555. {
  556.     HRESULT Next(
  557.             [in] ULONG celt,
  558.             [out] ITQueue ** ppElements,
  559.             [out] ULONG * pceltFetched
  560.             );
  561.     HRESULT Reset( void );
  562.     HRESULT Skip (
  563.             [in] ULONG celt
  564.             );
  565.     HRESULT Clone (
  566.             [out, retval] IEnumQueue ** ppEnum
  567.             );
  568. }
  569. // IEnumACDGroup
  570. [
  571.     uuid( 5AFC3157-4BCC-11d1-BF80-00805FC147D3 ),
  572.     helpstring("TAPI 3.0 IEnumACDGroup interface"),
  573.     hidden,
  574.     pointer_default(unique)
  575. ]
  576.     
  577. interface IEnumACDGroup : IUnknown
  578. {
  579.     HRESULT Next(
  580.             [in] ULONG celt,
  581.             [out] ITACDGroup ** ppElements,
  582.             [out] ULONG * pceltFetched
  583.             );
  584.     HRESULT Reset( void );
  585.     HRESULT Skip (
  586.             [in] ULONG celt
  587.             );
  588.                           
  589.     HRESULT Clone (
  590.             [out, retval] IEnumACDGroup ** ppEnum
  591.             );
  592. }
  593. // IEnumAgentHandler
  594. [
  595.     uuid( 587E8C28-9802-11d1-A0A4-00805FC147D3 ),
  596.     helpstring("TAPI 3.0 IEnumAgentHandler interface"),
  597.     hidden,
  598.     pointer_default(unique)
  599. ]
  600.     
  601. interface IEnumAgentHandler : IUnknown
  602. {
  603.     HRESULT Next(
  604.             [in] ULONG celt,
  605.             [out] ITAgentHandler ** ppElements,
  606.             [out] ULONG * pceltFetched
  607.             );
  608.     HRESULT Reset( void );
  609.     HRESULT Skip (
  610.             [in] ULONG celt
  611.             );
  612.     HRESULT Clone (
  613.             [out, retval] IEnumAgentHandler ** ppEnum
  614.             );
  615. }