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.

1639 lines
28 KiB

  1. #include "dspch.h"
  2. #pragma hdrstop
  3. #include <ntdsa.h>
  4. #include <wxlpc.h>
  5. #include <drs.h>
  6. #include <scache.h>
  7. #include <dbglobal.h>
  8. #include <mdglobal.h>
  9. #include <mappings.h>
  10. #include <dsaapi.h>
  11. #include <dsevent.h>
  12. //
  13. // Notes on stub behavior
  14. //
  15. //
  16. // Whenever possible, STATUS_PROCEDURE_NOT_FOUHD, ERROR_PROC_NOT_FOUND, NULL,
  17. // or FALSE is returned.
  18. //
  19. //
  20. // Some of the functions below require the caller to look at an OUT
  21. // parameter to determine whether the results of the function (in addition
  22. // or independent of the return value). Since these are private functions
  23. // there is no need in shipping code to check for the validity of the OUT
  24. // parameter (typically a pointer). These values should always be present
  25. // in RTM versions.
  26. //
  27. //
  28. // Some functions don't return a status and were designed to never fail
  29. // (for example, functions that effectively do a table lookup). For these
  30. // functions there is no reasonable return value. However, this is not
  31. // a practical issue since these API's would only be called after the DS
  32. // initialized which means that API would have already been "snapped" in via
  33. // GetProcAddress().
  34. //
  35. // Of course, it is possible to rewrite these routines to return errors,
  36. // however, as above, this will have no practical effect.
  37. //
  38. #define NTDSA_STUB_NO_REASONABLE_DEFAULT 0xFFFFFFFF
  39. //
  40. // Most Dir functions return 0 on success and simply a non zero on failure.
  41. // The error space can be from the DB layer or sometimes from the Jet layer.
  42. // To extract the real error, the caller looks at an OUT parameter. In
  43. // these cases we return a standard failure value.
  44. //
  45. #define NTDSA_STUB_GENERAL_FAILURE (!0)
  46. static
  47. NTSTATUS
  48. DsWaitUntilDelayedStartupIsDone(void)
  49. {
  50. return STATUS_PROCEDURE_NOT_FOUND;
  51. }
  52. static
  53. void
  54. DsInitializeCritSecs(void)
  55. {
  56. }
  57. static
  58. BOOL
  59. DsIsBeingBackSynced()
  60. {
  61. return FALSE;
  62. }
  63. static
  64. ULONG
  65. DirBind (
  66. BINDARG * pBindArg, /* binding credentials */
  67. BINDRES ** ppBindRes /* binding results */
  68. )
  69. {
  70. *ppBindRes = NULL;
  71. return systemError;
  72. }
  73. static
  74. ULONG
  75. DirUnBind (
  76. void
  77. )
  78. {
  79. return systemError;
  80. }
  81. static
  82. ULONG
  83. DirCompare(
  84. COMPAREARG * pCompareArg, /* Compare argument */
  85. COMPARERES ** ppCompareRes
  86. )
  87. {
  88. *ppCompareRes = NULL;
  89. return systemError;
  90. }
  91. static
  92. ULONG
  93. DirList(
  94. LISTARG FAR * pListArg,
  95. LISTRES ** ppListRes
  96. )
  97. {
  98. *ppListRes = NULL;
  99. return systemError;
  100. }
  101. static
  102. VOID
  103. DirTransactControl(
  104. DirTransactionOption option)
  105. {
  106. }
  107. static
  108. BOOL
  109. DirPrepareForImpersonate (
  110. DWORD hClient,
  111. DWORD hServer,
  112. void ** ppImpersonateData
  113. )
  114. {
  115. return FALSE;
  116. }
  117. static
  118. VOID
  119. DirStopImpersonating (
  120. DWORD hClient,
  121. DWORD hServer,
  122. void * pImpersonateData
  123. )
  124. {
  125. }
  126. static
  127. ULONG
  128. DirReplicaAdd(
  129. IN DSNAME * pNC,
  130. IN DSNAME * pSourceDsaDN, OPTIONAL
  131. IN DSNAME * pTransportDN, OPTIONAL
  132. IN LPWSTR pszSourceDsaAddress,
  133. IN LPWSTR pszSourceDsaDnsDomainName, OPTIONAL
  134. IN REPLTIMES * preptimesSync, OPTIONAL
  135. IN ULONG ulOptions
  136. )
  137. {
  138. return ERROR_PROC_NOT_FOUND;
  139. }
  140. static
  141. ULONG
  142. DirReplicaModify(
  143. DSNAME * pNC,
  144. UUID * puuidSourceDRA,
  145. UUID * puuidTransportObj,
  146. LPWSTR pszSourceDRA,
  147. REPLTIMES * prtSchedule,
  148. ULONG ulReplicaFlags,
  149. ULONG ulModifyFields,
  150. ULONG ulOptions
  151. )
  152. {
  153. return ERROR_PROC_NOT_FOUND;
  154. }
  155. static
  156. ULONG
  157. DirReplicaDelete(
  158. DSNAME *pNC,
  159. LPWSTR pszSourceDRA,
  160. ULONG ulOptions
  161. )
  162. {
  163. return ERROR_PROC_NOT_FOUND;
  164. }
  165. static
  166. ULONG
  167. DirReplicaSynchronize(
  168. DSNAME *pNC,
  169. LPWSTR pszSourceDRA,
  170. UUID * puuidSourceDRA,
  171. ULONG ulOptions
  172. )
  173. {
  174. return ERROR_PROC_NOT_FOUND;
  175. }
  176. static
  177. ULONG
  178. DirReplicaReferenceUpdate(
  179. DSNAME *pNC,
  180. LPWSTR pszReferencedDRA,
  181. UUID * puuidReferencedDRA,
  182. ULONG ulOptions
  183. )
  184. {
  185. return ERROR_PROC_NOT_FOUND;
  186. }
  187. static
  188. ULONG
  189. DirReplicaGetDemoteTarget(
  190. IN DSNAME * pNC,
  191. IN OUT DRS_DEMOTE_TARGET_SEARCH_INFO * pDTSInfo,
  192. OUT LPWSTR * ppszDemoteTargetDNSName,
  193. OUT DSNAME ** ppDemoteTargetDSADN
  194. )
  195. {
  196. return ERROR_PROC_NOT_FOUND;
  197. }
  198. static
  199. ULONG
  200. DirReplicaDemote(
  201. IN DSNAME * pNC,
  202. IN LPWSTR pszOtherDSADNSName,
  203. IN DSNAME * pOtherDSADN,
  204. IN ULONG ulOptions
  205. )
  206. {
  207. return ERROR_PROC_NOT_FOUND;
  208. }
  209. static
  210. DWORD
  211. DirReplicaSetCredentials(
  212. IN HANDLE ClientToken,
  213. IN WCHAR *User,
  214. IN WCHAR *Domain,
  215. IN WCHAR *Password,
  216. IN ULONG PasswordLength // number of characters NOT including terminating
  217. // NULL
  218. )
  219. {
  220. return ERROR_PROC_NOT_FOUND;
  221. }
  222. static
  223. void *
  224. THReAlloc(
  225. void *p,
  226. DWORD size
  227. )
  228. {
  229. return NULL;
  230. }
  231. static
  232. BOOL THVerifyCount(
  233. unsigned count
  234. ) /* Returns TRUE if thread has exactly */
  235. {
  236. return FALSE;
  237. }
  238. static
  239. LPSTR
  240. THGetErrorString()
  241. {
  242. return NULL;
  243. }
  244. static
  245. VOID
  246. SampSetLsa(
  247. BOOLEAN DsaFlag
  248. )
  249. {
  250. }
  251. static
  252. ULONG
  253. SampGetSamAttrIdByName(
  254. SAMP_OBJECT_TYPE ObjectType,
  255. UNICODE_STRING AttributeIdentifier)
  256. {
  257. return DS_ATTRIBUTE_UNKNOWN;
  258. }
  259. static
  260. BOOLEAN
  261. SampDoesDomainExist(
  262. IN PDSNAME pDN
  263. )
  264. {
  265. return FALSE;
  266. }
  267. static
  268. NTSTATUS
  269. SampDsControl(
  270. IN PSAMP_DS_CTRL_OP RequestedOp,
  271. OUT PVOID *Result
  272. )
  273. {
  274. return STATUS_PROCEDURE_NOT_FOUND;
  275. }
  276. static
  277. BOOL
  278. DoLogEvent(DWORD fileNo, MessageId midCategory, ULONG ulSeverity,
  279. MessageId midEvent, int iIncludeName,
  280. char *arg1, char *arg2, char *arg3, char *arg4,
  281. char *arg5, char *arg6, char *arg7, char *arg8,
  282. DWORD cbData, VOID * pvData)
  283. {
  284. return FALSE;
  285. }
  286. static
  287. VOID
  288. DoLogEventAndTrace(PLOG_PARAM_BLOCK LogBlock)
  289. {
  290. }
  291. static
  292. BOOL
  293. DoLogOverride(DWORD file, ULONG sev)
  294. {
  295. return FALSE;
  296. }
  297. static
  298. void __fastcall
  299. DoLogUnhandledError(unsigned long ulID, int iErr, int iIncludeName)
  300. {
  301. }
  302. static
  303. VOID
  304. DsTraceEvent(
  305. IN MessageId Event,
  306. IN DWORD WmiEventType,
  307. IN DWORD TraceGuid,
  308. IN PEVENT_TRACE_HEADER TraceHeader,
  309. IN DWORD ClientID,
  310. IN PWCHAR Arg1,
  311. IN PWCHAR Arg2,
  312. IN PWCHAR Arg3,
  313. IN PWCHAR Arg4,
  314. IN PWCHAR Arg5,
  315. IN PWCHAR Arg6,
  316. IN PWCHAR Arg7,
  317. IN PWCHAR Arg8
  318. )
  319. {
  320. }
  321. static
  322. void
  323. DoAssert( char *x,
  324. DWORD y,
  325. char *z )
  326. {
  327. }
  328. static
  329. void
  330. DebPrint( USHORT a,
  331. UCHAR *b,
  332. CHAR *c,
  333. unsigned d, ... )
  334. {
  335. }
  336. USHORT
  337. DebugTest( USHORT a,
  338. CHAR *b )
  339. {
  340. return 0;
  341. }
  342. static
  343. int
  344. NameMatchedStringNameOnly(const DSNAME *pDN1, const DSNAME *pDN2)
  345. {
  346. return FALSE;
  347. }
  348. static
  349. unsigned
  350. NamePrefix(const DSNAME *pPrefix,
  351. const DSNAME *pDN)
  352. {
  353. return FALSE;
  354. }
  355. static
  356. unsigned
  357. AttrTypeToKey(ATTRTYP attrtyp, WCHAR *pOutBuf)
  358. {
  359. return 0;
  360. }
  361. static
  362. NTSTATUS
  363. CrackSingleName(
  364. DWORD formatOffered, // one of DS_NAME_FORMAT in ntdsapi.h
  365. DWORD dwFlags, // DS_NAME_FLAG mask
  366. WCHAR *pNameIn, // name to crack
  367. DWORD formatDesired, // one of DS_NAME_FORMAT in ntdsapi.h
  368. DWORD *pccDnsDomain, // char count of following argument
  369. WCHAR *pDnsDomain, // buffer for DNS domain name
  370. DWORD *pccNameOut, // char count of following argument
  371. WCHAR *pNameOut, // buffer for formatted name
  372. DWORD *pErr) // one of DS_NAME_ERROR in ntdsapi.h
  373. {
  374. return STATUS_PROCEDURE_NOT_FOUND;
  375. }
  376. static
  377. unsigned
  378. CountNameParts(
  379. const DSNAME *pName,
  380. unsigned *pCount
  381. )
  382. {
  383. return 0;
  384. }
  385. static
  386. DWORD
  387. DSNAMEToHashKeyExternal(const DSNAME *pDN)
  388. {
  389. return 0;
  390. }
  391. static
  392. CHAR*
  393. DSNAMEToMappedStrExternal(const DSNAME *pDN)
  394. {
  395. return NULL;
  396. }
  397. static
  398. DWORD
  399. DSStrToHashKeyExternal(const WCHAR *pStr, int cchLen)
  400. {
  401. return 0;
  402. }
  403. static
  404. CHAR *
  405. DSStrToMappedStrExternal(const WCHAR *pStr, int cchMaxStr)
  406. {
  407. return NULL;
  408. }
  409. static
  410. PDSNAME
  411. GetConfigDsName(
  412. IN PWCHAR wszParam
  413. )
  414. {
  415. return NULL;
  416. }
  417. static
  418. BOOL
  419. MtxSame(UNALIGNED MTX_ADDR *pmtx1, UNALIGNED MTX_ADDR *pmtx2)
  420. {
  421. return FALSE;
  422. }
  423. static
  424. void DbgPrintErrorInfo()
  425. {
  426. return;
  427. }
  428. static
  429. NTSTATUS
  430. GetConfigurationNamesList(
  431. DWORD which,
  432. DWORD dwFlags,
  433. DWORD * pcbNames,
  434. DSNAME ** padsNames)
  435. {
  436. return STATUS_PROCEDURE_NOT_FOUND;
  437. }
  438. static
  439. NTSTATUS
  440. GetDnsRootAlias(
  441. WCHAR * pDnsRootAlias,
  442. WCHAR * pRootDnsRootAlias)
  443. {
  444. return STATUS_PROCEDURE_NOT_FOUND;
  445. }
  446. static
  447. VOID
  448. DsaDisableUpdates(
  449. VOID
  450. )
  451. {
  452. }
  453. static VOID
  454. DsaEnableUpdates(
  455. VOID
  456. )
  457. {
  458. }
  459. static VOID
  460. DsaSetInstallCallback(
  461. IN DSA_CALLBACK_STATUS_TYPE pfnUpdateStatus,
  462. IN DSA_CALLBACK_ERROR_TYPE pfnErrorStatus,
  463. IN DSA_CALLBACK_CANCEL_TYPE pfnCancelOperation,
  464. IN HANDLE ClientToken
  465. )
  466. {
  467. }
  468. static LPWSTR
  469. TransportAddrFromMtxAddr(
  470. IN MTX_ADDR * pmtx
  471. )
  472. {
  473. return NULL;
  474. }
  475. static
  476. MTX_ADDR *
  477. MtxAddrFromTransportAddr(
  478. IN LPWSTR psz
  479. )
  480. {
  481. return NULL;
  482. }
  483. static
  484. LPWSTR
  485. GuidBasedDNSNameFromDSName(
  486. IN DSNAME * pDN
  487. )
  488. {
  489. return NULL;
  490. }
  491. LPCWSTR
  492. MapSpnServiceClass(WCHAR *a)
  493. {
  494. return NULL;
  495. }
  496. static
  497. NTSTATUS
  498. MatchCrossRefBySid(
  499. IN PSID SidToMatch,
  500. OUT PDSNAME XrefDsName OPTIONAL,
  501. IN OUT PULONG XrefNameLen
  502. )
  503. {
  504. return STATUS_PROCEDURE_NOT_FOUND;
  505. }
  506. static
  507. NTSTATUS
  508. MatchCrossRefByNetbiosName(
  509. IN LPWSTR NetbiosName,
  510. OUT PDSNAME XrefDsName OPTIONAL,
  511. IN OUT PULONG XrefNameLen
  512. )
  513. {
  514. return STATUS_PROCEDURE_NOT_FOUND;
  515. }
  516. static
  517. NTSTATUS
  518. MatchDomainDnByNetbiosName(
  519. IN LPWSTR NetbiosName,
  520. OUT PDSNAME DomainDsName OPTIONAL,
  521. IN OUT PULONG DomainDsNameLen
  522. )
  523. {
  524. return STATUS_PROCEDURE_NOT_FOUND;
  525. }
  526. static
  527. NTSTATUS
  528. MatchDomainDnByDnsName(
  529. IN LPWSTR DnsName,
  530. OUT PDSNAME DomainDsName OPTIONAL,
  531. IN OUT PULONG DomainDsNameLen
  532. )
  533. {
  534. return STATUS_PROCEDURE_NOT_FOUND;
  535. }
  536. static
  537. NTSTATUS
  538. FindNetbiosDomainName(
  539. IN DSNAME* DomainDsName,
  540. OUT LPWSTR NetbiosName OPTIONAL,
  541. IN OUT PULONG NetbiosNameLen
  542. )
  543. {
  544. return STATUS_PROCEDURE_NOT_FOUND;
  545. }
  546. static
  547. DSNAME *
  548. DsGetDefaultObjCategory(
  549. IN ATTRTYP objClass
  550. )
  551. {
  552. return NULL;
  553. }
  554. static BOOL
  555. IsStringGuid(
  556. WCHAR *pwszGuid,
  557. GUID *pGuid
  558. )
  559. {
  560. return FALSE;
  561. }
  562. static
  563. VOID
  564. DsFreeServersAndSitesForNetLogon(
  565. SERVERSITEPAIR * paServerSites
  566. )
  567. {
  568. }
  569. static
  570. NTSTATUS
  571. DsGetServersAndSitesForNetLogon(
  572. IN WCHAR * pNCDNS,
  573. OUT SERVERSITEPAIR ** ppaRes
  574. )
  575. {
  576. return STATUS_PROCEDURE_NOT_FOUND;
  577. }
  578. static
  579. int
  580. __cdecl
  581. DsaExeStartRoutine(int argc, char *argv[])
  582. {
  583. return 0;
  584. }
  585. static
  586. unsigned
  587. AppendRDN(
  588. DSNAME *pDNBase,
  589. DSNAME *pDNNew,
  590. ULONG ulBufSize,
  591. WCHAR *pRDNVal,
  592. ULONG RDNlen,
  593. ATTRTYP AttId
  594. )
  595. {
  596. return NTDSA_STUB_GENERAL_FAILURE;
  597. }
  598. static
  599. ULONG
  600. DirAddEntry (
  601. ADDARG * pAddArg,
  602. ADDRES ** ppAddRes
  603. )
  604. {
  605. *ppAddRes = NULL;
  606. return NTDSA_STUB_GENERAL_FAILURE;
  607. }
  608. static
  609. NTSTATUS
  610. DirErrorToNtStatus(
  611. IN DWORD DirError,
  612. IN COMMRES *CommonResult
  613. )
  614. {
  615. return STATUS_PROCEDURE_NOT_FOUND;
  616. }
  617. static
  618. DWORD
  619. DirErrorToWinError(
  620. IN DWORD DirError,
  621. IN COMMRES *CommonResult
  622. )
  623. {
  624. return ERROR_PROC_NOT_FOUND;
  625. }
  626. static
  627. ULONG
  628. DirFindEntry(
  629. FINDARG *pFindArg,
  630. FINDRES ** ppFindRes
  631. )
  632. {
  633. *ppFindRes = NULL;
  634. return NTDSA_STUB_GENERAL_FAILURE;
  635. }
  636. static
  637. DWORD
  638. DirGetDomainHandle(
  639. DSNAME *pDomainDN
  640. )
  641. {
  642. return NTDSA_STUB_GENERAL_FAILURE;
  643. }
  644. static
  645. ULONG
  646. DirModifyDN(
  647. MODIFYDNARG * pModifyDNArg,
  648. MODIFYDNRES ** ppModifyDNRes
  649. )
  650. {
  651. *ppModifyDNRes = NULL;
  652. return NTDSA_STUB_GENERAL_FAILURE;
  653. }
  654. static
  655. ULONG
  656. DirModifyEntry (
  657. MODIFYARG * pModifyArg,
  658. MODIFYRES ** ppModifyRes
  659. )
  660. {
  661. *ppModifyRes = NULL;
  662. return NTDSA_STUB_GENERAL_FAILURE;
  663. }
  664. static
  665. ULONG
  666. DirNotifyRegister(
  667. SEARCHARG *pSearchArg,
  668. NOTIFYARG *pNotifyArg,
  669. NOTIFYRES **ppNotifyRes
  670. )
  671. {
  672. *ppNotifyRes = NULL;
  673. return NTDSA_STUB_GENERAL_FAILURE;
  674. }
  675. static
  676. ULONG
  677. DirNotifyUnRegister(
  678. DWORD hServer,
  679. NOTIFYRES **pNotifyRes
  680. )
  681. {
  682. *pNotifyRes = NULL;
  683. return NTDSA_STUB_GENERAL_FAILURE;
  684. }
  685. static
  686. ULONG
  687. DirOperationControl(
  688. OPARG * pOpArg,
  689. OPRES ** ppOpRes
  690. )
  691. {
  692. *ppOpRes= NULL;
  693. return NTDSA_STUB_GENERAL_FAILURE;
  694. }
  695. static
  696. ULONG
  697. DirProtectEntry(
  698. IN DSNAME *pObj
  699. )
  700. {
  701. return NTDSA_STUB_GENERAL_FAILURE;
  702. }
  703. static
  704. ULONG
  705. DirRead (
  706. READARG FAR * pReadArg,
  707. READRES ** ppReadRes
  708. )
  709. {
  710. *ppReadRes = NULL;
  711. return NTDSA_STUB_GENERAL_FAILURE;
  712. }
  713. static
  714. ULONG
  715. DirRemoveEntry (
  716. REMOVEARG * pRemoveArg,
  717. REMOVERES ** ppRemoveRes
  718. )
  719. {
  720. *ppRemoveRes = NULL;
  721. return NTDSA_STUB_GENERAL_FAILURE;
  722. }
  723. static
  724. ULONG
  725. DirSearch (
  726. SEARCHARG * pSearchArg,
  727. SEARCHRES ** ppSearchRes
  728. )
  729. {
  730. *ppSearchRes = NULL;
  731. return NTDSA_STUB_GENERAL_FAILURE;
  732. }
  733. static
  734. NTSTATUS
  735. DsChangeBootOptions(
  736. WX_AUTH_TYPE BootOption,
  737. ULONG Flags,
  738. PVOID NewKey,
  739. ULONG cbNewKey
  740. )
  741. {
  742. return STATUS_PROCEDURE_NOT_FOUND;
  743. }
  744. static
  745. BOOL
  746. DsCheckConstraint(
  747. IN ATTRTYP attID,
  748. IN ATTRVAL *pAttVal,
  749. IN BOOL fVerifyAsRDN
  750. )
  751. {
  752. return FALSE;
  753. }
  754. static
  755. WX_AUTH_TYPE
  756. DsGetBootOptions(
  757. VOID
  758. )
  759. {
  760. return WxNone;
  761. }
  762. static
  763. NTSTATUS
  764. DsInitialize(
  765. ULONG Flags,
  766. IN PDS_INSTALL_PARAM InParams OPTIONAL,
  767. OUT PDS_INSTALL_RESULT OutParams OPTIONAL
  768. )
  769. {
  770. return STATUS_PROCEDURE_NOT_FOUND;
  771. }
  772. static
  773. NTSTATUS
  774. DsPrepareUninitialize(
  775. VOID
  776. )
  777. {
  778. return STATUS_PROCEDURE_NOT_FOUND;
  779. }
  780. static
  781. NTSTATUS
  782. DsUninitialize(
  783. BOOL fExternalOnly
  784. )
  785. {
  786. return STATUS_PROCEDURE_NOT_FOUND;
  787. }
  788. static
  789. ENTINF *
  790. GCVerifyCacheLookup(
  791. DSNAME *pDSName
  792. )
  793. {
  794. return NULL;
  795. }
  796. static
  797. DWORD
  798. GetConfigParam(
  799. char * parameter,
  800. void * value,
  801. DWORD dwSize
  802. )
  803. {
  804. return ERROR_PROC_NOT_FOUND;
  805. }
  806. static
  807. DWORD
  808. GetConfigParamAllocW(
  809. IN PWCHAR parameter,
  810. OUT PVOID *value,
  811. OUT PDWORD pdwSize
  812. )
  813. {
  814. return ERROR_PROC_NOT_FOUND;
  815. }
  816. static
  817. DWORD
  818. GetConfigParamW(
  819. WCHAR * parameter,
  820. void * value,
  821. DWORD dwSize
  822. )
  823. {
  824. return ERROR_PROC_NOT_FOUND;
  825. }
  826. static
  827. NTSTATUS
  828. GetConfigurationInfo(
  829. DWORD which,
  830. DWORD *pcbSize,
  831. VOID *pBuff)
  832. {
  833. return STATUS_PROCEDURE_NOT_FOUND;
  834. }
  835. static
  836. NTSTATUS
  837. GetConfigurationName(
  838. DWORD which,
  839. DWORD *pcbName,
  840. DSNAME *pName
  841. )
  842. {
  843. return STATUS_PROCEDURE_NOT_FOUND;
  844. }
  845. static
  846. unsigned
  847. GetRDNInfoExternal(
  848. const DSNAME *pDN,
  849. WCHAR *pRDNVal,
  850. ULONG *pRDNlen,
  851. ATTRTYP *pRDNtype
  852. )
  853. {
  854. return NTDSA_STUB_GENERAL_FAILURE;
  855. }
  856. static
  857. DWORD
  858. ImpersonateAnyClient(
  859. void
  860. )
  861. {
  862. return ERROR_PROC_NOT_FOUND;
  863. }
  864. static
  865. VOID
  866. InitCommarg(
  867. COMMARG *pCommArg
  868. )
  869. {
  870. return;
  871. }
  872. static
  873. int
  874. NameMatched(
  875. const DSNAME *pDN1,
  876. const DSNAME *pDN2
  877. )
  878. {
  879. return !0;
  880. }
  881. static
  882. unsigned
  883. QuoteRDNValue(
  884. const WCHAR * pVal,
  885. unsigned ccVal,
  886. WCHAR * pQuote,
  887. unsigned ccQuoteBufMax
  888. )
  889. {
  890. return NTDSA_STUB_GENERAL_FAILURE;
  891. }
  892. static
  893. BOOLEAN
  894. SampAddLoopbackTask(
  895. IN PVOID NotifyInfo
  896. )
  897. {
  898. return FALSE;
  899. }
  900. static
  901. BOOL
  902. SampAmIGC()
  903. {
  904. return FALSE;
  905. }
  906. static
  907. NTSTATUS
  908. SampComputeGroupType(
  909. ULONG ObjectClass,
  910. ULONG GroupType,
  911. NT4_GROUP_TYPE *pNT4GroupType,
  912. NT5_GROUP_TYPE *pNT5GroupType,
  913. BOOLEAN *pSecurityEnabled
  914. )
  915. {
  916. return STATUS_PROCEDURE_NOT_FOUND;
  917. }
  918. static
  919. ULONG
  920. SampDeriveMostBasicDsClass(
  921. ULONG DerivedClass
  922. )
  923. {
  924. return DerivedClass;
  925. }
  926. static
  927. ULONG
  928. SampDsAttrFromSamAttr(
  929. SAMP_OBJECT_TYPE ObjectType,
  930. ULONG SamAttr
  931. )
  932. {
  933. return NTDSA_STUB_NO_REASONABLE_DEFAULT;
  934. }
  935. static
  936. ULONG
  937. SampDsClassFromSamObjectType(
  938. ULONG SamObjectType
  939. )
  940. {
  941. return NTDSA_STUB_NO_REASONABLE_DEFAULT;
  942. }
  943. static
  944. BOOL
  945. SampExistsDsLoopback(
  946. DSNAME **ppLoopbackName
  947. )
  948. {
  949. return FALSE;
  950. }
  951. static
  952. BOOL
  953. SampExistsDsTransaction()
  954. {
  955. return FALSE;
  956. }
  957. static
  958. NTSTATUS
  959. SampGCLookupNames(
  960. IN ULONG cNames,
  961. IN UNICODE_STRING *rNames,
  962. OUT ENTINF **rEntInf
  963. )
  964. {
  965. return STATUS_PROCEDURE_NOT_FOUND;
  966. }
  967. static
  968. NTSTATUS
  969. SampGCLookupSids(
  970. IN ULONG cSid,
  971. IN PSID *rpSid,
  972. OUT PDS_NAME_RESULTW *Results
  973. )
  974. {
  975. return STATUS_PROCEDURE_NOT_FOUND;
  976. }
  977. static
  978. NTSTATUS
  979. SampGetAccountCounts(
  980. DSNAME * DomainObjectName,
  981. BOOLEAN GetApproximateCount,
  982. int * UserCount,
  983. int * GroupCount,
  984. int * AliasCount
  985. )
  986. {
  987. return STATUS_PROCEDURE_NOT_FOUND;
  988. }
  989. static
  990. NTSTATUS
  991. SampGetClassAttribute(
  992. IN ULONG ClassId,
  993. IN ULONG Attribute,
  994. OUT PULONG attLen,
  995. OUT PVOID pattVal
  996. )
  997. {
  998. return STATUS_PROCEDURE_NOT_FOUND;
  999. }
  1000. static
  1001. NTSTATUS
  1002. SampGetDisplayEnumerationIndex (
  1003. IN DSNAME *DomainName,
  1004. IN DOMAIN_DISPLAY_INFORMATION DisplayInformation,
  1005. IN PRPC_UNICODE_STRING Prefix,
  1006. OUT PULONG Index,
  1007. OUT PRESTART *RestartToReturn
  1008. )
  1009. {
  1010. return STATUS_PROCEDURE_NOT_FOUND;
  1011. }
  1012. static
  1013. ULONG
  1014. SampGetDsAttrIdByName(
  1015. UNICODE_STRING AttributeIdentifier
  1016. )
  1017. {
  1018. return NTDSA_STUB_NO_REASONABLE_DEFAULT;
  1019. }
  1020. static
  1021. VOID
  1022. SampGetEnterpriseSidList(
  1023. IN PULONG pcSids,
  1024. IN OPTIONAL PSID * rgSids
  1025. )
  1026. {
  1027. *pcSids = 0;
  1028. if (rgSids) {
  1029. *rgSids = NULL;
  1030. }
  1031. return;
  1032. }
  1033. static
  1034. NTSTATUS
  1035. SampGetGroupsForToken(
  1036. IN DSNAME * pObjName,
  1037. IN ULONG Flags,
  1038. OUT ULONG *pcSids,
  1039. OUT PSID **prpSids
  1040. )
  1041. {
  1042. return STATUS_PROCEDURE_NOT_FOUND;
  1043. }
  1044. static
  1045. VOID
  1046. SampGetLoopbackObjectClassId(
  1047. PULONG ClassId
  1048. )
  1049. {
  1050. *ClassId = NTDSA_STUB_NO_REASONABLE_DEFAULT;
  1051. return;
  1052. }
  1053. static
  1054. NTSTATUS
  1055. SampGetMemberships(
  1056. IN PDSNAME *rgObjNames,
  1057. IN ULONG cObjNames,
  1058. IN OPTIONAL DSNAME *pLimitingDomain,
  1059. IN REVERSE_MEMBERSHIP_OPERATION_TYPE OperationType,
  1060. OUT ULONG *pcDsNames,
  1061. OUT PDSNAME **prpDsNames,
  1062. OUT PULONG *Attributes OPTIONAL,
  1063. OUT PULONG pcSidHistory OPTIONAL,
  1064. OUT PSID **rgSidHistory OPTIONAL
  1065. )
  1066. {
  1067. return STATUS_PROCEDURE_NOT_FOUND;
  1068. }
  1069. static
  1070. NTSTATUS
  1071. SampGetQDIRestart(
  1072. IN PDSNAME DomainName,
  1073. IN DOMAIN_DISPLAY_INFORMATION DisplayInformation,
  1074. IN ULONG LastObjectDNT,
  1075. OUT PRESTART *ppRestart
  1076. )
  1077. {
  1078. return STATUS_PROCEDURE_NOT_FOUND;
  1079. }
  1080. static
  1081. NTSTATUS
  1082. SampGetServerRoleFromFSMO(
  1083. DOMAIN_SERVER_ROLE *ServerRole
  1084. )
  1085. {
  1086. return STATUS_PROCEDURE_NOT_FOUND;
  1087. }
  1088. static
  1089. BOOLEAN
  1090. SampIsSecureLdapConnection(
  1091. VOID
  1092. )
  1093. {
  1094. return FALSE;
  1095. }
  1096. static
  1097. BOOL
  1098. SampIsWriteLockHeldByDs()
  1099. {
  1100. return FALSE;
  1101. }
  1102. static
  1103. NTSTATUS
  1104. SampMaybeBeginDsTransaction(
  1105. SAMP_DS_TRANSACTION_CONTROL ReadOrWrite
  1106. )
  1107. {
  1108. return STATUS_PROCEDURE_NOT_FOUND;
  1109. }
  1110. static
  1111. NTSTATUS
  1112. SampMaybeEndDsTransaction(
  1113. SAMP_DS_TRANSACTION_CONTROL CommitOrAbort
  1114. )
  1115. {
  1116. return STATUS_PROCEDURE_NOT_FOUND;
  1117. }
  1118. static
  1119. NTSTATUS
  1120. SampNetlogonPing(
  1121. IN ULONG DomainHandle,
  1122. IN PUNICODE_STRING AccountName,
  1123. OUT PBOOLEAN AccountExists,
  1124. OUT PULONG UserAccountControl
  1125. )
  1126. {
  1127. return STATUS_PROCEDURE_NOT_FOUND;
  1128. }
  1129. static
  1130. ULONG
  1131. SampSamAttrFromDsAttr(
  1132. SAMP_OBJECT_TYPE ObjectType,
  1133. ULONG DsAttr
  1134. )
  1135. {
  1136. return NTDSA_STUB_NO_REASONABLE_DEFAULT;
  1137. }
  1138. static
  1139. ULONG
  1140. SampSamObjectTypeFromDsClass(
  1141. ULONG DsClass
  1142. )
  1143. {
  1144. return NTDSA_STUB_NO_REASONABLE_DEFAULT;
  1145. }
  1146. static
  1147. VOID
  1148. SampSetDsa(
  1149. BOOLEAN DsaFlag
  1150. )
  1151. {
  1152. return;
  1153. }
  1154. static
  1155. NTSTATUS
  1156. SampSetIndexRanges(
  1157. ULONG IndexTypeToUse,
  1158. ULONG LowLimitLength1,
  1159. PVOID LowLimit1,
  1160. ULONG LowLimitLength2,
  1161. PVOID LowLimit2,
  1162. ULONG HighLimitLength1,
  1163. PVOID HighLimit1,
  1164. ULONG HighLimitLength2,
  1165. PVOID HighLimit2,
  1166. BOOL RootOfSearchIsNcHead
  1167. )
  1168. {
  1169. return STATUS_PROCEDURE_NOT_FOUND;
  1170. }
  1171. static
  1172. VOID
  1173. SampSetSam(
  1174. IN BOOLEAN fSAM
  1175. )
  1176. {
  1177. return;
  1178. }
  1179. static
  1180. VOID
  1181. SampSignalStart(
  1182. VOID
  1183. )
  1184. {
  1185. return;
  1186. }
  1187. static
  1188. ULONG
  1189. SampVerifySids(
  1190. ULONG cSid,
  1191. PSID *rpSid,
  1192. DSNAME ***prpDSName
  1193. )
  1194. {
  1195. return NTDSA_STUB_GENERAL_FAILURE;
  1196. }
  1197. static
  1198. void *
  1199. THAlloc(
  1200. DWORD size
  1201. )
  1202. {
  1203. return NULL;
  1204. }
  1205. static
  1206. VOID
  1207. THClearErrors()
  1208. {
  1209. return;
  1210. }
  1211. static
  1212. ULONG
  1213. THCreate(
  1214. DWORD x
  1215. )
  1216. {
  1217. return NTDSA_STUB_GENERAL_FAILURE;
  1218. }
  1219. static
  1220. ULONG
  1221. THDestroy(
  1222. void
  1223. )
  1224. {
  1225. return NTDSA_STUB_GENERAL_FAILURE;
  1226. }
  1227. static
  1228. void
  1229. THFree(
  1230. void *buff
  1231. )
  1232. {
  1233. return;
  1234. }
  1235. static
  1236. BOOL
  1237. THQuery(
  1238. void
  1239. )
  1240. {
  1241. return FALSE;
  1242. }
  1243. static
  1244. VOID
  1245. THRestore(
  1246. PVOID x
  1247. )
  1248. {
  1249. return;
  1250. }
  1251. static
  1252. PVOID
  1253. THSave()
  1254. {
  1255. return NULL;
  1256. }
  1257. static
  1258. DWORD
  1259. TrimDSNameBy(
  1260. DSNAME *pDNSrc,
  1261. ULONG cava,
  1262. DSNAME *pDNDst
  1263. )
  1264. {
  1265. return 1;
  1266. }
  1267. static
  1268. VOID
  1269. UnImpersonateAnyClient(
  1270. void
  1271. )
  1272. {
  1273. return;
  1274. }
  1275. static
  1276. VOID
  1277. UpdateDSPerfStats(
  1278. IN DWORD dwStat,
  1279. IN DWORD dwOperation,
  1280. IN DWORD dwChange
  1281. )
  1282. {
  1283. return;
  1284. }
  1285. static
  1286. BOOL
  1287. IsMangledRDNExternal(
  1288. WCHAR * pszRDN,
  1289. ULONG cchRDN,
  1290. PULONG pcchUnMangled OPTIONAL
  1291. )
  1292. {
  1293. return FALSE;
  1294. }
  1295. static
  1296. ULONG
  1297. DBDsReplBackupPrepare()
  1298. {
  1299. return 0;
  1300. }
  1301. static
  1302. DWORD DsUpdateOnPDC(BOOL fRootDomain)
  1303. {
  1304. return ERROR_PROC_NOT_FOUND;
  1305. }
  1306. //
  1307. // !! WARNING !! The entries below must be in alphabetical order, and are CASE SENSITIVE (eg lower case comes last!)
  1308. //
  1309. DEFINE_PROCNAME_ENTRIES(ntdsa)
  1310. {
  1311. DLPENTRY(AppendRDN)
  1312. DLPENTRY(AttrTypeToKey)
  1313. DLPENTRY(CountNameParts)
  1314. DLPENTRY(CrackSingleName)
  1315. DLPENTRY(DBDsReplBackupPrepare)
  1316. DLPENTRY(DSNAMEToHashKeyExternal)
  1317. DLPENTRY(DSNAMEToMappedStrExternal)
  1318. DLPENTRY(DSStrToHashKeyExternal)
  1319. DLPENTRY(DSStrToMappedStrExternal)
  1320. DLPENTRY(DbgPrintErrorInfo)
  1321. DLPENTRY(DebPrint)
  1322. DLPENTRY(DebugTest)
  1323. DLPENTRY(DirAddEntry)
  1324. DLPENTRY(DirBind)
  1325. DLPENTRY(DirCompare)
  1326. DLPENTRY(DirErrorToNtStatus)
  1327. DLPENTRY(DirErrorToWinError)
  1328. DLPENTRY(DirFindEntry)
  1329. DLPENTRY(DirGetDomainHandle)
  1330. DLPENTRY(DirList)
  1331. DLPENTRY(DirModifyDN)
  1332. DLPENTRY(DirModifyEntry)
  1333. DLPENTRY(DirNotifyRegister)
  1334. DLPENTRY(DirNotifyUnRegister)
  1335. DLPENTRY(DirOperationControl)
  1336. DLPENTRY(DirPrepareForImpersonate)
  1337. DLPENTRY(DirProtectEntry)
  1338. DLPENTRY(DirRead)
  1339. DLPENTRY(DirRemoveEntry)
  1340. DLPENTRY(DirReplicaAdd)
  1341. DLPENTRY(DirReplicaDelete)
  1342. DLPENTRY(DirReplicaDemote)
  1343. DLPENTRY(DirReplicaGetDemoteTarget)
  1344. DLPENTRY(DirReplicaModify)
  1345. DLPENTRY(DirReplicaReferenceUpdate)
  1346. DLPENTRY(DirReplicaSetCredentials)
  1347. DLPENTRY(DirReplicaSynchronize)
  1348. DLPENTRY(DirSearch)
  1349. DLPENTRY(DirStopImpersonating)
  1350. DLPENTRY(DirTransactControl)
  1351. DLPENTRY(DirUnBind)
  1352. DLPENTRY(DoAssert)
  1353. DLPENTRY(DoLogEvent)
  1354. DLPENTRY(DoLogEventAndTrace)
  1355. DLPENTRY(DoLogOverride)
  1356. DLPENTRY(DoLogUnhandledError)
  1357. DLPENTRY(DsChangeBootOptions)
  1358. DLPENTRY(DsCheckConstraint)
  1359. DLPENTRY(DsFreeServersAndSitesForNetLogon)
  1360. DLPENTRY(DsGetBootOptions)
  1361. DLPENTRY(DsGetDefaultObjCategory)
  1362. DLPENTRY(DsGetServersAndSitesForNetLogon)
  1363. DLPENTRY(DsInitialize)
  1364. DLPENTRY(DsInitializeCritSecs)
  1365. DLPENTRY(DsIsBeingBackSynced)
  1366. DLPENTRY(DsPrepareUninitialize)
  1367. DLPENTRY(DsTraceEvent)
  1368. DLPENTRY(DsUninitialize)
  1369. DLPENTRY(DsUpdateOnPDC)
  1370. DLPENTRY(DsWaitUntilDelayedStartupIsDone)
  1371. DLPENTRY(DsaDisableUpdates)
  1372. DLPENTRY(DsaEnableUpdates)
  1373. DLPENTRY(DsaExeStartRoutine)
  1374. DLPENTRY(DsaSetInstallCallback)
  1375. DLPENTRY(FindNetbiosDomainName)
  1376. DLPENTRY(GCVerifyCacheLookup)
  1377. DLPENTRY(GetConfigDsName)
  1378. DLPENTRY(GetConfigParam)
  1379. DLPENTRY(GetConfigParamAllocW)
  1380. DLPENTRY(GetConfigParamW)
  1381. DLPENTRY(GetConfigurationInfo)
  1382. DLPENTRY(GetConfigurationName)
  1383. DLPENTRY(GetConfigurationNamesList)
  1384. DLPENTRY(GetDnsRootAlias)
  1385. DLPENTRY(GetRDNInfoExternal)
  1386. DLPENTRY(GuidBasedDNSNameFromDSName)
  1387. DLPENTRY(ImpersonateAnyClient)
  1388. DLPENTRY(InitCommarg)
  1389. DLPENTRY(IsMangledRDNExternal)
  1390. DLPENTRY(IsStringGuid)
  1391. DLPENTRY(MapSpnServiceClass)
  1392. DLPENTRY(MatchCrossRefByNetbiosName)
  1393. DLPENTRY(MatchCrossRefBySid)
  1394. DLPENTRY(MatchDomainDnByDnsName)
  1395. DLPENTRY(MatchDomainDnByNetbiosName)
  1396. DLPENTRY(MtxAddrFromTransportAddr)
  1397. DLPENTRY(MtxSame)
  1398. DLPENTRY(NameMatched)
  1399. DLPENTRY(NameMatchedStringNameOnly)
  1400. DLPENTRY(NamePrefix)
  1401. DLPENTRY(QuoteRDNValue)
  1402. DLPENTRY(SampAddLoopbackTask)
  1403. DLPENTRY(SampAmIGC)
  1404. DLPENTRY(SampComputeGroupType)
  1405. DLPENTRY(SampDeriveMostBasicDsClass)
  1406. DLPENTRY(SampDoesDomainExist)
  1407. DLPENTRY(SampDsAttrFromSamAttr)
  1408. DLPENTRY(SampDsClassFromSamObjectType)
  1409. DLPENTRY(SampDsControl)
  1410. DLPENTRY(SampExistsDsLoopback)
  1411. DLPENTRY(SampExistsDsTransaction)
  1412. DLPENTRY(SampGCLookupNames)
  1413. DLPENTRY(SampGCLookupSids)
  1414. DLPENTRY(SampGetAccountCounts)
  1415. DLPENTRY(SampGetClassAttribute)
  1416. DLPENTRY(SampGetDisplayEnumerationIndex)
  1417. DLPENTRY(SampGetDsAttrIdByName)
  1418. DLPENTRY(SampGetEnterpriseSidList)
  1419. DLPENTRY(SampGetGroupsForToken)
  1420. DLPENTRY(SampGetLoopbackObjectClassId)
  1421. DLPENTRY(SampGetMemberships)
  1422. DLPENTRY(SampGetQDIRestart)
  1423. DLPENTRY(SampGetSamAttrIdByName)
  1424. DLPENTRY(SampGetServerRoleFromFSMO)
  1425. DLPENTRY(SampIsSecureLdapConnection)
  1426. DLPENTRY(SampIsWriteLockHeldByDs)
  1427. DLPENTRY(SampMaybeBeginDsTransaction)
  1428. DLPENTRY(SampMaybeEndDsTransaction)
  1429. DLPENTRY(SampNetlogonPing)
  1430. DLPENTRY(SampSamAttrFromDsAttr)
  1431. DLPENTRY(SampSamObjectTypeFromDsClass)
  1432. DLPENTRY(SampSetDsa)
  1433. DLPENTRY(SampSetIndexRanges)
  1434. DLPENTRY(SampSetLsa)
  1435. DLPENTRY(SampSetSam)
  1436. DLPENTRY(SampSignalStart)
  1437. DLPENTRY(SampVerifySids)
  1438. DLPENTRY(THAlloc)
  1439. DLPENTRY(THClearErrors)
  1440. DLPENTRY(THCreate)
  1441. DLPENTRY(THDestroy)
  1442. DLPENTRY(THFree)
  1443. DLPENTRY(THGetErrorString)
  1444. DLPENTRY(THQuery)
  1445. DLPENTRY(THReAlloc)
  1446. DLPENTRY(THRestore)
  1447. DLPENTRY(THSave)
  1448. DLPENTRY(THVerifyCount)
  1449. DLPENTRY(TransportAddrFromMtxAddr)
  1450. DLPENTRY(TrimDSNameBy)
  1451. DLPENTRY(UnImpersonateAnyClient)
  1452. DLPENTRY(UpdateDSPerfStats)
  1453. };
  1454. DEFINE_PROCNAME_MAP(ntdsa)