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.

832 lines
15 KiB

  1. //>-------------------------------------------------------------------------------<
  2. //
  3. // File: Actldb.h
  4. //
  5. // Synopsis: All defs and declarations for actldb.cpp, including the following
  6. // sysop API's for accout/group/token maintenance in security DB:
  7. //
  8. // AddAcct
  9. // DeleteAcct
  10. // DeleteAcctByLogin
  11. // SetPassword
  12. // GetHandle
  13. // GetAcctInfo
  14. //
  15. // EnumUserGroups
  16. // EnumUserGroupsEx
  17. // GetUserGroupDetails
  18. // FindUserGroup
  19. // AddUserGroup
  20. // UpdateUserGroup
  21. // DeleteUserGroup
  22. // EnumGroupMembers
  23. // EnumGroupMembersEx
  24. // EnumGroupMembersExpire
  25. // EnumGroupMembersExpireEx
  26. // AddAcctToGroup
  27. // AddAcctToGroupExpire
  28. // RemoveAcctFromGroup
  29. // RemoveExpiredAcctsFromGroup
  30. //
  31. // EnumTokens
  32. // EnumTokensEx
  33. // CreateToken
  34. // ModifyToken
  35. // DeleteToken
  36. // EnumAcctPrivateTokens
  37. // EnumAcctPrivateTokensEx
  38. // EnumGroupsWithToken
  39. // EnumGroupsWithTokenEx
  40. // EnumGroupsWithTokenExpire
  41. // EnumGroupsWithTokenExpireEx
  42. // AddGroupToToken
  43. // AddGroupToTokenExpire
  44. // EnumAcctsWithToken
  45. // RemoveGroupFromToken
  46. // RemoveExpiredGroupsFromToken
  47. // EnumAcctsWithToken
  48. // EnumAcctsWithTokenEx
  49. // EnumAcctsWithTokenExpire
  50. // EnumAcctsWithTokenExpireEx
  51. // AddAcctToToken
  52. // AddAcctToTokenExpire
  53. // RemoveAcctFromToken
  54. // RemoveExpiredAcctsFromToken
  55. // GetTokenDetails
  56. // TokenIdFromTokenName
  57. // UiIsAccountInGroup
  58. // EnumExcludedAccts
  59. // EnumExcludedAcctsEx
  60. // AddExclusion
  61. // AddExclusionEx
  62. // RemoveExclusion
  63. // GetMaxTokenId
  64. //
  65. // AddAccessPlan
  66. // UpdateAccessPlan
  67. // DeleteAccessPlan
  68. // EnumAccessPlans
  69. // EnumAccessPlansEx
  70. //
  71. // SearchAcctsWithToken
  72. // SearchExcludedAcctsWithToken
  73. // SearchGroupMembers
  74. // SearchGroupsWithToken
  75. // SearchTokens
  76. // SearchUserGroups
  77. // TotalAcctsWithToken
  78. // TotalExcludedAcctsWithToken
  79. // TotalGroupMembers
  80. // TotalGroupsWithToken
  81. // TotalTokens
  82. // TotalUserGroups
  83. //
  84. // History: DanielLi Ported to 2.x tree 03/22/96
  85. //
  86. // Copyright (C) 1994-1996 Microsoft Corporation
  87. // All rights reserved
  88. //
  89. //>-------------------------------------------------------------------------------<
  90. #if !defined(__ACTLDB_H__)
  91. #define __ACTLDB_H__
  92. #include <acsctl.h>
  93. #if !defined(_ACTLDB_DLL_DEFINED)
  94. #if defined(WIN32)
  95. #if defined(_ACTLDBDLL)
  96. #define ActlDBDLL DllExport __stdcall
  97. #else
  98. #define ActlDBDLL DllImport __stdcall
  99. #endif
  100. #else
  101. #define ActlDBDLL
  102. #endif
  103. #define _ACTLDB_DLL_DEFINED
  104. #endif
  105. //
  106. // Structures to manipulate token, group, account info
  107. //
  108. typedef struct _ACCOUNT_INFO
  109. {
  110. HACCT hAcct;
  111. CHAR szLoginName[AC_MAX_LOGIN_NAME_LENGTH+1];
  112. CHAR szDomainName[AC_MAX_DOMAIN_NAME_LENGTH+1]; // reserved
  113. CHAR szFirstName[AC_MAX_FIRST_NAME_LENGTH+1];
  114. CHAR szLastName[AC_MAX_LAST_NAME_LENGTH+1];
  115. WORD wAcctType;
  116. CHAR szPassword[AC_MAX_PASSWORD_LENGTH+1];
  117. WORD wAcctStatus;
  118. SYSTEMTIME tmExpired;
  119. } ACCOUNT_INFO, *PACCOUNT_INFO;
  120. typedef struct _ACCOUNT_INFO_RIGHT
  121. {
  122. HACCT hAcct;
  123. CHAR szLoginName[AC_MAX_LOGIN_NAME_LENGTH+1];
  124. CHAR szFirstName[AC_MAX_FIRST_NAME_LENGTH+1];
  125. CHAR szLastName[AC_MAX_LAST_NAME_LENGTH+1];
  126. AR arRight;
  127. SYSTEMTIME tmExpired;
  128. } ACCOUNT_INFO_RIGHT, *PACCOUNT_INFO_RIGHT;
  129. typedef struct _USER_GROUP
  130. {
  131. HGROUP hGroup;
  132. CHAR szName[AC_MAX_GROUP_NAME_LENGTH];
  133. } USER_GROUP, *PUSER_GROUP;
  134. typedef struct _USER_GROUP_RIGHT
  135. {
  136. HGROUP hGroup;
  137. CHAR szName[AC_MAX_GROUP_NAME_LENGTH+1];
  138. AR arRight;
  139. SYSTEMTIME tmExpired;
  140. } USER_GROUP_RIGHT, *PUSER_GROUP_RIGHT;
  141. typedef struct _USER_GROUP_DETAILS
  142. {
  143. HGROUP hGroup;
  144. CHAR szName[AC_MAX_GROUP_NAME_LENGTH];
  145. TOKEN token;
  146. } USER_GROUP_DETAILS, *PUSER_GROUP_DETAILS;
  147. typedef struct _TOKEN_DETAILS
  148. {
  149. TOKEN token;
  150. CHAR szName[AC_MAX_TOKEN_NAME_LENGTH+1];
  151. CHAR szDesc[AC_MAX_TOKEN_DESC_LENGTH+1];
  152. HGROUP hOwnerGroup;
  153. } TOKEN_DETAILS, *PTOKEN_DETAILS;
  154. typedef struct _TOKEN_RIGHT
  155. {
  156. TOKEN token;
  157. AR arRight;
  158. SYSTEMTIME tmExpired;
  159. } TOKEN_RIGHT, *PTOKEN_RIGHT;
  160. typedef struct _ACCESS_PLAN
  161. {
  162. HGROUP hGroup; // group id used as plan id
  163. HACCT hAcct; // proxy account for this group
  164. HACCT hOwner; // reserved for owner id
  165. } ACCESS_PLAN, *PACCESS_PLAN;
  166. //--------------------------------------------------------------------------------
  167. //
  168. // Prototypes of caller-defined callback functions passed into EnumXXXXEx API's
  169. //
  170. //--------------------------------------------------------------------------------
  171. typedef UINT (__cdecl *PGROUPENUMPROC)( PUSER_GROUP pGroup, LPARAM lParam );
  172. typedef UINT (__cdecl *PACCTENUMPROC)( PACCOUNT_INFO pAcct, LPARAM lParam );
  173. typedef UINT (__cdecl *PTOKENENUMPROC)( PTOKEN_DETAILS pToken, LPARAM lParam );
  174. typedef UINT (__cdecl *PTOKENRITENUMPROC)( PTOKEN_RIGHT pTokenRit, LPARAM lParam );
  175. typedef UINT (__cdecl *PACCTRITENUMPROC)( PACCOUNT_INFO_RIGHT pAcctRit, LPARAM lParam );
  176. typedef UINT (__cdecl *PGROUPRITENUMPROC)( PUSER_GROUP_RIGHT pGroupRit, LPARAM lParam );
  177. typedef UINT (__cdecl *PPLANENUMPROC)( PACCESS_PLAN pPlan, LPARAM lParam );
  178. //--------------------------------------------------------------------------------
  179. //
  180. // Performance counters
  181. //
  182. //--------------------------------------------------------------------------------
  183. typedef struct _SECURITY_STATISTICS
  184. {
  185. //
  186. // number of AddAcct are called
  187. //
  188. DWORD dwAddAcct;
  189. //
  190. // number of AddAcct failed
  191. //
  192. DWORD dwAddAcctFailures;
  193. DWORD dwDeleteAcct;
  194. DWORD dwDeleteAcctFailures;
  195. DWORD dwSetPassword;
  196. DWORD dwSetPasswordFailures;
  197. DWORD dwGetHandle;
  198. DWORD dwGetHandleFailures;
  199. DWORD dwAddAcctToToken;
  200. DWORD dwAddAcctToTokenFailures;
  201. DWORD dwRemoveAcctFromToken;
  202. DWORD dwRemoveAcctFromTokenFailures;
  203. DWORD dwGetTokenDetails;
  204. DWORD dwGetTokenDetailsFailures;
  205. DWORD dwEnumAcctPrivateTokens;
  206. DWORD dwEnumAcctPrivateTokensFailures;
  207. DWORD dwGetAcctInfo;
  208. DWORD dwGetAcctInfoFailures;
  209. } SECURITY_STATISTICS, *PSECURITY_STATISTICS;
  210. #define INC_SECURITY_COUNTER(counter) (InterlockedIncrement((LPLONG)&g_statSecurity.##counter))
  211. #define DEC_SECURITY_COUNTER(counter) (InterlockedDecrement((LPLONG)&g_statSecurity.##counter))
  212. extern "C"
  213. {
  214. BOOL ActlDBDLL FInitSecurityLib(BOOL fCacheExisted);
  215. VOID ActlDBDLL TerminateSecurityLib();
  216. UINT ActlDBDLL UiGetSecurityPerfmonBlock(PSECURITY_STATISTICS *ppStat);
  217. UINT ActlDBDLL UiRegisterSecurityDB(CHAR *szServerName, CHAR *szDBName, CHAR *szLogin, CHAR *szPassword);
  218. UINT ActlDBDLL
  219. AddAcct
  220. (
  221. PACCOUNT_INFO pAcctInfo
  222. );
  223. UINT ActlDBDLL
  224. DeleteAcct
  225. (
  226. HACCT hAcct
  227. );
  228. UINT ActlDBDLL
  229. DeleteAcctByLogin
  230. (
  231. CHAR *szLoginName
  232. );
  233. UINT ActlDBDLL
  234. SetPassword
  235. (
  236. HACCT hAcct,
  237. PCHAR szOldPassword,
  238. PCHAR szNewPassword
  239. );
  240. UINT ActlDBDLL
  241. GetHandle
  242. (
  243. PCHAR szLoginName,
  244. PHACCT phAcct
  245. );
  246. UINT ActlDBDLL
  247. GetAcctInfo
  248. (
  249. HACCT hAcct,
  250. PACCOUNT_INFO pAcctInfo
  251. );
  252. UINT ActlDBDLL
  253. EnumUserGroups
  254. (
  255. PUSER_GROUP pGroups,
  256. DWORD cBuf,
  257. LPDWORD pcTotal,
  258. LPDWORD pcReturned
  259. );
  260. UINT ActlDBDLL
  261. EnumUserGroupsEx
  262. (
  263. PGROUPENUMPROC lpGroupEnumFunc,
  264. LPARAM lParam
  265. );
  266. UINT ActlDBDLL
  267. GetUserGroupDetails
  268. (
  269. HGROUP hGroup,
  270. PUSER_GROUP_DETAILS pDetails
  271. );
  272. UINT ActlDBDLL
  273. FindUserGroup
  274. (
  275. PSTR szName,
  276. PUSER_GROUP_DETAILS pDetails
  277. );
  278. UINT ActlDBDLL
  279. AddUserGroup
  280. (
  281. PUSER_GROUP_DETAILS pDetails
  282. );
  283. UINT ActlDBDLL
  284. UpdateUserGroup
  285. (
  286. PUSER_GROUP_DETAILS pDetails
  287. );
  288. UINT ActlDBDLL
  289. DeleteUserGroup
  290. (
  291. HGROUP hGroup
  292. );
  293. UINT ActlDBDLL
  294. EnumGroupMembers
  295. (
  296. HGROUP hGroup,
  297. PACCOUNT_INFO pAccts,
  298. DWORD cBuf,
  299. LPDWORD pcTotal,
  300. LPDWORD pcReturned
  301. );
  302. UINT ActlDBDLL
  303. EnumGroupMembersEx
  304. (
  305. HGROUP hGroup,
  306. PACCTENUMPROC lpAcctEnumFunc,
  307. LPARAM lParam
  308. );
  309. UINT ActlDBDLL
  310. EnumGroupMembersExpire
  311. (
  312. HGROUP hGroup,
  313. LPSYSTEMTIME lptmExpired,
  314. PACCOUNT_INFO pAccts,
  315. DWORD cBuf,
  316. LPDWORD pcTotal,
  317. LPDWORD pcReturned
  318. );
  319. UINT ActlDBDLL
  320. EnumGroupMembersExpireEx
  321. (
  322. HGROUP hGroup,
  323. LPSYSTEMTIME lptmExpired,
  324. PACCTENUMPROC lpAcctEnumFunc,
  325. LPARAM lParam
  326. );
  327. UINT ActlDBDLL
  328. AddAcctToGroup
  329. (
  330. HGROUP hGroup,
  331. HACCT hAcct
  332. );
  333. UINT ActlDBDLL
  334. AddAcctToGroupExpire
  335. (
  336. HGROUP hGroup,
  337. HACCT hAcct,
  338. LPSYSTEMTIME lptmExpired
  339. );
  340. UINT ActlDBDLL
  341. RemoveAcctFromGroup
  342. (
  343. HGROUP hGroup,
  344. HACCT hAcct
  345. );
  346. UINT ActlDBDLL
  347. RemoveExpiredAcctsFromGroup
  348. (
  349. HGROUP hGroup
  350. );
  351. UINT ActlDBDLL
  352. EnumTokens
  353. (
  354. PTOKEN_DETAILS pTokens,
  355. DWORD cBuf,
  356. LPDWORD pcTotal,
  357. LPDWORD pcReturned
  358. );
  359. UINT ActlDBDLL
  360. EnumTokensEx
  361. (
  362. PTOKENENUMPROC lpTokenEnumFunc,
  363. LPARAM lParam
  364. );
  365. UINT ActlDBDLL
  366. CreateToken
  367. (
  368. PTOKEN_DETAILS pToken
  369. );
  370. UINT ActlDBDLL
  371. ModifyToken
  372. (
  373. PTOKEN_DETAILS pToken
  374. );
  375. UINT ActlDBDLL
  376. DeleteToken
  377. (
  378. TOKEN token
  379. );
  380. UINT ActlDBDLL
  381. EnumAcctPrivateTokens
  382. (
  383. HACCT hAcct,
  384. AR arRight,
  385. PTOKEN_RIGHT pTokenRit,
  386. DWORD cBuf,
  387. LPDWORD pcTotal,
  388. LPDWORD pcReturned
  389. );
  390. UINT ActlDBDLL
  391. EnumAcctPrivateTokensEx
  392. (
  393. HACCT hAcct,
  394. AR arRight,
  395. PTOKENRITENUMPROC lpTokenRitEnumFunc,
  396. LPARAM lParam
  397. );
  398. UINT ActlDBDLL
  399. EnumGroupsWithToken
  400. (
  401. TOKEN token,
  402. PUSER_GROUP_RIGHT pGroups,
  403. DWORD cBuf,
  404. LPDWORD pcTotal,
  405. LPDWORD pcReturned
  406. );
  407. UINT ActlDBDLL
  408. EnumGroupsWithTokenEx
  409. (
  410. TOKEN token,
  411. PGROUPRITENUMPROC lpGroupRitEnumFunc,
  412. LPARAM lParam
  413. );
  414. UINT ActlDBDLL
  415. EnumGroupsWithTokenExpire
  416. (
  417. TOKEN token,
  418. LPSYSTEMTIME lptmExpired,
  419. PUSER_GROUP_RIGHT pGroups,
  420. DWORD cBuf,
  421. LPDWORD pcTotal,
  422. LPDWORD pcReturned
  423. );
  424. UINT ActlDBDLL
  425. EnumGroupsWithTokenExpireEx
  426. (
  427. TOKEN token,
  428. LPSYSTEMTIME lptmExpired,
  429. PGROUPRITENUMPROC lpGroupRitEnumFunc,
  430. LPARAM lParam
  431. );
  432. UINT ActlDBDLL
  433. AddGroupToToken
  434. (
  435. TOKEN token,
  436. HGROUP hGroup,
  437. AR wRights
  438. );
  439. UINT ActlDBDLL
  440. AddGroupToTokenExpire
  441. (
  442. TOKEN token,
  443. HGROUP hGroup,
  444. AR wRights,
  445. LPSYSTEMTIME lptmExpired
  446. );
  447. UINT ActlDBDLL
  448. RemoveGroupFromToken
  449. (
  450. TOKEN token,
  451. HGROUP hGroup
  452. );
  453. UINT ActlDBDLL
  454. RemoveExpiredGroupsFromToken
  455. (
  456. TOKEN token
  457. );
  458. UINT ActlDBDLL
  459. EnumAcctsWithToken
  460. (
  461. TOKEN token,
  462. PACCOUNT_INFO_RIGHT pAcctRits,
  463. DWORD cBuf,
  464. LPDWORD pcTotal,
  465. LPDWORD pcReturned
  466. );
  467. UINT ActlDBDLL
  468. EnumAcctsWithTokenEx
  469. (
  470. TOKEN token,
  471. PACCTRITENUMPROC lpAcctRitEnumFunc,
  472. LPARAM lParam
  473. );
  474. UINT ActlDBDLL
  475. EnumAcctsWithTokenExpire
  476. (
  477. TOKEN token,
  478. LPSYSTEMTIME lptmExpired,
  479. PACCOUNT_INFO_RIGHT pAcctRits,
  480. DWORD cBuf,
  481. LPDWORD pcTotal,
  482. LPDWORD pcReturned
  483. );
  484. UINT ActlDBDLL
  485. EnumAcctsWithTokenExpireEx
  486. (
  487. TOKEN token,
  488. LPSYSTEMTIME lptmExpired,
  489. PACCTRITENUMPROC lpAcctRitEnumFunc,
  490. LPARAM lParam
  491. );
  492. UINT ActlDBDLL
  493. AddAcctToToken
  494. (
  495. TOKEN token,
  496. HACCT hAcct,
  497. AR arRights
  498. );
  499. UINT ActlDBDLL
  500. AddAcctToTokenExpire
  501. (
  502. TOKEN token,
  503. HACCT hAcct,
  504. AR arRights,
  505. LPSYSTEMTIME lptmExpired
  506. );
  507. UINT ActlDBDLL
  508. RemoveAcctFromToken
  509. (
  510. TOKEN token,
  511. HACCT hAcct
  512. );
  513. UINT ActlDBDLL
  514. RemoveExpiredAcctsFromToken
  515. (
  516. TOKEN token
  517. );
  518. UINT ActlDBDLL
  519. GetTokenDetails
  520. (
  521. TOKEN token,
  522. PTOKEN_DETAILS pDetails
  523. );
  524. UINT ActlDBDLL
  525. TokenIdFromTokenName
  526. (
  527. PSTR szName,
  528. TOKEN *ptoken
  529. );
  530. UINT ActlDBDLL
  531. UiIsAccountInGroup
  532. (
  533. HACCT hAcct,
  534. HGROUP hGroup,
  535. PBOOL pfRet
  536. );
  537. UINT ActlDBDLL
  538. EnumExcludedAccts
  539. (
  540. TOKEN token,
  541. PACCOUNT_INFO_RIGHT pAcctRits,
  542. DWORD cBuf,
  543. LPDWORD pcTotal,
  544. LPDWORD pcReturned
  545. );
  546. UINT ActlDBDLL
  547. EnumExcludedAcctsEx
  548. (
  549. TOKEN token,
  550. PACCTRITENUMPROC lpAcctRitEnumFunc,
  551. LPARAM lParam
  552. );
  553. UINT ActlDBDLL
  554. AddExclusion
  555. (
  556. TOKEN token,
  557. HACCT hAcct
  558. );
  559. UINT ActlDBDLL
  560. AddExclusionEx
  561. (
  562. TOKEN token,
  563. HACCT hAcct,
  564. AR arRights
  565. );
  566. UINT ActlDBDLL
  567. RemoveExclusion
  568. (
  569. TOKEN token,
  570. HACCT hAcct
  571. );
  572. UINT ActlDBDLL
  573. GetMaxTokenId
  574. (
  575. PTOKEN plMaxTokenId
  576. );
  577. BOOL ActlDBDLL
  578. IsLegalPassword
  579. (
  580. CHAR *szOldPassword,
  581. CHAR *szNewPassword
  582. );
  583. BOOL ActlDBDLL
  584. IsLegalLoginName
  585. (
  586. CHAR *szLoginName
  587. );
  588. UINT ActlDBDLL
  589. AddAccessPlan
  590. (
  591. PACCESS_PLAN pPlan
  592. );
  593. UINT ActlDBDLL
  594. DeleteAccessPlan
  595. (
  596. HGROUP hGroup
  597. );
  598. UINT ActlDBDLL
  599. UpdateAccessPlan
  600. (
  601. PACCESS_PLAN pPlan
  602. );
  603. UINT ActlDBDLL
  604. EnumAccessPlans
  605. (
  606. PACCESS_PLAN pPlan,
  607. DWORD cBuf,
  608. LPDWORD pcTotal,
  609. LPDWORD pcReturned
  610. );
  611. UINT ActlDBDLL
  612. EnumAccessPlansEx
  613. (
  614. PPLANENUMPROC lpPlanEnumFunc,
  615. LPARAM lParam
  616. );
  617. UINT ActlDBDLL
  618. SearchUserGroups
  619. (
  620. PUSER_GROUP_DETAILS pGroupsDetails,
  621. DWORD cBuf,
  622. LPDWORD pcTotal,
  623. LPDWORD pcReturned,
  624. LPCSTR szGroupName,
  625. BOOL fForward
  626. );
  627. UINT ActlDBDLL
  628. SearchGroupMembers
  629. (
  630. HGROUP hGroup,
  631. ACCOUNT_INFO *pAccts,
  632. DWORD cBuf,
  633. LPDWORD pcTotal,
  634. LPDWORD pcReturned,
  635. LPCSTR szGroupMemberName,
  636. BOOL fForward
  637. );
  638. UINT ActlDBDLL
  639. SearchTokens
  640. (
  641. TOKEN_DETAILS *pTokenDetails,
  642. DWORD cBuf,
  643. LPDWORD pcTotal,
  644. LPDWORD pcReturned,
  645. LPCSTR szTokenName,
  646. BOOL fForward
  647. );
  648. UINT ActlDBDLL
  649. SearchGroupsWithToken
  650. (
  651. TOKEN token,
  652. USER_GROUP_RIGHT *pGroups,
  653. DWORD cBuf,
  654. LPDWORD pcTotal,
  655. LPDWORD pcReturned,
  656. LPCSTR szGroupName,
  657. BOOL fForward
  658. );
  659. UINT ActlDBDLL
  660. SearchAcctsWithToken
  661. (
  662. TOKEN token,
  663. ACCOUNT_INFO_RIGHT *pAcctRits,
  664. DWORD cBuf,
  665. LPDWORD pcTotal,
  666. LPDWORD pcReturned,
  667. LPCSTR szAcctName,
  668. BOOL fForward
  669. );
  670. UINT ActlDBDLL
  671. SearchExcludedAcctsWithToken
  672. (
  673. TOKEN token,
  674. ACCOUNT_INFO_RIGHT *pAcctRits,
  675. DWORD cBuf,
  676. LPDWORD pcTotal,
  677. LPDWORD pcReturned,
  678. LPCSTR szAcctName,
  679. BOOL fForward
  680. );
  681. UINT ActlDBDLL
  682. TotalUserGroups
  683. (
  684. LPDWORD pcTotal
  685. );
  686. UINT ActlDBDLL
  687. TotalGroupMembers
  688. (
  689. HGROUP hGroup,
  690. LPDWORD pcTotal
  691. );
  692. UINT ActlDBDLL
  693. TotalTokens
  694. (
  695. LPDWORD pcTotal
  696. );
  697. UINT ActlDBDLL
  698. TotalGroupsWithToken
  699. (
  700. TOKEN token,
  701. LPDWORD pcTotal
  702. );
  703. UINT ActlDBDLL
  704. TotalAcctsWithToken
  705. (
  706. TOKEN token,
  707. LPDWORD pcTotal
  708. );
  709. UINT ActlDBDLL
  710. TotalExcludedAcctsWithToken
  711. (
  712. TOKEN token,
  713. LPDWORD pcTotal
  714. );
  715. } //---- end of extern "C" ---------
  716. #endif // #if !defined(__ACTLDB_H__)