Leaked source code of windows server 2003
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.

733 lines
24 KiB

  1. /*
  2. * appsap.h
  3. *
  4. * Copyright (c) 1995 by DataBeam Corporation, Lexington, KY
  5. *
  6. * Abstract:
  7. * This is the interface file for the class CAppSap. CAppSap
  8. * objects represent an external user application's Service Access
  9. * Point to GCC. This object inherits from the CBaseSap class. The CAppSap
  10. * object is instantiated when GCCCreateSap is called. From that point
  11. * forward all messages to and from that application pass through this
  12. * object. The object is explicitly deleted when GCCDeleteSap is called
  13. * or it is implicitly deleted when GCCCleanup is called by the Node
  14. * Controller.
  15. *
  16. * The primary responsibility of the CAppSap object is to route
  17. * incoming GCC primitives to their appropriate destination and to convert
  18. * the primitives into a form that is understandable to the objects
  19. * processing them. A secondary responsibility of the CAppSap object is to
  20. * maintain a queue for all indications and confirm messages that are sent
  21. * back to the registered application. Commands can be routed by the
  22. * CAppSap in one of two directions. Either to the controller or to a
  23. * specified conference. Commands that are passed to the controller, are
  24. * done so using owner callbacks. Commands that are routed to conferences
  25. * are done so using command target calls and are routed based on a
  26. * Conference ID. Note that various User Application commands will only be
  27. * routed to the CConf if that application has previously enrolled
  28. * with the conference. The CAppSap receives all confirms and indications
  29. * from either the Controller or a CConf object. These messages are
  30. * formatted into GCCMessages within the CAppSap and queued up for later
  31. * delivery. Periodically, the CAppSap's message queue is flushed by the
  32. * Controller object and the messages are delivered to the appropriate
  33. * application.
  34. *
  35. * Caveats:
  36. * The message structures that are passed back to the node controller
  37. * are defined in GCC.H.
  38. *
  39. * Author:
  40. * blp
  41. */
  42. #ifndef _APPSAP_
  43. #define _APPSAP_
  44. /*
  45. * include files
  46. */
  47. #include "igccapp.h"
  48. #include "sap.h"
  49. #include "clists.h"
  50. /*
  51. ** This is the message base that is passed into any SAP objects that use this
  52. ** classes Owner callback. It will typically be the controller's
  53. ** responsibility to pass this message on.
  54. */
  55. #define APPLICATION_MESSAGE_BASE 0
  56. /*
  57. ** Class definition
  58. */
  59. class CAppSap : public CBaseSap, public IGCCAppSap
  60. {
  61. friend LRESULT CALLBACK SapNotifyWndProc(HWND, UINT, WPARAM, LPARAM);
  62. public:
  63. CAppSap(LPVOID pAppData, LPFN_APP_SAP_CB, PGCCError);
  64. ~CAppSap(void);
  65. GCCAPI_(void) ReleaseInterface(void);
  66. /* ------ IGCCAppSap Interface ------ */
  67. GCCAPI AppEnroll(GCCConfID, GCCEnrollRequest *, PGCCRequestTag);
  68. GCCAPI AppInvoke(GCCConfID, GCCAppProtEntityList *, GCCSimpleNodeList *, PGCCRequestTag);
  69. GCCAPI AppRosterInquire(GCCConfID, GCCSessionKey *, GCCAppSapMsg **);
  70. GCCAPI_(void) FreeAppSapMsg(GCCAppSapMsg *);
  71. GCCAPI_(BOOL) IsThisNodeTopProvider(GCCConfID);
  72. GCCAPI_(GCCNodeID) GetTopProvider(GCCConfID);
  73. GCCAPI ConfRosterInquire(GCCConfID, GCCAppSapMsg **);
  74. GCCAPI RegisterChannel(GCCConfID, GCCRegistryKey *, ChannelID);
  75. GCCAPI RegistryAssignToken(GCCConfID, GCCRegistryKey *);
  76. GCCAPI RegistrySetParameter(GCCConfID, GCCRegistryKey *, LPOSTR, GCCModificationRights);
  77. GCCAPI RegistryRetrieveEntry(GCCConfID, GCCRegistryKey *);
  78. GCCAPI RegistryDeleteEntry(GCCConfID, GCCRegistryKey *);
  79. GCCAPI RegistryMonitor(GCCConfID, BOOL fEnableDelivery, GCCRegistryKey *);
  80. GCCAPI RegistryAllocateHandle(GCCConfID, ULONG cHandles);
  81. GCCAPI ConductorInquire(GCCConfID);
  82. /* ------ IGCCAppSapNotify Handler ------ */
  83. GCCError PermissionToEnrollIndication(GCCConfID, BOOL fGranted);
  84. GCCError AppEnrollConfirm(GCCAppEnrollConfirm *);
  85. GCCError RegistryAllocateHandleConfirm(GCCConfID,
  86. ULONG cHandles,
  87. ULONG nFirstHandle,
  88. GCCResult);
  89. GCCError RegistryConfirm(GCCConfID,
  90. GCCMessageType,
  91. CRegKeyContainer *,
  92. CRegItem *,
  93. GCCModificationRights,
  94. GCCNodeID nidOwner,
  95. GCCEntityID eidOwner,
  96. BOOL fDeliveryEnabled,
  97. GCCResult);
  98. GCCError RegistryMonitorIndication(GCCConfID nConfID,
  99. CRegKeyContainer *pRegKey,
  100. CRegItem *pRegItem,
  101. GCCModificationRights eRights,
  102. GCCNodeID nidOwner,
  103. GCCEntityID eidOwner)
  104. {
  105. return RegistryConfirm(nConfID,
  106. GCC_MONITOR_INDICATION,
  107. pRegKey,
  108. pRegItem,
  109. eRights,
  110. nidOwner,
  111. eidOwner,
  112. FALSE,
  113. GCC_RESULT_SUCCESSFUL);
  114. }
  115. GCCError ConfRosterInquireConfirm(GCCConfID,
  116. PGCCConferenceName,
  117. LPSTR pszConfModifier,
  118. LPWSTR pwszConfDescriptor,
  119. CConfRoster *,
  120. GCCResult,
  121. GCCAppSapMsgEx **);
  122. GCCError AppRosterInquireConfirm(GCCConfID,
  123. CAppRosterMsg *,
  124. GCCResult,
  125. GCCAppSapMsgEx **);
  126. GCCError AppRosterReportIndication(GCCConfID, CAppRosterMsg *);
  127. GCCError AppInvokeConfirm(GCCConfID, CInvokeSpecifierListContainer *, GCCResult, GCCRequestTag);
  128. GCCError AppInvokeIndication(GCCConfID, CInvokeSpecifierListContainer *, GCCNodeID nidInvoker);
  129. GCCError ConductorInquireConfirm(GCCNodeID nidConductor, GCCResult, BOOL fGranted, BOOL fConducted, GCCConfID);
  130. GCCError ConductorPermitGrantIndication(GCCConfID,
  131. UINT cGranted, GCCNodeID *aGranted,
  132. UINT cWaiting, GCCNodeID *aWaiting,
  133. BOOL fThisNodeIsGranted);
  134. GCCError ConductorAssignIndication(GCCNodeID nidConductor, GCCConfID);
  135. GCCError ConductorReleaseIndication(GCCConfID);
  136. protected:
  137. void NotifyProc(GCCAppSapMsgEx *pAppSapMsgEx);
  138. private:
  139. void PostAppSapMsg(GCCAppSapMsgEx *pAppSapMsgEx);
  140. void PurgeMessageQueue(void);
  141. private:
  142. LPVOID m_pAppData; // app defined user data
  143. LPFN_APP_SAP_CB m_pfnCallback;
  144. };
  145. /*
  146. * Comments explaining the public and protected class member functions
  147. */
  148. /*
  149. * CAppSap (
  150. * UINT owner_message_base,
  151. * UINT application_messsage_base)
  152. *
  153. * Public member function of CAppSap.
  154. *
  155. * Function Description:
  156. * This is the constructor for the CAppSap class. It initializes instance
  157. * variables and registers with the new application.
  158. *
  159. * Formal Parameters:
  160. * owner_object (i) A pointer to the owner of this object, namely
  161. * the controller.
  162. * owner_message_base (i) The message base offset for callbacks into the
  163. * controller.
  164. * application_object (i) A pointer to the application requesting service.
  165. * application_messsage_base (i) The message base offset for callbacks
  166. * to the application.
  167. * sap_handle (i) The handle registered for this SAP.
  168. *
  169. * Return Value:
  170. * None.
  171. *
  172. * Side Effects:
  173. * None.
  174. *
  175. * Caveats:
  176. * None.
  177. */
  178. /*
  179. * virtual ~AppSap();
  180. *
  181. * Public member function of CAppSap.
  182. *
  183. * Function Description:
  184. * This is the destructor for the CAppSap class. It is called when the
  185. * controller marks the CAppSap to be deleted. This occurs when either
  186. * the CAppSap asks to be deleted due to an "unregister request"
  187. * issued from the client application, or when there is an error
  188. * condition in the CAppSap.
  189. *
  190. * Formal Parameters:
  191. * owner_object (i) A pointer to the owner of this object, namely
  192. * the controller.
  193. * owner_message_base (i) The message base offset for callbacks into the
  194. * controller.
  195. * application_object (i) A pointer to the application requesting service.
  196. * application_messsage_base (i) The message base offset for callbacks
  197. * to the application.
  198. * sap_handle (i) The handle registered for this SAP.
  199. *
  200. * Return Value:
  201. * GCC_NO_ERROR - No error.
  202. * GCC_ALLOCATION_FAILURE - A resource allocation error occurred.
  203. * GCC_BAD_OBJECT_KEY - An invalid object key passed in.
  204. *
  205. * Side Effects:
  206. * None.
  207. *
  208. * Caveats:
  209. * None.
  210. */
  211. /*
  212. * GCCError AppEnroll(
  213. * GCCConfID conference_id,
  214. * PGCCSessionKey session_key,
  215. * BOOL enroll_actively,
  216. * UserID application_user_id,
  217. * BOOL is_conducting_capable,
  218. * MCSChannelType startup_channel_type,
  219. * UINT number_of_non_collapsed_caps,
  220. * PGCCNonCollapsingCapability *non_collapsed_caps_list,
  221. * UINT number_of_collapsed_caps,
  222. * PGCCApplicationCapability * collapsed_caps_list,
  223. * BOOL application_is_enrolled);
  224. *
  225. * Public member function of CAppSap.
  226. *
  227. * Function Description:
  228. * This routine is called when an application wants to enroll in a
  229. * conference. The controller is notified of the enrollment request.
  230. *
  231. * Formal Parameters:
  232. * conference_id (i) The conference identifier value.
  233. * session_key (i) Key identifying the session.
  234. * enroll_actively (i) Flag indicating whether to enroll
  235. * actively or inactively.
  236. * application_user_id (i) The application identifier value.
  237. * is_conducting_capable (i) Flag indicating whether this app
  238. * is capable of conducting.
  239. * startup_channel_type (i) The type of channel to use.
  240. * number_of_non_collapsed_caps (i) Number of non-collapsed capabilities
  241. * non_collapsed_caps_list (i) List of non-collapsed capabilities.
  242. * number_of_collapsed_caps (i) Number of collapsed capabilities.
  243. * collapsed_caps_list (i) List of collapsed capabilities.
  244. * application_is_enrolled) (i) Flag indicating whether or not the
  245. * application wishes to enroll.
  246. *
  247. * Return Value:
  248. * GCC_NO_ERROR - No error.
  249. * GCC_INVALID_MCS_USER_ID - The user ID is less than the minimum value
  250. * GCC_BAD_SESSION_KEY - A NULL session key pointer is passed in.
  251. * GCC_INVALID_CONFERENCE - The conference does not exist at this node
  252. * GCC_NO_SUCH_APPLICATION - A SAP has not been registered for this app
  253. * GCC_BAD_SESSION_KEY - An invalid session key was passed in.
  254. * GCC_INVALID_PARAMETER - The node record was not found in the list.
  255. * GCC_BAD_CAPABILITY_ID - An invalid capability ID was passed in.
  256. * GCC_ALLOCATION_FAILURE - A resource allocation error occurred.
  257. *
  258. * Side Effects:
  259. * None.
  260. *
  261. * Caveats:
  262. * None.
  263. */
  264. /*
  265. * GCCError RegisterChannel(
  266. * GCCConfID conference_id,
  267. * PGCCRegistryKey registry_key,
  268. * ChannelID channel_id);
  269. *
  270. * Public member function of CAppSap.
  271. *
  272. * Function Description:
  273. * This routine is called when an application wishes to register a
  274. * channel. The call is routed to the appropriate conference object.
  275. *
  276. * Formal Parameters:
  277. * conference_id (i) The conference identifier value.
  278. * registry_key (i) Key identifying the session and
  279. * resource ID.
  280. * channel_id (i) ID of channel to register
  281. *
  282. * Return Value:
  283. * GCC_NO_ERROR - No error.
  284. * GCC_INVALID_CONFERENCE - Conference not found to exist.
  285. * GCC_ALLOCATION_FAILURE - A resource error occurred.
  286. * GCC_BAD_REGISTRY_KEY - The registry key is invalid.
  287. * GCC_APP_NOT_ENROLLED - Requesting application is not
  288. * enrolled with the conference.
  289. *
  290. * Side Effects:
  291. * None.
  292. *
  293. * Caveats:
  294. * None.
  295. */
  296. /*
  297. * GCCError RegistryAssignToken(
  298. * GCCConfID conference_id,
  299. * PGCCRegistryKey registry_key);
  300. *
  301. * Public member function of CAppSap.
  302. *
  303. * Function Description:
  304. * This routine is called when an application wishes to assign a
  305. * token. The call is routed to the appropriate conference object.
  306. *
  307. * Formal Parameters:
  308. * conference_id (i) The conference identifier value.
  309. * registry_key (i) Key identifying the session and
  310. * resource ID.
  311. *
  312. * Return Value:
  313. * GCC_NO_ERROR - No error.
  314. * GCC_INVALID_CONFERENCE - Conference not found to exist.
  315. * GCC_ALLOCATION_FAILURE - A resource error occurred.
  316. * GCC_BAD_REGISTRY_KEY - The registry key is invalid.
  317. * GCC_APP_NOT_ENROLLED - Requesting application is not
  318. * enrolled with the conference.
  319. *
  320. * Side Effects:
  321. * None.
  322. *
  323. * Caveats:
  324. * None.
  325. */
  326. /*
  327. * GCCError GCCRegistrySetParameterRequest (
  328. * GCCConfID conference_id,
  329. * PGCCRegistryKey registry_key,
  330. * LPOSTR parameter_value,
  331. * GCCModificationRights modification_rights );
  332. *
  333. * Public member function of CAppSap.
  334. *
  335. * Function Description:
  336. * This routine is called when an application wishes to set a
  337. * parameter. The call is routed to the appropriate conference object.
  338. *
  339. * Formal Parameters:
  340. * conference_id (i) The conference identifier value.
  341. * registry_key (i) Key identifying the session and
  342. * resource ID.
  343. * parameter_value (i) String identifying the parameter
  344. * to set.
  345. * modification_rights (i) Structure specifying the rights
  346. * to be allowed for modifying
  347. * the registry parameter.
  348. *
  349. * Return Value:
  350. * GCC_NO_ERROR - No error.
  351. * GCC_INVALID_CONFERENCE - Conference not found to exist.
  352. * GCC_ALLOCATION_FAILURE - A resource error occurred.
  353. * GCC_BAD_REGISTRY_KEY - The registry key is invalid.
  354. * GCC_APP_NOT_ENROLLED - Requesting application is not
  355. * enrolled with the conference.
  356. * GCC_INVALID_MODIFICATION_RIGHTS - The modification rights passed in
  357. * were not valid.
  358. *
  359. * Side Effects:
  360. * None.
  361. *
  362. * Caveats:
  363. * None.
  364. */
  365. /*
  366. * GCCError GCCRegistryRetrieveEntryRequest(
  367. * GCCConfID conference_id,
  368. * PGCCRegistryKey registry_key);
  369. *
  370. * Public member function of CAppSap.
  371. *
  372. * Function Description:
  373. * This routine is called when an application wishes to retrieve a registry
  374. * entry. The call is routed to the appropriate conference object.
  375. *
  376. * Formal Parameters:
  377. * conference_id (i) The conference identifier value.
  378. * registry_key (i) Key identifying the session and
  379. * resource ID.
  380. *
  381. * Return Value:
  382. * GCC_NO_ERROR - No error.
  383. * GCC_INVALID_CONFERENCE - Conference not found to exist.
  384. * GCC_ALLOCATION_FAILURE - A resource error occurred.
  385. * GCC_BAD_REGISTRY_KEY - The registry key is invalid.
  386. * GCC_APP_NOT_ENROLLED - Requesting application is not
  387. * enrolled with the conference.
  388. *
  389. * Side Effects:
  390. * None.
  391. *
  392. * Caveats:
  393. * None.
  394. */
  395. /*
  396. * GCCError GCCRegistryDeleteEntryRequest(
  397. * GCCConfID conference_id,
  398. * PGCCRegistryKey registry_key);
  399. *
  400. * Public member function of CAppSap.
  401. *
  402. * Function Description:
  403. * This routine is called when an application wishes to delete a registry
  404. * entry. The call is routed to the appropriate conference object.
  405. *
  406. * Formal Parameters:
  407. * conference_id (i) The conference identifier value.
  408. * registry_key (i) Key identifying the session and
  409. * resource ID.
  410. *
  411. * Return Value:
  412. * GCC_NO_ERROR - No error.
  413. * GCC_INVALID_CONFERENCE - Conference not found to exist.
  414. * GCC_ALLOCATION_FAILURE - A resource error occurred.
  415. * GCC_BAD_REGISTRY_KEY - The registry key is invalid.
  416. * GCC_APP_NOT_ENROLLED - Requesting application is not
  417. * enrolled with the conference.
  418. *
  419. * Side Effects:
  420. * None.
  421. *
  422. * Caveats:
  423. * None.
  424. */
  425. /*
  426. * GCCError GCCRegistryMonitorRequest (
  427. * GCCConfID conference_id,
  428. * BOOL enable_delivery,
  429. * PGCCRegistryKey registry_key );
  430. *
  431. * Public member function of CAppSap.
  432. *
  433. * Function Description:
  434. * This routine is called when an application wishes to monitor a
  435. * particular registry entry. The call is routed to the appropriate
  436. * conference object.
  437. *
  438. * Formal Parameters:
  439. * conference_id (i) The conference identifier value.
  440. * enable_delivery (i) Flag indicating whether to turn
  441. * monitoring on or off.
  442. * registry_key (i) Key identifying the session and
  443. * resource ID.
  444. *
  445. * Return Value:
  446. * GCC_NO_ERROR - No error.
  447. * GCC_INVALID_CONFERENCE - Conference not found to exist.
  448. * GCC_ALLOCATION_FAILURE - A resource error occurred.
  449. * GCC_BAD_REGISTRY_KEY - The registry key is invalid.
  450. * GCC_APP_NOT_ENROLLED - Requesting application is not
  451. * enrolled with the conference.
  452. *
  453. * Side Effects:
  454. * None.
  455. *
  456. * Caveats:
  457. * None.
  458. */
  459. /*
  460. * GCCError GCCRegistryAllocateHandleRequest (
  461. * GCCConfID conference_id,
  462. * UINT number_of_handles );
  463. *
  464. * Public member function of CAppSap.
  465. *
  466. * Function Description:
  467. * This routine is called when an application wishes to allocate one or
  468. * more handles. The call is routed to the appropriate conference object.
  469. *
  470. * Formal Parameters:
  471. * conference_id (i) The conference identifier value.
  472. * number_of_handles (i) The number of handles to allocate.
  473. *
  474. * Return Value:
  475. * GCC_NO_ERROR - No error.
  476. * GCC_INVALID_CONFERENCE - Conference not found to exist.
  477. * GCC_BAD_NUMBER_OF_HANDLES - The number of handles requested is
  478. * not within the allowable range.
  479. * GCC_ALLOCATION_FAILURE - A resource error occurred.
  480. * GCC_BAD_REGISTRY_KEY - The registry key is invalid.
  481. * GCC_APP_NOT_ENROLLED - Requesting application is not
  482. * enrolled with the conference.
  483. *
  484. * Side Effects:
  485. * None.
  486. *
  487. * Caveats:
  488. * None.
  489. */
  490. /*
  491. * GCCError PermissionToEnrollIndication(
  492. * GCCConfID conference_id,
  493. * PGCCConferenceName conference_name,
  494. * GCCNumericString conference_modifier,
  495. * BOOL permission_is_granted);
  496. *
  497. * Public member function of CAppSap.
  498. *
  499. * Function Description:
  500. * This routine is called from a conference object when it wishes to send
  501. * an indication to the user application notifying it of a "permission to
  502. * enroll" event. This does not mean that permission to enroll is
  503. * necessarily granted to the application. It may mean that permission is
  504. * being revoked.
  505. *
  506. * Formal Parameters:
  507. * conference_id (i) The conference identifier value.
  508. * conference_name (i) The conference name.
  509. * conference_modifier (i) The confererence modifier.
  510. * permission_is_granted (i) Flag indicating whether or not
  511. * permission to enroll is granted.
  512. *
  513. * Return Value:
  514. * GCC_NO_ERROR - No error.
  515. * GCC_ALLOCATION_FAILURE - A resource allocation error occurred.
  516. *
  517. * Side Effects:
  518. * None.
  519. *
  520. * Caveats:
  521. * None.
  522. */
  523. /*
  524. * GCCError AppEnrollConfirm(GCCAppEnrollConfirm *);
  525. * GCCConfID conference_id,
  526. * PGCCSessionKey session_key,
  527. * UINT entity_id,
  528. * UserID node_id,
  529. * GCCResult result);
  530. *
  531. * Public member function of CAppSap.
  532. *
  533. * Function Description:
  534. * This routine is called by the CConf object when it wishes
  535. * to send an enrollment confirmation to the user application.
  536. *
  537. * Formal Parameters:
  538. * conference_id (i) The conference identifier value.
  539. * session_key (i) The key identifying the session.
  540. * entity_id (i) The ID for this instance of the
  541. * application.
  542. * node_id (i) ID for this node.
  543. * result (i) Result code indicating whether or not
  544. * the enrollment was successful.
  545. *
  546. * Return Value:
  547. * GCC_NO_ERROR - No error.
  548. * GCC_ALLOCATION_FAILURE - A resource error occurred.
  549. * GCC_BAD_SESSION_KEY - The session key is invalid.
  550. *
  551. * Side Effects:
  552. * None.
  553. *
  554. * Caveats:
  555. * None.
  556. */
  557. /*
  558. * GCCError RegistryConfirm (
  559. * GCCConfID conference_id,
  560. * GCCMessageType message_type,
  561. * CRegKeyContainer *registry_key_data,
  562. * CRegItem *registry_item_data,
  563. * GCCModificationRights modification_rights,
  564. * UserID owner_id,
  565. * EntityID entity_id,
  566. * BOOL enable_monitoring,
  567. * GCCResult result);
  568. *
  569. * Public member function of CAppSap.
  570. *
  571. * Function Description:
  572. * This command target routine is called by the CConf object when it
  573. * wishes to send an registry confirmation to the user application.
  574. *
  575. * Formal Parameters:
  576. * conference_id (i) The conference identifier value.
  577. * message_type (i) Indicates what type of registry item
  578. * confirm this is.
  579. * registry_key_data (i) Object holding the registry key.
  580. * registry_item_data (i) Object holding the registry item.
  581. * modification_rights (i) Structure specifying the rights
  582. * to be allowed for modifying
  583. * the registry parameter.
  584. * owner_id (i) The ID of the owner of the registry item
  585. * entity_id (i) The ID for this instance of the
  586. * application.
  587. * enable_monitoring (i) Flag indicating whether the registry
  588. * item is to be monitored.
  589. * result (i) Result code indicating whether or not
  590. * the registry request was successful.
  591. *
  592. * Return Value:
  593. * GCC_NO_ERROR - No error.
  594. * GCC_ALLOCATION_FAILURE - A resource error occurred.
  595. *
  596. * Side Effects:
  597. * None.
  598. *
  599. * Caveats:
  600. * None.
  601. */
  602. /*
  603. * GCCError RegistryMonitorIndication(
  604. * GCCConfID conference_id,
  605. * CRegKeyContainer *registry_key_data,
  606. * CRegItem *registry_item_data,
  607. * GCCModificationRights modification_rights,
  608. * UserID owner_id,
  609. * EntityID owner_entity_id);
  610. *
  611. * Public member function of CAppSap.
  612. *
  613. * Function Description:
  614. * This command target routine is called by the CConf object when it
  615. * wishes to send a Registry monitor indication to the user application.
  616. *
  617. * Formal Parameters:
  618. * conference_id (i) The conference identifier value.
  619. * registry_key_data (i) Object holding the registry key.
  620. * registry_item_data (i) Object holding the registry item.
  621. * modification_rights (i) Structure specifying the rights
  622. * to be allowed for modifying
  623. * the registry parameter.
  624. * owner_id (i) The ID of the owner of the registry item
  625. * owner_entity_id (i) The ID for the instance of the
  626. * application owning the registry.
  627. *
  628. * Return Value:
  629. * GCC_NO_ERROR - No error.
  630. * GCC_ALLOCATION_FAILURE - A resource error occurred.
  631. *
  632. * Side Effects:
  633. * None.
  634. *
  635. * Caveats:
  636. * None.
  637. */
  638. /*
  639. * GCCError RegistryAllocateHandleConfirm(
  640. * GCCConfID conference_id,
  641. * UINT number_of_handles,
  642. * UINT first_handle,
  643. * GCCResult result);
  644. *
  645. * Public member function of CAppSap.
  646. *
  647. * Function Description:
  648. * This routine is called by the CConf object when it wishes
  649. * to send an enrollment confirmation to the user application.
  650. *
  651. * Formal Parameters:
  652. * conference_id (i) The conference identifier value.
  653. * number_of_handles (i) The number of handles allocated.
  654. * first_handle (i) The first handle allocated.
  655. * result (i) Result code indicating whether or not
  656. * the handle allocation was successful
  657. *
  658. * Return Value:
  659. * GCC_NO_ERROR - No error.
  660. * GCC_ALLOCATION_FAILURE - A resource error occurred.
  661. *
  662. * Side Effects:
  663. * None.
  664. *
  665. * Caveats:
  666. * None.
  667. */
  668. #endif