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.

402 lines
8.5 KiB

  1. /*++
  2. Copyright (c) 1997 - 1997 Microsoft Corporation
  3. Module Name:
  4. netsetp.h
  5. Abstract:
  6. Private definitions and prototypes for the Net setup apis
  7. Author:
  8. Mac McLain (MacM) 19-Feb-1997
  9. Environment:
  10. User mode only.
  11. Revision History:
  12. --*/
  13. #ifndef __NETSETP_H__
  14. #define __NETSETP_H__
  15. #include <nt.h>
  16. #include <ntrtl.h>
  17. #include <nturtl.h>
  18. #include <ntlsa.h>
  19. #include <windows.h>
  20. #if(_WIN32_WINNT >= 0x0500)
  21. #include <dsgetdc.h>
  22. #endif
  23. #include <lmcons.h>
  24. #include <lmapibuf.h>
  25. #include <lmerr.h>
  26. #include <lmjoin.h>
  27. #include <netsetup.h>
  28. #include <stdio.h>
  29. #include <netdebug.h>
  30. #define NETSETUPP_CONNECT_IPC 0x00000001
  31. #define NETSETUPP_DISCONNECT_IPC 0x00000002
  32. #define NETSETUPP_NULL_SESSION_IPC 0x00000010
  33. #define NETSETUPP_USE_LOTS_FORCE 0x00000020
  34. #define NETSETUPP_CREATE 0
  35. #define NETSETUPP_DELETE 1
  36. #define NETSETUPP_RENAME 2
  37. #define NETSETUPP_SET_PASSWORD 3
  38. #define NETSETUP_SVC_STOPPED 0x00000001
  39. #define NETSETUP_SVC_STARTED 0x00000002
  40. #define NETSETUP_SVC_ENABLED 0x00000004
  41. #define NETSETUP_SVC_DISABLED 0x00000008
  42. #define NETSETUP_SVC_MANUAL 0x00000010
  43. #define NETSETUPP_SVC_NETLOGON 0x00000001
  44. #define NETSETUPP_SVC_TIMESVC 0x00000002
  45. #define NETSETUP_IGNORE_JOIN 0x80000000
  46. #define NETSETUP_VERBOSE_LOGGING
  47. extern HANDLE DebugLog;
  48. //
  49. // For debug output
  50. //
  51. #define PREFIX_NETJOIN "[WKSSVC]NetJoin: "
  52. //
  53. // Flags passed to DsGetDcName
  54. //
  55. #if(_WIN32_WINNT >= 0x0500)
  56. #define NETSETUPP_DSGETDC_FLAGS \
  57. (DS_DIRECTORY_SERVICE_PREFERRED | DS_WRITABLE_REQUIRED )
  58. #define NETSETUP_DSGETDC_FLAGS_ACCOUNT_EXISTS \
  59. ( DS_DIRECTORY_SERVICE_PREFERRED | DS_WRITABLE_REQUIRED )
  60. #else
  61. #define NETSETUPP_DSGETDC_FLAGS 0
  62. #define NETSETUP_DSGETDC_FLAGS_ACCOUNT_EXISTS 0
  63. #define DS_DS_FLAG 0x00000001
  64. #endif
  65. //
  66. // Helpful macros
  67. //
  68. //
  69. // Determines whether a bit flag is turned on or not
  70. //
  71. #define FLAG_ON(flag,bits) ((flag) & (bits))
  72. //
  73. // Determine whether the client is joined to a domain or not given the LSAs
  74. // primary domain information
  75. //
  76. #define IS_CLIENT_JOINED(plsapdinfo) \
  77. ((plsapdinfo)->Sid != NULL && (plsapdinfo)->Name.Length != 0 ? TRUE : FALSE)
  78. #ifdef NETSETUP_VERBOSE_LOGGING
  79. //#define NetpLog(x) NetpLogPrintHelper x
  80. #else
  81. #define NetSetuppLogPrint(x)
  82. #define NetSetuppOpenLog()
  83. #define NetSetuppCloseLog()
  84. #endif
  85. typedef struct _NETSETUP_SAVED_JOIN_STATE {
  86. BOOLEAN MachineSecret;
  87. PUNICODE_STRING CurrentValue;
  88. PUNICODE_STRING PreviousValue;
  89. PPOLICY_PRIMARY_DOMAIN_INFO PrimaryDomainInfo;
  90. #if(_WIN32_WINNT >= 0x0500)
  91. PPOLICY_DNS_DOMAIN_INFO DnsDomainInfo;
  92. #endif
  93. } NETSETUP_SAVED_JOIN_STATE, *PNETSETUP_SAVED_JOIN_STATE;
  94. //
  95. // netjoin.c functions
  96. //
  97. NET_API_STATUS
  98. NET_API_FUNCTION
  99. NetpManageMachineAccount(
  100. IN LPWSTR lpMachine,
  101. IN LPWSTR lpOldMachine,
  102. IN LPWSTR lpDcName,
  103. IN LPWSTR lpPassword,
  104. IN ULONG fControl,
  105. IN ULONG AccountOptions,
  106. IN BOOL fIsNt4Dc
  107. );
  108. NET_API_STATUS
  109. NET_API_FUNCTION
  110. NetpManageMachineAccountWithSid(
  111. IN LPWSTR lpMachine,
  112. IN LPWSTR lpOldMachine,
  113. IN LPWSTR lpDcName,
  114. IN LPWSTR lpPassword,
  115. IN PSID DomainSid,
  116. IN ULONG fControl,
  117. IN ULONG AccountOptions,
  118. IN BOOL fIsNt4Dc
  119. );
  120. //
  121. // netplsa.c functions
  122. //
  123. NET_API_STATUS
  124. NET_API_FUNCTION
  125. NetpHandleJoinedStateInfo(
  126. IN LSA_HANDLE PolicyHandle, OPTIONAL
  127. IN PNETSETUP_SAVED_JOIN_STATE SavedState,
  128. IN BOOLEAN Save,
  129. OUT PLSA_HANDLE ReturnedPolicyHandle OPTIONAL
  130. );
  131. NET_API_STATUS
  132. NET_API_FUNCTION
  133. NetpSetLsaPrimaryDomain(
  134. IN LSA_HANDLE PolicyHandle, OPTIONAL
  135. IN LPWSTR lpDomain,
  136. IN PSID pDomainSid, OPTIONAL
  137. #if(_WIN32_WINNT >= 0x0500)
  138. IN PPOLICY_DNS_DOMAIN_INFO pPolicyDns, OPTIONAL
  139. #endif
  140. OUT PLSA_HANDLE pPolicyHandle OPTIONAL
  141. );
  142. NET_API_STATUS
  143. NET_API_FUNCTION
  144. NetpGetLsaPrimaryDomain(
  145. IN LSA_HANDLE PolicyHandle, OPTIONAL
  146. IN LPWSTR lpServer, OPTIONAL
  147. OUT PPOLICY_PRIMARY_DOMAIN_INFO *ppPolicyPDI,
  148. #if(_WIN32_WINNT >= 0x0500)
  149. OUT PPOLICY_DNS_DOMAIN_INFO *ppPolicyDns,
  150. #endif
  151. OUT PLSA_HANDLE pPolicyHandle OPTIONAL
  152. );
  153. NET_API_STATUS
  154. NET_API_FUNCTION
  155. NetpGetLsaDcRole(
  156. IN LPWSTR lpMachine,
  157. OUT BOOL *pfIsDC
  158. );
  159. NET_API_STATUS
  160. NET_API_FUNCTION
  161. NetpManageMachineSecret(
  162. IN LSA_HANDLE PolicyHandle, OPTIONAL
  163. IN LPWSTR lpMachine,
  164. IN LPWSTR lpPassword,
  165. IN BOOL fDelete,
  166. IN BOOL UseDefaultForOldPwd,
  167. OUT PLSA_HANDLE pPolicyHandle OPTIONAL
  168. );
  169. NET_API_STATUS
  170. NET_API_FUNCTION
  171. NetpReadCurrentSecret(
  172. IN LSA_HANDLE PolicyHandle, OPTIONAL
  173. OUT LPWSTR *lpCurrentSecret,
  174. OUT PLSA_HANDLE pPolicyHandle OPTIONAL
  175. );
  176. NET_API_STATUS
  177. NET_API_FUNCTION
  178. NetpSetNetlogonDomainCache(
  179. IN LPWSTR lpDc
  180. );
  181. NET_API_STATUS
  182. NET_API_FUNCTION
  183. NetpManageLocalGroups(
  184. IN PSID pDomainSid,
  185. IN BOOL fDelete
  186. );
  187. NET_API_STATUS
  188. NET_API_FUNCTION
  189. NetpValidateMachineAccount(
  190. IN LPWSTR lpDc,
  191. IN LPWSTR lpDomain,
  192. IN LPWSTR lpMachine,
  193. IN LPWSTR lpPassword
  194. );
  195. NET_API_STATUS
  196. NET_API_FUNCTION
  197. NetpSetMachineAccountPassword(
  198. IN LPWSTR lpDc,
  199. IN LPWSTR lpDomain,
  200. IN LPWSTR lpMachine,
  201. IN LPWSTR lpPassword
  202. );
  203. NET_API_STATUS
  204. NET_API_FUNCTION
  205. NetpStopService(
  206. IN LPWSTR Service,
  207. IN SC_HANDLE SCManager
  208. );
  209. NET_API_STATUS
  210. NET_API_FUNCTION
  211. NetpSetTimeServiceParameters(
  212. VOID
  213. );
  214. NET_API_STATUS
  215. NET_API_FUNCTION
  216. NetpDsGetDcName(
  217. IN LPWSTR ComputerName, OPTIONAL
  218. IN LPWSTR DomainName,
  219. IN LPWSTR AccountName, OPTIONAL
  220. IN ULONG Flags,
  221. IN OUT PULONG DcFlags,
  222. OUT PWSTR *DomainControllerName
  223. #if(_WIN32_WINNT >= 0x0500)
  224. ,
  225. OUT PDOMAIN_CONTROLLER_INFO *DcInfo
  226. #endif
  227. );
  228. NET_API_STATUS
  229. NET_API_FUNCTION
  230. NetpCrackDomainSpecifier(
  231. IN LPWSTR DomainSpecifier,
  232. OUT LPWSTR* DomainName,
  233. OUT LPWSTR* DomainControllerName
  234. );
  235. //
  236. // joinutl.c
  237. //
  238. NET_API_STATUS
  239. NET_API_FUNCTION
  240. NetpCreateComputerObjectInOU(
  241. IN LPWSTR DC,
  242. IN LPWSTR OU,
  243. IN LPWSTR ComputerName,
  244. IN LPWSTR Account,
  245. IN LPWSTR Password,
  246. IN LPWSTR MachinePassword
  247. );
  248. NET_API_STATUS
  249. NetpGetDnsHostName(
  250. IN LPWSTR PassedHostName OPTIONAL,
  251. IN PUNICODE_STRING DnsDomainName,
  252. OUT LPWSTR *DnsHostName
  253. );
  254. NET_API_STATUS
  255. NET_API_FUNCTION
  256. NetpCreateComputerObjectInDs(
  257. IN PDOMAIN_CONTROLLER_INFO DcInfo,
  258. IN LPWSTR Account,
  259. IN LPWSTR Password,
  260. IN LPWSTR ComputerName,
  261. IN LPWSTR MachinePassword,
  262. IN LPWSTR DnsHostName OPTIONAL,
  263. IN LPWSTR OU OPTIONAL
  264. );
  265. NET_API_STATUS
  266. NET_API_FUNCTION
  267. NetpSetDnsHostNameAndSpn(
  268. IN PDOMAIN_CONTROLLER_INFO DcInfo,
  269. IN LPWSTR Account,
  270. IN LPWSTR Password,
  271. IN LPWSTR ComputerName,
  272. IN LPWSTR DnsHostName
  273. );
  274. NET_API_STATUS
  275. NET_API_FUNCTION
  276. NetpDeleteComputerObjectInOU(
  277. IN LPWSTR DC,
  278. IN LPWSTR OU,
  279. IN LPWSTR ComputerName,
  280. IN LPWSTR Account,
  281. IN LPWSTR Password
  282. );
  283. NET_API_STATUS
  284. NET_API_FUNCTION
  285. NetpSetMachineAccountPasswordAndType(
  286. IN LPWSTR lpDcName,
  287. IN PSID DomainSid,
  288. IN LPWSTR lpAccountName,
  289. IN LPWSTR lpPassword
  290. );
  291. #define ACCOUNT_STATE_IGNORE 0
  292. #define ACCOUNT_STATE_ENABLED 1
  293. #define ACCOUNT_STATE_DISABLED 2
  294. NET_API_STATUS
  295. NET_API_FUNCTION
  296. NetpSetMachineAccountPasswordAndTypeEx(
  297. IN LPWSTR lpDcName,
  298. IN PSID DomainSid,
  299. IN LPWSTR lpAccountName,
  300. IN OPTIONAL LPWSTR lpPassword,
  301. IN OPTIONAL UCHAR AccountState,
  302. IN BOOL fIsNt4Dc
  303. );
  304. #if defined(REMOTE_BOOT) && (_WIN32_WINNT >= 0x0500)
  305. NET_API_STATUS
  306. NET_API_FUNCTION
  307. NetpGetRemoteBootMachinePassword(
  308. OUT LPWSTR Password
  309. );
  310. #endif
  311. NET_API_STATUS
  312. NET_API_FUNCTION
  313. NetpRemoveDnsRegistrations (
  314. VOID
  315. );
  316. #if(_WIN32_WINNT >= 0x0500)
  317. NET_API_STATUS
  318. NET_API_FUNCTION
  319. NetpStoreIntialDcRecord(
  320. IN PDOMAIN_CONTROLLER_INFO DcInfo
  321. );
  322. #endif
  323. NET_API_STATUS
  324. NET_API_FUNCTION
  325. NetpSetComputerAccountPassword(
  326. IN PWSTR szMachine,
  327. IN PWSTR szDomainController,
  328. IN PWSTR szUser,
  329. IN PWSTR szUserPassword,
  330. IN PVOID Reserved
  331. );
  332. #endif // __NETSETP_H__