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.

1670 lines
29 KiB

  1. //+-------------------------------------------------------------------------
  2. //
  3. // Microsoft Windows
  4. // Copyright (C) Microsoft Corporation, 1992 - 2000
  5. //
  6. // File: querytable.cpp
  7. //
  8. // Contents: Defines Table For Parser.
  9. //
  10. // History: 24-Sep-2000 Hiteshr Created
  11. //
  12. //
  13. //--------------------------------------------------------------------------
  14. #include "pch.h"
  15. #include "cstrings.h"
  16. #include "querytable.h"
  17. #include "usage.h"
  18. #include "querybld.h"
  19. //+-------------------------------------------------------------------------
  20. // Parser table
  21. //--------------------------------------------------------------------------
  22. ARG_RECORD DSQUERY_COMMON_COMMANDS[] =
  23. {
  24. COMMON_COMMANDS
  25. //
  26. // objecttype
  27. //
  28. 0,(LPWSTR)c_sz_arg1_com_objecttype,
  29. 0,NULL,
  30. ARG_TYPE_STR, ARG_FLAG_REQUIRED|ARG_FLAG_NOFLAG,
  31. 0,
  32. 0, NULL,
  33. //
  34. // r,r
  35. //
  36. 0,(LPWSTR)c_sz_arg1_com_recurse,
  37. 0,NULL,
  38. ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL,
  39. NULL,
  40. 0, NULL,
  41. //
  42. // o,outputformat
  43. //
  44. 0,(LPWSTR)c_sz_arg1_com_output,
  45. 0,NULL,
  46. ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
  47. NULL,
  48. 0, NULL,
  49. //
  50. // startnode,startnode
  51. //
  52. // JonN 4/28/01 256583
  53. // Note that startnode can also be "domainroot" or "forestroot",
  54. // which just happen to be unaffected by the escaping functions.
  55. 0,(LPWSTR)c_sz_arg1_com_startnode,
  56. 0,NULL,
  57. ARG_TYPE_STR, ARG_FLAG_OPTIONAL|ARG_FLAG_DN|ARG_FLAG_NOFLAG,
  58. NULL,
  59. 0, NULL,
  60. //
  61. // limit
  62. //
  63. 0,(LPWSTR)c_sz_arg1_com_limit,
  64. 0,NULL,
  65. ARG_TYPE_INT, ARG_FLAG_OPTIONAL,
  66. NULL,
  67. 0, NULL,
  68. ARG_TERMINATOR
  69. };
  70. ARG_RECORD DSQUERY_STAR_COMMANDS[]=
  71. {
  72. //
  73. // ronmart 9/10/02 701516 - gc is not a common param
  74. // gc,gc
  75. //
  76. 0,(LPWSTR)c_sz_arg1_com_gc,
  77. 0,NULL,
  78. ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL,
  79. NULL,
  80. 0, NULL,
  81. //
  82. // scope
  83. //
  84. 0, (PWSTR)g_pszArg1StarScope,
  85. 0, NULL,
  86. ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
  87. 0,
  88. 0, NULL,
  89. //
  90. // filter
  91. //
  92. 0, (PWSTR)g_pszArg1StarFilter,
  93. 0, NULL,
  94. ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
  95. 0,
  96. 0, NULL,
  97. //
  98. // attr
  99. //
  100. 0, (PWSTR)g_pszArg1StarAttr,
  101. 0, NULL,
  102. ARG_TYPE_MSZ, ARG_FLAG_OPTIONAL,
  103. 0,
  104. 0, NULL,
  105. //
  106. // attrsonly
  107. //
  108. 0, (PWSTR)g_pszArg1StarAttrsOnly,
  109. 0, NULL,
  110. ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL,
  111. 0,
  112. 0, NULL,
  113. //
  114. // l, listoutput
  115. //
  116. 0, (PWSTR)g_pszArg1StarList,
  117. 0, NULL,
  118. ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL,
  119. 0,
  120. 0, NULL,
  121. ARG_TERMINATOR
  122. };
  123. ARG_RECORD DSQUERY_USER_COMMANDS[]=
  124. {
  125. //
  126. // ronmart 9/10/02 701516 - gc is not a common param
  127. // gc,gc
  128. //
  129. 0,(LPWSTR)c_sz_arg1_com_gc,
  130. 0,NULL,
  131. ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL,
  132. NULL,
  133. 0, NULL,
  134. //
  135. // scope
  136. //
  137. 0, (PWSTR)g_pszArg1UserScope,
  138. 0, NULL,
  139. ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
  140. 0,
  141. 0, NULL,
  142. //
  143. // Name
  144. //
  145. 0, (PWSTR)g_pszArg1UserName,
  146. 0, NULL,
  147. ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
  148. 0,
  149. 0, NULL,
  150. //
  151. // Desc
  152. //
  153. 0, (PWSTR)g_pszArg1UserDesc,
  154. 0, NULL,
  155. ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
  156. 0,
  157. 0, NULL,
  158. //
  159. // Upn
  160. //
  161. 0, (PWSTR)g_pszArg1UserUpn,
  162. 0, NULL,
  163. ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
  164. 0,
  165. 0, NULL,
  166. //
  167. // Samid
  168. //
  169. 0, (PWSTR)g_pszArg1UserSamid,
  170. 0, NULL,
  171. ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
  172. 0,
  173. 0, NULL,
  174. //
  175. // inactive
  176. //
  177. 0, (PWSTR)g_pszArg1UserInactive,
  178. 0, NULL,
  179. ARG_TYPE_INT, ARG_FLAG_OPTIONAL,
  180. 0,
  181. 0, NULL,
  182. //
  183. // stalepwd
  184. //
  185. 0, (PWSTR)g_pszArg1UserStalepwd,
  186. 0, NULL,
  187. ARG_TYPE_INT, ARG_FLAG_OPTIONAL,
  188. 0,
  189. 0, NULL,
  190. //
  191. // -disabled
  192. //
  193. 0, (PWSTR)g_pszArg1UserDisabled,
  194. 0, NULL,
  195. ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL,
  196. 0,
  197. 0, NULL,
  198. ARG_TERMINATOR
  199. };
  200. ARG_RECORD DSQUERY_COMPUTER_COMMANDS[]=
  201. {
  202. //
  203. // ronmart 9/10/02 701516 - gc is not a common param
  204. // gc,gc
  205. //
  206. 0,(LPWSTR)c_sz_arg1_com_gc,
  207. 0,NULL,
  208. ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL,
  209. NULL,
  210. 0, NULL,
  211. //
  212. // scope
  213. //
  214. 0, (PWSTR)g_pszArg1ComputerScope,
  215. 0, NULL,
  216. ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
  217. 0,
  218. 0, NULL,
  219. //
  220. //name
  221. //
  222. 0, (PWSTR)g_pszArg1ComputerName,
  223. 0, NULL,
  224. ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
  225. NULL,
  226. 0, NULL,
  227. //
  228. //desc
  229. //
  230. 0, (PWSTR)g_pszArg1ComputerDesc,
  231. 0, NULL,
  232. ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
  233. NULL,
  234. 0, NULL,
  235. //
  236. //samid
  237. //
  238. 0, (PWSTR)g_pszArg1ComputerSamid,
  239. 0, NULL,
  240. ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
  241. NULL,
  242. 0, NULL,
  243. //
  244. //inactive
  245. //
  246. 0, (PWSTR)g_pszArg1ComputerInactive,
  247. 0, NULL,
  248. ARG_TYPE_INT, ARG_FLAG_OPTIONAL,
  249. NULL,
  250. 0, NULL,
  251. //
  252. // stalepwd
  253. //
  254. 0, (PWSTR)g_pszArg1ComputerStalepwd,
  255. 0, NULL,
  256. ARG_TYPE_INT, ARG_FLAG_OPTIONAL,
  257. 0,
  258. 0, NULL,
  259. //
  260. //disabled
  261. //
  262. 0, (PWSTR)g_pszArg1ComputerDisabled,
  263. 0, NULL,
  264. ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL,
  265. NULL,
  266. 0, NULL,
  267. ARG_TERMINATOR,
  268. };
  269. ARG_RECORD DSQUERY_GROUP_COMMANDS[]=
  270. {
  271. //
  272. // ronmart 9/10/02 701516 - gc is not a common param
  273. // gc,gc
  274. //
  275. 0,(LPWSTR)c_sz_arg1_com_gc,
  276. 0,NULL,
  277. ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL,
  278. NULL,
  279. 0, NULL,
  280. //
  281. // scope
  282. //
  283. 0, (PWSTR)g_pszArg1GroupScope,
  284. 0, NULL,
  285. ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
  286. 0,
  287. 0, NULL,
  288. //
  289. //name
  290. //
  291. 0, (PWSTR)g_pszArg1GroupName,
  292. 0, NULL,
  293. ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
  294. NULL,
  295. 0, NULL,
  296. //
  297. //desc
  298. //
  299. 0, (PWSTR)g_pszArg1GroupDesc,
  300. 0, NULL,
  301. ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
  302. NULL,
  303. 0, NULL,
  304. //
  305. //samid
  306. //
  307. 0, (PWSTR)g_pszArg1GroupSamid,
  308. 0, NULL,
  309. ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
  310. NULL,
  311. 0, NULL,
  312. ARG_TERMINATOR,
  313. };
  314. ARG_RECORD DSQUERY_OU_COMMANDS[]=
  315. {
  316. //
  317. // ronmart 9/10/02 701516 - gc is not a common param
  318. // gc,gc
  319. //
  320. 0,(LPWSTR)c_sz_arg1_com_gc,
  321. 0,NULL,
  322. ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL,
  323. NULL,
  324. 0, NULL,
  325. //
  326. // scope
  327. //
  328. 0, (PWSTR)g_pszArg1OUScope,
  329. 0, NULL,
  330. ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
  331. 0,
  332. 0, NULL,
  333. //
  334. //name
  335. //
  336. 0, (PWSTR)g_pszArg1OUName,
  337. 0, NULL,
  338. ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
  339. NULL,
  340. 0, NULL,
  341. //
  342. //desc
  343. //
  344. 0, (PWSTR)g_pszArg1OUDesc,
  345. 0, NULL,
  346. ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
  347. NULL,
  348. 0, NULL,
  349. ARG_TERMINATOR,
  350. };
  351. ARG_RECORD DSQUERY_CONTACT_COMMANDS[]=
  352. {
  353. //
  354. // ronmart 9/10/02 701516 - gc is not a common param
  355. // gc,gc
  356. //
  357. 0,(LPWSTR)c_sz_arg1_com_gc,
  358. 0,NULL,
  359. ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL,
  360. NULL,
  361. 0, NULL,
  362. //
  363. // scope
  364. //
  365. 0, (PWSTR)g_pszArg1UserScope,
  366. 0, NULL,
  367. ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
  368. 0,
  369. 0, NULL,
  370. //
  371. // Name
  372. //
  373. 0, (PWSTR)g_pszArg1UserName,
  374. 0, NULL,
  375. ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
  376. 0,
  377. 0, NULL,
  378. //
  379. // Desc
  380. //
  381. 0, (PWSTR)g_pszArg1UserDesc,
  382. 0, NULL,
  383. ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
  384. 0,
  385. 0, NULL,
  386. ARG_TERMINATOR,
  387. };
  388. ARG_RECORD DSQUERY_SERVER_COMMANDS[]=
  389. {
  390. //
  391. // ronmart 9/10/02 701516 - gc is not a common param
  392. // gc,gc
  393. //
  394. 0,(LPWSTR)c_sz_arg1_com_gc,
  395. 0,NULL,
  396. ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL,
  397. NULL,
  398. 0, NULL,
  399. //
  400. // forest - Forest
  401. //
  402. 0, (PWSTR)g_pszArg1ServerForest,
  403. 0, NULL,
  404. ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL,
  405. 0,
  406. 0, NULL,
  407. //
  408. // domain - Domain
  409. //
  410. 0, (PWSTR)c_sz_arg2_com_domain,
  411. 0, NULL,
  412. ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
  413. 0,
  414. 0, NULL,
  415. //
  416. // site - Site
  417. //
  418. 0, (PWSTR)g_pszArg1ServerSite,
  419. 0, NULL,
  420. ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
  421. 0,
  422. 0, NULL,
  423. //
  424. // name - Name
  425. //
  426. 0, (PWSTR)g_pszArg1ServerName,
  427. 0, NULL,
  428. ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
  429. NULL,
  430. 0, NULL,
  431. //
  432. //desc
  433. //
  434. 0, (PWSTR)g_pszArg1ServerDesc,
  435. 0, NULL,
  436. ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
  437. NULL,
  438. 0, NULL,
  439. //
  440. // hasfsmo
  441. //
  442. 0, (PWSTR)g_pszArg1ServerHasFSMO,
  443. 0, NULL,
  444. ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
  445. NULL,
  446. 0, NULL,
  447. //
  448. // isgc
  449. //
  450. 0, (PWSTR)g_pszArg1ServerIsGC,
  451. 0, NULL,
  452. ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL,
  453. NULL,
  454. 0, NULL,
  455. ARG_TERMINATOR,
  456. };
  457. ARG_RECORD DSQUERY_SITE_COMMANDS[]=
  458. {
  459. //
  460. // ronmart 9/10/02 701516 - gc is not a common param
  461. // gc,gc
  462. //
  463. 0,(LPWSTR)c_sz_arg1_com_gc,
  464. 0,NULL,
  465. ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL,
  466. NULL,
  467. 0, NULL,
  468. //
  469. //name
  470. //
  471. 0, (PWSTR)g_pszArg1SiteName,
  472. 0, NULL,
  473. ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
  474. NULL,
  475. 0, NULL,
  476. //
  477. //desc
  478. //
  479. 0, (PWSTR)g_pszArg1SiteDesc,
  480. 0, NULL,
  481. ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
  482. NULL,
  483. 0, NULL,
  484. ARG_TERMINATOR,
  485. };
  486. ARG_RECORD DSQUERY_SUBNET_COMMANDS[]=
  487. {
  488. //
  489. // ronmart 9/10/02 701516 - gc is not a common param
  490. // gc,gc
  491. //
  492. 0,(LPWSTR)c_sz_arg1_com_gc,
  493. 0,NULL,
  494. ARG_TYPE_BOOL, ARG_FLAG_OPTIONAL,
  495. NULL,
  496. 0, NULL,
  497. //
  498. //name
  499. //
  500. 0, (PWSTR)g_pszArg1SubnetName,
  501. 0, NULL,
  502. ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
  503. NULL,
  504. 0, NULL,
  505. //
  506. //desc
  507. //
  508. 0, (PWSTR)g_pszArg1SubnetDesc,
  509. 0, NULL,
  510. ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
  511. NULL,
  512. 0, NULL,
  513. //
  514. //Location
  515. //
  516. 0, (PWSTR)g_pszArg1SubnetLoc,
  517. 0, NULL,
  518. ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
  519. NULL,
  520. 0, NULL,
  521. //
  522. //site
  523. //
  524. 0, (PWSTR)g_pszArg1SubnetSite,
  525. 0, NULL,
  526. ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
  527. NULL,
  528. 0, NULL,
  529. ARG_TERMINATOR,
  530. };
  531. ARG_RECORD DSQUERY_QUOTA_COMMANDS[]=
  532. {
  533. //
  534. // acct
  535. //
  536. 0, (PWSTR)g_pszArg1QuotaAcct,
  537. 0, NULL,
  538. ARG_TYPE_MSZ, ARG_FLAG_OPTIONAL | ARG_FLAG_STDIN,
  539. NULL,
  540. 0, NULL,
  541. //
  542. // qlimit
  543. //
  544. 0, (PWSTR)g_pszArg1QuotaQLimit,
  545. 0, NULL,
  546. ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
  547. NULL,
  548. 0, NULL,
  549. //
  550. // Desc
  551. //
  552. 0, (PWSTR)g_pszArg1QuotaDesc,
  553. 0, NULL,
  554. ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
  555. 0,
  556. 0, NULL,
  557. ARG_TERMINATOR,
  558. };
  559. ARG_RECORD DSQUERY_PARTITION_COMMANDS[]=
  560. {
  561. //
  562. // Partition
  563. //
  564. 0,(PWSTR)g_pszArg1PartitionPart,
  565. 0,NULL,
  566. ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
  567. 0,
  568. 0, NULL,
  569. //
  570. // Desc
  571. //
  572. 0, (PWSTR)g_pszArg1PartitionDesc,
  573. 0, NULL,
  574. ARG_TYPE_STR, ARG_FLAG_OPTIONAL,
  575. 0,
  576. 0, NULL,
  577. ARG_TERMINATOR,
  578. };
  579. //+-------------------------------------------------------------------------
  580. // Attributes
  581. //--------------------------------------------------------------------------
  582. //
  583. // filter, this is no ds attribute, but dummy attribute for commandline filter
  584. // specified in case of dsquery *
  585. //Star Filter
  586. DSQUERY_ATTR_TABLE_ENTRY StarFilterEntry =
  587. {
  588. L"filter",
  589. eStarFilter,
  590. NULL,
  591. StarFilterFunc,
  592. };
  593. //
  594. // name
  595. //
  596. DSATTRIBUTEDESCRIPTION name=
  597. {
  598. {
  599. L"cn",
  600. ADS_ATTR_UPDATE,
  601. ADSTYPE_CASE_IGNORE_STRING,
  602. NULL,
  603. 0
  604. },
  605. 0
  606. };
  607. //User Name
  608. DSQUERY_ATTR_TABLE_ENTRY UserNameEntry =
  609. {
  610. L"cn",
  611. eUserName,
  612. &name,
  613. CommonFilterFunc,
  614. };
  615. //Computer Name
  616. DSQUERY_ATTR_TABLE_ENTRY ComputerNameEntry =
  617. {
  618. L"cn",
  619. eComputerName,
  620. &name,
  621. CommonFilterFunc,
  622. };
  623. //Group Name
  624. DSQUERY_ATTR_TABLE_ENTRY GroupNameEntry =
  625. {
  626. L"cn",
  627. eGroupName,
  628. &name,
  629. CommonFilterFunc,
  630. };
  631. //OU Name
  632. DSQUERY_ATTR_TABLE_ENTRY OUNameEntry =
  633. {
  634. L"ou",
  635. eOUName,
  636. &name,
  637. CommonFilterFunc,
  638. };
  639. // Server Name
  640. DSQUERY_ATTR_TABLE_ENTRY ServerNameEntry =
  641. {
  642. L"cn",
  643. eServerName,
  644. &name,
  645. CommonFilterFunc,
  646. };
  647. // Site Name
  648. DSQUERY_ATTR_TABLE_ENTRY SiteNameEntry =
  649. {
  650. L"cn",
  651. eSiteName,
  652. &name,
  653. CommonFilterFunc,
  654. };
  655. // Contact Name
  656. DSQUERY_ATTR_TABLE_ENTRY ContactNameEntry =
  657. {
  658. L"cn",
  659. eContactName,
  660. &name,
  661. CommonFilterFunc,
  662. };
  663. // Subnet Name
  664. DSQUERY_ATTR_TABLE_ENTRY SubnetNameEntry =
  665. {
  666. L"cn",
  667. eSubnetName,
  668. &name,
  669. CommonFilterFunc,
  670. };
  671. //
  672. // Description
  673. //
  674. DSATTRIBUTEDESCRIPTION description =
  675. {
  676. {
  677. L"description",
  678. ADS_ATTR_UPDATE,
  679. ADSTYPE_CASE_IGNORE_STRING,
  680. NULL,
  681. 0
  682. },
  683. 0
  684. };
  685. //User Description
  686. DSQUERY_ATTR_TABLE_ENTRY UserDescEntry =
  687. {
  688. L"description",
  689. eUserDesc,
  690. &description,
  691. CommonFilterFunc,
  692. };
  693. //Computer Description
  694. DSQUERY_ATTR_TABLE_ENTRY ComputerDescEntry =
  695. {
  696. L"description",
  697. eComputerDesc,
  698. &description,
  699. CommonFilterFunc,
  700. };
  701. //Group Description
  702. DSQUERY_ATTR_TABLE_ENTRY GroupDescEntry =
  703. {
  704. L"description",
  705. eGroupDesc,
  706. &description,
  707. CommonFilterFunc,
  708. };
  709. //OU Description
  710. DSQUERY_ATTR_TABLE_ENTRY OUDescEntry =
  711. {
  712. L"description",
  713. eOUDesc,
  714. &description,
  715. CommonFilterFunc,
  716. };
  717. //Server Description
  718. DSQUERY_ATTR_TABLE_ENTRY ServerDescEntry =
  719. {
  720. L"description",
  721. eServerDesc,
  722. &description,
  723. CommonFilterFunc,
  724. };
  725. //Site Description
  726. DSQUERY_ATTR_TABLE_ENTRY SiteDescEntry =
  727. {
  728. L"description",
  729. eSiteDesc,
  730. &description,
  731. CommonFilterFunc,
  732. };
  733. //Cotnact Description
  734. DSQUERY_ATTR_TABLE_ENTRY ContactDescEntry =
  735. {
  736. L"description",
  737. eContactDesc,
  738. &description,
  739. CommonFilterFunc,
  740. };
  741. //Subnet Description
  742. DSQUERY_ATTR_TABLE_ENTRY SubnetDescEntry =
  743. {
  744. L"description",
  745. eSubnetDesc,
  746. &description,
  747. CommonFilterFunc,
  748. };
  749. //Quota Description
  750. DSQUERY_ATTR_TABLE_ENTRY QuotaDescEntry =
  751. {
  752. L"description",
  753. eQuotaDesc,
  754. &description,
  755. CommonFilterFunc,
  756. };
  757. //
  758. // UPN
  759. //
  760. DSATTRIBUTEDESCRIPTION upn =
  761. {
  762. {
  763. L"userPrincipalName",
  764. ADS_ATTR_UPDATE,
  765. ADSTYPE_CASE_IGNORE_STRING,
  766. NULL,
  767. 0
  768. },
  769. 0
  770. };
  771. //User Upn
  772. DSQUERY_ATTR_TABLE_ENTRY UserUPNEntry =
  773. {
  774. L"userPrincipalName",
  775. eUserUPN,
  776. &upn,
  777. CommonFilterFunc,
  778. };
  779. //
  780. // SAM Account Name
  781. //
  782. DSATTRIBUTEDESCRIPTION samAccountName =
  783. {
  784. {
  785. L"sAMAccountName",
  786. ADS_ATTR_UPDATE,
  787. ADSTYPE_CASE_IGNORE_STRING,
  788. NULL,
  789. 0
  790. },
  791. 0
  792. };
  793. //User SAM Account
  794. DSQUERY_ATTR_TABLE_ENTRY UserSamidEntry =
  795. {
  796. L"sAMAccountName",
  797. eUserSamid,
  798. &samAccountName,
  799. CommonFilterFunc,
  800. };
  801. //Computer samAccountName
  802. DSQUERY_ATTR_TABLE_ENTRY ComputerSamidEntry =
  803. {
  804. L"sAMAccountName",
  805. eComputerSamid,
  806. &samAccountName,
  807. CommonFilterFunc,
  808. };
  809. //Group samAccountName
  810. DSQUERY_ATTR_TABLE_ENTRY GroupSamidEntry =
  811. {
  812. L"sAMAccountName",
  813. eGroupSamid,
  814. &samAccountName,
  815. CommonFilterFunc,
  816. };
  817. //User Disabled
  818. DSQUERY_ATTR_TABLE_ENTRY UserDisabledEntry =
  819. {
  820. L"disabled",
  821. eUserDisabled,
  822. NULL,
  823. DisabledFilterFunc,
  824. };
  825. //Computer Disabled
  826. DSQUERY_ATTR_TABLE_ENTRY ComputerDisabledEntry =
  827. {
  828. L"disabled",
  829. eComputerDisabled,
  830. NULL,
  831. DisabledFilterFunc,
  832. };
  833. //User Inactive
  834. DSQUERY_ATTR_TABLE_ENTRY UserInactiveEntry =
  835. {
  836. L"inactive",
  837. eUserInactive,
  838. NULL,
  839. InactiveUserFilterFunc,
  840. };
  841. //Computer Inactive
  842. DSQUERY_ATTR_TABLE_ENTRY ComputerInactiveEntry =
  843. {
  844. L"inactive",
  845. eComputerInactive,
  846. NULL,
  847. InactiveComputerFilterFunc,
  848. };
  849. //User stalepwd
  850. DSQUERY_ATTR_TABLE_ENTRY UserStalepwdEntry =
  851. {
  852. L"stalepwd",
  853. eUserStalepwd,
  854. NULL,
  855. StalepwdUserFilterFunc,
  856. };
  857. //Computer stalepwd
  858. DSQUERY_ATTR_TABLE_ENTRY ComputerStalepwdEntry =
  859. {
  860. L"stalepwd",
  861. eComputerStalepwd,
  862. NULL,
  863. StalepwdComputerFilterFunc,
  864. };
  865. //
  866. // Locations
  867. //
  868. DSATTRIBUTEDESCRIPTION location =
  869. {
  870. {
  871. L"location",
  872. ADS_ATTR_UPDATE,
  873. ADSTYPE_CASE_IGNORE_STRING,
  874. NULL,
  875. 0
  876. },
  877. 0
  878. };
  879. //Subnet location
  880. DSQUERY_ATTR_TABLE_ENTRY SubnetLocEntry=
  881. {
  882. L"location",
  883. eSubnetLoc,
  884. &location,
  885. CommonFilterFunc,
  886. };
  887. //
  888. // SiteObject
  889. //
  890. DSATTRIBUTEDESCRIPTION siteObject=
  891. {
  892. {
  893. L"siteObject",
  894. ADS_ATTR_UPDATE,
  895. ADSTYPE_CASE_IGNORE_STRING,
  896. NULL,
  897. 0
  898. },
  899. 0
  900. };
  901. //Subnet Site
  902. DSQUERY_ATTR_TABLE_ENTRY SubnetSiteEntry=
  903. {
  904. L"siteObject",
  905. eSubnetSite,
  906. &siteObject,
  907. SubnetSiteFilterFunc,
  908. };
  909. // acct
  910. DSATTRIBUTEDESCRIPTION quotaAcct =
  911. {
  912. {
  913. L"msDS-QuotaTrustee",
  914. ADS_ATTR_UPDATE,
  915. ADSTYPE_CASE_IGNORE_STRING,
  916. NULL,
  917. 0
  918. },
  919. 0
  920. };
  921. DSQUERY_ATTR_TABLE_ENTRY QuotaEntryAcct =
  922. {
  923. L"acct",
  924. eQuotaAcct,
  925. &quotaAcct,
  926. AccountFilterFunc,
  927. };
  928. // qlimit
  929. DSATTRIBUTEDESCRIPTION quotaQLimit =
  930. {
  931. {
  932. L"msDS-QuotaAmount",
  933. ADS_ATTR_UPDATE,
  934. ADSTYPE_INTEGER,
  935. NULL,
  936. 0
  937. },
  938. 0
  939. };
  940. DSQUERY_ATTR_TABLE_ENTRY QuotaEntryQLimit =
  941. {
  942. L"qlimit",
  943. eQuotaQLimit,
  944. &quotaQLimit,
  945. QLimitFilterFunc,
  946. };
  947. // Quota desc
  948. DSQUERY_ATTR_TABLE_ENTRY QuotaEntryDesc =
  949. {
  950. L"description",
  951. eQuotaDesc,
  952. &description,
  953. CommonFilterFunc,
  954. };
  955. // part
  956. DSATTRIBUTEDESCRIPTION partitionPart =
  957. {
  958. {
  959. L"part",
  960. ADS_ATTR_UPDATE,
  961. ADSTYPE_DN_STRING,
  962. NULL,
  963. 0
  964. },
  965. 0
  966. };
  967. DSQUERY_ATTR_TABLE_ENTRY PartitionEntryPart =
  968. {
  969. L"cn",
  970. ePartitionPart,
  971. &partitionPart,
  972. CommonFilterFunc,
  973. };
  974. // Partition desc
  975. DSQUERY_ATTR_TABLE_ENTRY PartitionEntryDesc =
  976. {
  977. L"description",
  978. ePartitionDesc,
  979. &description,
  980. CommonFilterFunc,
  981. };
  982. //
  983. //Valid OutputStrings for each objecttype
  984. //
  985. //
  986. DSQUERY_OUTPUT_FORMAT_MAP g_format_dn =
  987. {
  988. g_pszDN,
  989. DSQUERY_OUTPUT_DN
  990. };
  991. DSQUERY_OUTPUT_FORMAT_MAP g_format_rdn =
  992. {
  993. g_pszRDN,
  994. DSQUERY_OUTPUT_RDN
  995. };
  996. DSQUERY_OUTPUT_FORMAT_MAP g_format_upn =
  997. {
  998. g_pszUPN,
  999. DSQUERY_OUTPUT_UPN
  1000. };
  1001. DSQUERY_OUTPUT_FORMAT_MAP g_format_samid =
  1002. {
  1003. g_pszSamId,
  1004. DSQUERY_OUTPUT_SAMID
  1005. };
  1006. DSQUERY_OUTPUT_FORMAT_MAP g_format_ntlmid =
  1007. {
  1008. g_pszNtlmId,
  1009. DSQUERY_OUTPUT_NTLMID
  1010. };
  1011. PDSQUERY_OUTPUT_FORMAT_MAP UserOutputFormatMap[] =
  1012. {
  1013. &g_format_dn,
  1014. &g_format_rdn,
  1015. &g_format_upn,
  1016. &g_format_samid,
  1017. &g_format_ntlmid
  1018. };
  1019. //Computer
  1020. PDSQUERY_OUTPUT_FORMAT_MAP ComputerOutputFormatMap[] =
  1021. {
  1022. &g_format_dn,
  1023. &g_format_rdn,
  1024. &g_format_samid,
  1025. &g_format_ntlmid
  1026. };
  1027. //Group
  1028. PDSQUERY_OUTPUT_FORMAT_MAP GroupOutputFormatMap[] =
  1029. {
  1030. &g_format_dn,
  1031. &g_format_rdn,
  1032. &g_format_samid,
  1033. &g_format_ntlmid
  1034. };
  1035. //OU
  1036. PDSQUERY_OUTPUT_FORMAT_MAP OuOutputFormatMap[] =
  1037. {
  1038. &g_format_dn,
  1039. &g_format_rdn
  1040. };
  1041. //Contact
  1042. PDSQUERY_OUTPUT_FORMAT_MAP ContactOutputFormatMap[] =
  1043. {
  1044. &g_format_dn,
  1045. &g_format_rdn
  1046. };
  1047. //Server
  1048. PDSQUERY_OUTPUT_FORMAT_MAP ServerOutputFormatMap[] =
  1049. {
  1050. &g_format_dn,
  1051. &g_format_rdn
  1052. };
  1053. //Site
  1054. PDSQUERY_OUTPUT_FORMAT_MAP SiteOutputFormatMap[] =
  1055. {
  1056. &g_format_dn,
  1057. &g_format_rdn
  1058. };
  1059. //Subnet
  1060. PDSQUERY_OUTPUT_FORMAT_MAP SubnetOutputFormatMap[] =
  1061. {
  1062. &g_format_dn,
  1063. &g_format_rdn
  1064. };
  1065. // Quota
  1066. PDSQUERY_OUTPUT_FORMAT_MAP QuotaOutputFormatMap[] =
  1067. {
  1068. &g_format_dn,
  1069. &g_format_rdn
  1070. };
  1071. // Partition
  1072. PDSQUERY_OUTPUT_FORMAT_MAP PartitionOutputFormatMap[] =
  1073. {
  1074. &g_format_dn,
  1075. &g_format_rdn
  1076. };
  1077. //Attribute Table entries and ObjectTableEntries
  1078. //
  1079. //
  1080. //* Star
  1081. //
  1082. PDSQUERY_ATTR_TABLE_ENTRY StarAttributeTable[] =
  1083. {
  1084. &StarFilterEntry,
  1085. };
  1086. DSQueryObjectTableEntry g_StarObjectEntry =
  1087. {
  1088. L"*",
  1089. g_pszStar,
  1090. DSQUERY_STAR_COMMANDS,
  1091. USAGE_DSQUERY_STAR,
  1092. sizeof(StarAttributeTable)/sizeof(PDSATTRIBUTETABLEENTRY),
  1093. StarAttributeTable,
  1094. 0,
  1095. NULL,
  1096. eStarScope,
  1097. g_pszDefStarFilter,
  1098. NULL
  1099. };
  1100. //
  1101. // User
  1102. //
  1103. PDSQUERY_ATTR_TABLE_ENTRY UserAttributeTable[] =
  1104. {
  1105. &UserNameEntry,
  1106. &UserUPNEntry,
  1107. &UserDescEntry,
  1108. &UserSamidEntry,
  1109. &UserDisabledEntry,
  1110. &UserInactiveEntry,
  1111. &UserStalepwdEntry
  1112. };
  1113. DSQueryObjectTableEntry g_UserObjectEntry =
  1114. {
  1115. L"user",
  1116. g_pszUser,
  1117. DSQUERY_USER_COMMANDS,
  1118. USAGE_DSQUERY_USER,
  1119. sizeof(UserAttributeTable)/sizeof(PDSATTRIBUTETABLEENTRY),
  1120. UserAttributeTable,
  1121. sizeof(UserOutputFormatMap)/sizeof(PDSQUERY_OUTPUT_FORMAT_MAP),
  1122. UserOutputFormatMap,
  1123. eUserScope,
  1124. g_pszDefUserFilter,
  1125. g_pszDefUserFilter
  1126. };
  1127. //
  1128. // Computer
  1129. //
  1130. PDSQUERY_ATTR_TABLE_ENTRY ComputerAttributeTable[] =
  1131. {
  1132. &ComputerNameEntry,
  1133. &ComputerDescEntry,
  1134. &ComputerSamidEntry,
  1135. &ComputerDisabledEntry,
  1136. &ComputerInactiveEntry,
  1137. &ComputerStalepwdEntry
  1138. };
  1139. DSQueryObjectTableEntry g_ComputerObjectEntry =
  1140. {
  1141. L"computer",
  1142. g_pszComputer,
  1143. DSQUERY_COMPUTER_COMMANDS,
  1144. USAGE_DSQUERY_COMPUTER,
  1145. sizeof(ComputerAttributeTable)/sizeof(PDSATTRIBUTETABLEENTRY),
  1146. ComputerAttributeTable,
  1147. sizeof(ComputerOutputFormatMap)/sizeof(PDSQUERY_OUTPUT_FORMAT_MAP),
  1148. ComputerOutputFormatMap,
  1149. eComputerScope,
  1150. g_pszDefComputerFilter,
  1151. g_pszDefComputerFilter
  1152. };
  1153. //
  1154. // Group
  1155. //
  1156. PDSQUERY_ATTR_TABLE_ENTRY GroupAttributeTable[] =
  1157. {
  1158. &GroupNameEntry,
  1159. &GroupDescEntry,
  1160. &GroupSamidEntry
  1161. };
  1162. DSQueryObjectTableEntry g_GroupObjectEntry =
  1163. {
  1164. L"group",
  1165. g_pszGroup,
  1166. DSQUERY_GROUP_COMMANDS,
  1167. USAGE_DSQUERY_GROUP,
  1168. sizeof(GroupAttributeTable)/sizeof(PDSATTRIBUTETABLEENTRY),
  1169. GroupAttributeTable,
  1170. sizeof(GroupOutputFormatMap)/sizeof(PDSQUERY_OUTPUT_FORMAT_MAP),
  1171. GroupOutputFormatMap,
  1172. eGroupScope,
  1173. g_pszDefGroupFilter,
  1174. g_pszDefGroupFilter
  1175. };
  1176. //
  1177. // OU
  1178. //
  1179. PDSQUERY_ATTR_TABLE_ENTRY OUAttributeTable[] =
  1180. {
  1181. &OUNameEntry,
  1182. &OUDescEntry
  1183. };
  1184. DSQueryObjectTableEntry g_OUObjectEntry =
  1185. {
  1186. L"ou",
  1187. g_pszOU,
  1188. DSQUERY_OU_COMMANDS,
  1189. USAGE_DSQUERY_OU,
  1190. sizeof(OUAttributeTable)/sizeof(PDSATTRIBUTETABLEENTRY),
  1191. OUAttributeTable,
  1192. sizeof(OuOutputFormatMap)/sizeof(PDSQUERY_OUTPUT_FORMAT_MAP),
  1193. OuOutputFormatMap,
  1194. eOUScope,
  1195. g_pszDefOUFilter,
  1196. g_pszDefOUFilter
  1197. };
  1198. //
  1199. // Server
  1200. //
  1201. PDSQUERY_ATTR_TABLE_ENTRY ServerAttributeTable[] =
  1202. {
  1203. &ServerNameEntry,
  1204. &ServerDescEntry
  1205. };
  1206. DSQueryObjectTableEntry g_ServerObjectEntry =
  1207. {
  1208. L"server",
  1209. g_pszServer,
  1210. DSQUERY_SERVER_COMMANDS,
  1211. USAGE_DSQUERY_SERVER,
  1212. sizeof(ServerAttributeTable)/sizeof(PDSATTRIBUTETABLEENTRY),
  1213. ServerAttributeTable,
  1214. sizeof(ServerOutputFormatMap)/sizeof(PDSQUERY_OUTPUT_FORMAT_MAP),
  1215. ServerOutputFormatMap,
  1216. static_cast<UINT>(-1),
  1217. g_pszDefServerFilter,
  1218. g_pszDefServerFilter
  1219. };
  1220. //
  1221. // Site
  1222. //
  1223. PDSQUERY_ATTR_TABLE_ENTRY SiteAttributeTable[] =
  1224. {
  1225. &SiteNameEntry,
  1226. &SiteDescEntry
  1227. };
  1228. DSQueryObjectTableEntry g_SiteObjectEntry =
  1229. {
  1230. L"site",
  1231. g_pszSite,
  1232. DSQUERY_SITE_COMMANDS,
  1233. USAGE_DSQUERY_SITE,
  1234. sizeof(SiteAttributeTable)/sizeof(PDSATTRIBUTETABLEENTRY),
  1235. SiteAttributeTable,
  1236. sizeof(SiteOutputFormatMap)/sizeof(PDSQUERY_OUTPUT_FORMAT_MAP),
  1237. SiteOutputFormatMap,
  1238. static_cast<UINT>(-1),
  1239. g_pszDefSiteFilter,
  1240. g_pszDefSiteFilter
  1241. };
  1242. //
  1243. // Contact
  1244. //
  1245. PDSQUERY_ATTR_TABLE_ENTRY ContactAttributeTable[] =
  1246. {
  1247. &ContactNameEntry,
  1248. &ContactDescEntry,
  1249. };
  1250. DSQueryObjectTableEntry g_ContactObjectEntry =
  1251. {
  1252. L"contact",
  1253. g_pszContact,
  1254. DSQUERY_CONTACT_COMMANDS,
  1255. USAGE_DSQUERY_CONTACT,
  1256. sizeof(ContactAttributeTable)/sizeof(PDSATTRIBUTETABLEENTRY),
  1257. ContactAttributeTable,
  1258. sizeof(ContactOutputFormatMap)/sizeof(PDSQUERY_OUTPUT_FORMAT_MAP),
  1259. ContactOutputFormatMap,
  1260. eContactScope,
  1261. g_pszDefContactFilter,
  1262. g_pszDefContactFilter
  1263. };
  1264. //
  1265. // Subnet
  1266. //
  1267. PDSQUERY_ATTR_TABLE_ENTRY SubnetAttributeTable[] =
  1268. {
  1269. &SubnetNameEntry,
  1270. &SubnetDescEntry,
  1271. &SubnetLocEntry,
  1272. &SubnetSiteEntry,
  1273. };
  1274. DSQueryObjectTableEntry g_SubnetObjectEntry =
  1275. {
  1276. L"subnet",
  1277. g_pszSubnet,
  1278. DSQUERY_SUBNET_COMMANDS,
  1279. USAGE_DSQUERY_SUBNET,
  1280. sizeof(SubnetAttributeTable)/sizeof(PDSATTRIBUTETABLEENTRY),
  1281. SubnetAttributeTable,
  1282. sizeof(SubnetOutputFormatMap)/sizeof(PDSQUERY_OUTPUT_FORMAT_MAP),
  1283. SubnetOutputFormatMap,
  1284. static_cast<UINT>(-1),
  1285. g_pszDefSubnetFilter,
  1286. g_pszDefSubnetFilter
  1287. };
  1288. //
  1289. // Quota
  1290. //
  1291. PDSQUERY_ATTR_TABLE_ENTRY QuotaAttributeTable[] =
  1292. {
  1293. &QuotaEntryAcct,
  1294. &QuotaEntryQLimit,
  1295. &QuotaEntryDesc,
  1296. };
  1297. DSQueryObjectTableEntry g_QuotaObjectEntry =
  1298. {
  1299. L"msDS-QuotaControl",
  1300. g_pszQuota,
  1301. DSQUERY_QUOTA_COMMANDS,
  1302. USAGE_DSQUERY_QUOTA,
  1303. sizeof(QuotaAttributeTable)/sizeof(PDSATTRIBUTETABLEENTRY),
  1304. QuotaAttributeTable,
  1305. sizeof(QuotaOutputFormatMap)/sizeof(PDSQUERY_OUTPUT_FORMAT_MAP),
  1306. QuotaOutputFormatMap,
  1307. static_cast<UINT>(-1),
  1308. g_pszDefQuotaFilter,
  1309. g_pszDefQuotaFilter
  1310. };
  1311. //
  1312. // Partition
  1313. //
  1314. PDSQUERY_ATTR_TABLE_ENTRY PartitionAttributeTable[] =
  1315. {
  1316. &PartitionEntryPart,
  1317. &PartitionEntryDesc
  1318. };
  1319. DSQueryObjectTableEntry g_PartitionObjectEntry =
  1320. {
  1321. L"RootDSE", // ignored
  1322. g_pszPartition,
  1323. DSQUERY_PARTITION_COMMANDS,
  1324. USAGE_DSQUERY_PARTITION,
  1325. sizeof(PartitionAttributeTable)/sizeof(PDSATTRIBUTETABLEENTRY),
  1326. PartitionAttributeTable,
  1327. sizeof(PartitionOutputFormatMap)/sizeof(PDSQUERY_OUTPUT_FORMAT_MAP),
  1328. PartitionOutputFormatMap,
  1329. static_cast<UINT>(-1),
  1330. g_pszDefPartitionFilter,
  1331. g_pszDefPartitionFilter
  1332. };
  1333. //+-------------------------------------------------------------------------
  1334. // Object Table
  1335. //--------------------------------------------------------------------------
  1336. PDSQueryObjectTableEntry g_DSObjectTable[] =
  1337. {
  1338. &g_StarObjectEntry,
  1339. &g_OUObjectEntry,
  1340. &g_UserObjectEntry,
  1341. &g_ComputerObjectEntry,
  1342. &g_GroupObjectEntry,
  1343. &g_ServerObjectEntry,
  1344. &g_SiteObjectEntry,
  1345. &g_ContactObjectEntry,
  1346. &g_SubnetObjectEntry,
  1347. &g_QuotaObjectEntry,
  1348. &g_PartitionObjectEntry,
  1349. NULL
  1350. };
  1351. //+-------------------------------------------------------------------------
  1352. // Usage Table
  1353. //--------------------------------------------------------------------------
  1354. UINT USAGE_DSQUERY[] =
  1355. {
  1356. USAGE_DSQUERY_DESCRIPTION,
  1357. USAGE_DSQUERY_REMARKS,
  1358. USAGE_DSQUERY_EXAMPLES,
  1359. USAGE_END
  1360. };
  1361. UINT USAGE_DSQUERY_STAR[] =
  1362. {
  1363. USAGE_DSQUERY_STAR_DESCRIPTION,
  1364. USAGE_DSQUERY_STAR_SYNTAX,
  1365. USAGE_DSQUERY_STAR_PARAMETERS,
  1366. USAGE_DSQUERY_STAR_REMARKS,
  1367. USAGE_DSQUERY_STAR_EXAMPLES,
  1368. USAGE_DSQUERY_STAR_SEE_ALSO,
  1369. USAGE_END
  1370. };
  1371. UINT USAGE_DSQUERY_USER[] =
  1372. {
  1373. USAGE_DSQUERY_USER_DESCRIPTION,
  1374. USAGE_DSQUERY_USER_SYNTAX,
  1375. USAGE_DSQUERY_USER_PARAMETERS,
  1376. USAGE_DSQUERY_USER_REMARKS,
  1377. USAGE_DSQUERY_USER_EXAMPLES,
  1378. USAGE_DSQUERY_USER_SEE_ALSO,
  1379. USAGE_END
  1380. };
  1381. UINT USAGE_DSQUERY_COMPUTER[] =
  1382. {
  1383. USAGE_DSQUERY_COMPUTER_DESCRIPTION,
  1384. USAGE_DSQUERY_COMPUTER_SYNTAX,
  1385. USAGE_DSQUERY_COMPUTER_PARAMETERS,
  1386. USAGE_DSQUERY_COMPUTER_REMARKS,
  1387. USAGE_DSQUERY_COMPUTER_EXAMPLES,
  1388. USAGE_DSQUERY_COMPUTER_SEE_ALSO,
  1389. USAGE_END
  1390. };
  1391. UINT USAGE_DSQUERY_GROUP[] =
  1392. {
  1393. USAGE_DSQUERY_GROUP_DESCRIPTION,
  1394. USAGE_DSQUERY_GROUP_SYNTAX,
  1395. USAGE_DSQUERY_GROUP_PARAMETERS,
  1396. USAGE_DSQUERY_GROUP_REMARKS,
  1397. USAGE_DSQUERY_GROUP_EXAMPLES,
  1398. USAGE_DSQUERY_GROUP_SEE_ALSO,
  1399. USAGE_END
  1400. };
  1401. UINT USAGE_DSQUERY_OU[] =
  1402. {
  1403. USAGE_DSQUERY_OU_DESCRIPTION,
  1404. USAGE_DSQUERY_OU_SYNTAX,
  1405. USAGE_DSQUERY_OU_PARAMETERS,
  1406. USAGE_DSQUERY_OU_REMARKS,
  1407. USAGE_DSQUERY_OU_EXAMPLES,
  1408. USAGE_DSQUERY_OU_SEE_ALSO,
  1409. USAGE_END
  1410. };
  1411. UINT USAGE_DSQUERY_SERVER[] =
  1412. {
  1413. USAGE_DSQUERY_SERVER_DESCRIPTION,
  1414. USAGE_DSQUERY_SERVER_SYNTAX,
  1415. USAGE_DSQUERY_SERVER_PARAMETERS,
  1416. USAGE_DSQUERY_SERVER_REMARKS,
  1417. USAGE_DSQUERY_SERVER_EXAMPLES,
  1418. USAGE_DSQUERY_SERVER_SEE_ALSO,
  1419. USAGE_END
  1420. };
  1421. UINT USAGE_DSQUERY_CONTACT[] =
  1422. {
  1423. USAGE_DSQUERY_CONTACT_DESCRIPTION,
  1424. USAGE_DSQUERY_CONTACT_SYNTAX,
  1425. USAGE_DSQUERY_CONTACT_PARAMETERS,
  1426. USAGE_DSQUERY_CONTACT_REMARKS,
  1427. USAGE_DSQUERY_CONTACT_SEE_ALSO,
  1428. USAGE_END
  1429. };
  1430. UINT USAGE_DSQUERY_SUBNET[] =
  1431. {
  1432. USAGE_DSQUERY_SUBNET_DESCRIPTION,
  1433. USAGE_DSQUERY_SUBNET_SYNTAX,
  1434. USAGE_DSQUERY_SUBNET_PARAMETERS,
  1435. USAGE_DSQUERY_SUBNET_REMARKS,
  1436. USAGE_DSQUERY_SUBNET_EXAMPLES,
  1437. USAGE_END
  1438. };
  1439. UINT USAGE_DSQUERY_SITE[] =
  1440. {
  1441. USAGE_DSQUERY_SITE_DESCRIPTION,
  1442. USAGE_DSQUERY_SITE_SYNTAX,
  1443. USAGE_DSQUERY_SITE_PARAMETERS,
  1444. USAGE_DSQUERY_SITE_REMARKS,
  1445. USAGE_DSQUERY_SITE_EXAMPLES,
  1446. USAGE_DSQUERY_SITE_SEE_ALSO,
  1447. USAGE_END
  1448. };
  1449. UINT USAGE_DSQUERY_QUOTA[] =
  1450. {
  1451. USAGE_DSQUERY_QUOTA_DESCRIPTION,
  1452. USAGE_DSQUERY_QUOTA_SYNTAX,
  1453. USAGE_DSQUERY_QUOTA_PARAMETERS,
  1454. USAGE_DSQUERY_QUOTA_REMARKS,
  1455. USAGE_DSQUERY_QUOTA_EXAMPLES,
  1456. USAGE_DSQUERY_QUOTA_SEE_ALSO,
  1457. USAGE_END
  1458. };
  1459. UINT USAGE_DSQUERY_PARTITION[] =
  1460. {
  1461. USAGE_DSQUERY_PARTITION_DESCRIPTION,
  1462. USAGE_DSQUERY_PARTITION_SYNTAX,
  1463. USAGE_DSQUERY_PARTITION_PARAMETERS,
  1464. USAGE_DSQUERY_PARTITION_REMARKS,
  1465. USAGE_DSQUERY_PARTITION_EXAMPLES,
  1466. USAGE_DSQUERY_PARTITION_SEE_ALSO,
  1467. USAGE_END
  1468. };