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.

452 lines
8.5 KiB

  1. //+---------------------------------------------------------------------------
  2. //
  3. // Microsoft Windows
  4. // Copyright (C) Microsoft Corporation, 1992 - 1993.
  5. //
  6. // File: protos.h
  7. //
  8. // Contents:
  9. //
  10. // Classes:
  11. //
  12. // Functions:
  13. //
  14. // History: 9-21-94 RichardW Created
  15. //
  16. //----------------------------------------------------------------------------
  17. #ifndef __PROTOS_H__
  18. #define __PROTOS_H__
  19. //
  20. // General arrary count.
  21. //
  22. #ifndef COUNTOF
  23. #define COUNTOF(s) ( sizeof( (s) ) / sizeof( *(s) ) )
  24. #endif // COUNTOF
  25. BOOL
  26. AddPackageToRegistry(
  27. PSECURITY_STRING Package
  28. );
  29. NTSTATUS
  30. LoadParameters(
  31. BOOLEAN DynamicOnly
  32. );
  33. VOID
  34. LsapShutdownInprocDll(
  35. VOID
  36. );
  37. BOOL
  38. SpConsoleHandler(
  39. ULONG dwCtrlType
  40. );
  41. NTSTATUS
  42. ServerStop(
  43. void
  44. );
  45. NTSTATUS
  46. StopRPC(
  47. void
  48. );
  49. //
  50. // Control constants for LsapBuildSD
  51. //
  52. #define BUILD_KSEC_SD 0
  53. #define BUILD_LPC_SD 1
  54. NTSTATUS
  55. LsapBuildSD(
  56. IN ULONG dwType,
  57. OUT PSECURITY_DESCRIPTOR *ppSD OPTIONAL
  58. );
  59. NTSTATUS
  60. StartLpcThread(
  61. void
  62. );
  63. NTSTATUS
  64. StopLpcThread(
  65. void
  66. );
  67. HANDLE
  68. SpmCreateEvent(
  69. LPSECURITY_ATTRIBUTES lpsa,
  70. BOOL fManualReset,
  71. BOOL fInitialState,
  72. LPWSTR pszEventName
  73. );
  74. HANDLE
  75. SpmOpenEvent(
  76. ACCESS_MASK DesiredAccess,
  77. BOOL fInherit,
  78. LPWSTR pszEventName
  79. );
  80. BOOLEAN
  81. SpmpIsSetupPass( VOID );
  82. BOOLEAN
  83. SpmpIsMiniSetupPass( VOID );
  84. NTSTATUS
  85. SPException(
  86. NTSTATUS Status,
  87. ULONG_PTR PackageId
  88. );
  89. BOOL
  90. LsapInitializeScavenger(
  91. VOID
  92. );
  93. BOOLEAN
  94. NTAPI
  95. LsapEventNotify(
  96. ULONG Class,
  97. ULONG Flags,
  98. ULONG EventSize,
  99. PVOID Event);
  100. BOOL
  101. SpmpInitializePackageControl(
  102. VOID
  103. );
  104. BOOL
  105. SpmpLoadDll(
  106. PWSTR pszDll,
  107. PSECPKG_PARAMETERS pParameters);
  108. BOOL
  109. SpmpLoadAuthPkgDll(
  110. PWSTR pszDll);
  111. #if DBG
  112. BOOL
  113. SpmpLoadBuiltinAuthPkg(
  114. PSECPKG_FUNCTION_TABLE pTable);
  115. #endif
  116. PLSAP_SECURITY_PACKAGE
  117. SpmpValidRequest(
  118. ULONG_PTR PackageHandle,
  119. ULONG ApiCode);
  120. PLSAP_SECURITY_PACKAGE
  121. SpmpValidateHandle(
  122. ULONG_PTR PackageHandle);
  123. PLSAP_SECURITY_PACKAGE
  124. SpmpLocatePackage(
  125. ULONG_PTR PackageId);
  126. PLSAP_SECURITY_PACKAGE
  127. SpmpLookupPackage(
  128. PUNICODE_STRING pszPackageName);
  129. PLSAP_SECURITY_PACKAGE
  130. SpmpLookupPackageByRpcId(
  131. ULONG RpcId);
  132. #ifdef __cplusplus
  133. extern "C"
  134. #endif
  135. DWORD
  136. SpmpGetRpcPackageId(
  137. ULONG_PTR PackageId
  138. );
  139. PLSAP_SECURITY_PACKAGE
  140. SpmpLookupPackageAndRequest(
  141. PUNICODE_STRING pszPackageName,
  142. ULONG ApiCode);
  143. PLSAP_SECURITY_PACKAGE
  144. SpmpIteratePackagesByRequest(
  145. PLSAP_SECURITY_PACKAGE pInitialPackage,
  146. ULONG ApiCode);
  147. ULONG
  148. SpmpCurrentPackageCount(
  149. VOID);
  150. NTSTATUS
  151. SpmpBootAuthPackage(
  152. PLSAP_SECURITY_PACKAGE pPackage);
  153. BOOL
  154. SpmpLoadBuiltin(
  155. ULONG Flags,
  156. PSECPKG_FUNCTION_TABLE pTable,
  157. PSECPKG_PARAMETERS pParameters);
  158. VOID
  159. LsapAddPackageHandle(
  160. ULONG_PTR PackageId,
  161. BOOL IsContext
  162. );
  163. VOID
  164. LsapDelPackageHandle(
  165. PLSAP_SECURITY_PACKAGE Package,
  166. BOOL IsContext
  167. );
  168. //
  169. // NOTE: NOT FOR EXPORT TO SECURITY PACKAGES!
  170. //
  171. PVOID
  172. LsapAssignThread(LPTHREAD_START_ROUTINE pFunction,
  173. PVOID pvParameter,
  174. PSession pSession,
  175. BOOLEAN fUrgent);
  176. BOOL
  177. CreateSubordinateQueue(
  178. PSession pSession,
  179. PLSAP_TASK_QUEUE pOriginalQueue);
  180. BOOL
  181. DeleteSubordinateQueue(
  182. PLSAP_TASK_QUEUE pQueue,
  183. ULONG Flags
  184. );
  185. #define DELETEQ_SYNC_DRAIN 0x00000001
  186. PKSEC_LSA_MEMORY_HEADER
  187. LsapCreateKsecBuffer(
  188. SIZE_T InitialSize
  189. );
  190. PVOID
  191. LsapAllocateFromKsecBuffer(
  192. PKSEC_LSA_MEMORY_HEADER Header,
  193. ULONG Size
  194. );
  195. VOID
  196. LsapLpcContextCleanup(
  197. PSPM_LPC_MESSAGE pMessage
  198. );
  199. BOOL
  200. LsapChangeHandle(
  201. SECHANDLE_OPS HandleOp,
  202. PSecHandle OldHandle,
  203. PSecHandle NewHandle
  204. );
  205. NTSTATUS
  206. LsapChangeBuffer(
  207. PSecBuffer Old,
  208. PSecBuffer New
  209. );
  210. // Worker functions:
  211. NTSTATUS
  212. WLsaEstablishCreds(PUNICODE_STRING, PUNICODE_STRING, ULONG, PBYTE, PCredHandle, PTimeStamp);
  213. NTSTATUS
  214. WLsaLogonUser(PUNICODE_STRING, ULONG, PBYTE, ULONG, ULONG *, PBYTE, NTSTATUS *);
  215. NTSTATUS
  216. WLsaAcquireCredHandle(PUNICODE_STRING, PUNICODE_STRING, ULONG, PLUID, PVOID, PVOID, PVOID, PCredHandle, PTimeStamp);
  217. NTSTATUS
  218. WLsaInitContext(PCredHandle, PCtxtHandle, PUNICODE_STRING, ULONG, ULONG, ULONG, PSecBufferDesc, ULONG, PCtxtHandle, PSecBufferDesc, ULONG *, PTimeStamp, PBOOLEAN, PSecBuffer);
  219. NTSTATUS
  220. WLsaAcceptContext(PCredHandle, PCtxtHandle, PSecBufferDesc, ULONG, ULONG, PCtxtHandle, PSecBufferDesc, ULONG *, PTimeStamp, PBOOLEAN, PSecBuffer);
  221. NTSTATUS
  222. WLsaFreeCredHandle(PCredHandle phCred);
  223. NTSTATUS
  224. WLsaDeleteContext(PCtxtHandle phContext );
  225. NTSTATUS
  226. WLsaGetSecurityUserInfo(PLUID pLogonId, ULONG fFlags, PSecurityUserData * pUserInfo);
  227. NTSTATUS
  228. WLsaGetBinding( ULONG_PTR dwPackageID,
  229. PSEC_PACKAGE_BINDING_INFO BindingInfo,
  230. PULONG TotalSize,
  231. PWSTR * Base);
  232. NTSTATUS
  233. WLsaFindPackage(PUNICODE_STRING pssName, PULONG_PTR pulPackageId);
  234. NTSTATUS
  235. WLsaEnumeratePackages(PULONG pcPackages, PSecPkgInfo * ppPackageInfo);
  236. NTSTATUS
  237. WLsaApplyControlToken(PCtxtHandle phContext, PSecBufferDesc pInput);
  238. NTSTATUS
  239. WLsaQueryPackageInfo(PUNICODE_STRING pssPackageName, PSecPkgInfo * ppPackageInfo);
  240. NTSTATUS
  241. WLsaDeletePackage(
  242. PSECURITY_STRING PackageName);
  243. NTSTATUS
  244. WLsaAddPackage(
  245. PSECURITY_STRING PackageName,
  246. PSECURITY_PACKAGE_OPTIONS Options);
  247. NTSTATUS
  248. WLsaQueryContextAttributes( PCtxtHandle, ULONG, PVOID );
  249. NTSTATUS
  250. WLsaSetContextAttributes(
  251. PCtxtHandle phContext,
  252. ULONG ulAttribute,
  253. PVOID pvBuffer,
  254. ULONG cbBuffer
  255. );
  256. NTSTATUS
  257. WLsaQueryCredAttributes(
  258. PCredHandle phCredentials,
  259. ULONG ulAttribute,
  260. PVOID pBuffer
  261. );
  262. NTSTATUS
  263. WLsaAddCredentials(
  264. PCredHandle phCredential,
  265. PSECURITY_STRING pPrincipal,
  266. PSECURITY_STRING pSecPackage,
  267. DWORD fCredentialUse,
  268. PVOID pvAuthData,
  269. PVOID pvGetKeyFn,
  270. PVOID pvGetKeyArgument,
  271. PTimeStamp ptsExpiry);
  272. NTSTATUS
  273. WLsaEnumerateLogonSession(
  274. PULONG Count,
  275. PLUID * Sessions
  276. );
  277. NTSTATUS
  278. WLsaGetLogonSessionData(
  279. PLUID LogonId,
  280. PVOID * LogonData
  281. );
  282. NTSTATUS
  283. LsapSetSessionOptions(
  284. ULONG Request,
  285. ULONG_PTR Argument,
  286. PULONG_PTR Resonse
  287. );
  288. LSA_DISPATCH_FN DispatchAPIDirect;
  289. extern PLSA_DISPATCH_FN DllCallbackHandler ;
  290. NTSTATUS
  291. GetRegistryString(HKEY hKey,
  292. PWSTR pwszSubKey,
  293. PWSTR pwszValue,
  294. PWSTR pwszData,
  295. PULONG pdwCount);
  296. BOOL
  297. InitializeThreadPool(
  298. void
  299. );
  300. NTSTATUS
  301. LsapGetExtendedPackageInfo(
  302. PLSAP_SECURITY_PACKAGE Package,
  303. SECPKG_EXTENDED_INFORMATION_CLASS Class,
  304. PSECPKG_EXTENDED_INFORMATION * Info
  305. );
  306. NTSTATUS
  307. LsapSetExtendedPackageInfo(
  308. PLSAP_SECURITY_PACKAGE Package,
  309. SECPKG_EXTENDED_INFORMATION_CLASS Class,
  310. PSECPKG_EXTENDED_INFORMATION Info
  311. );
  312. #ifdef __cplusplus
  313. extern "C"
  314. #endif
  315. NTSTATUS
  316. LsapDuplicateSid(
  317. OUT PSID * DestinationSid,
  318. IN PSID SourceSid
  319. );
  320. #ifdef __cplusplus
  321. extern "C"
  322. #endif
  323. NTSTATUS
  324. LsapDuplicateSid2(
  325. OUT PSID * DestinationSid,
  326. IN PSID SourceSid
  327. );
  328. #ifdef __cplusplus
  329. extern "C"
  330. #endif
  331. PSID
  332. LsapMakeDomainRelativeSid(
  333. IN PSID DomainId,
  334. IN ULONG RelativeId
  335. );
  336. #ifdef __cplusplus
  337. extern "C"
  338. #endif
  339. PSID
  340. LsapMakeDomainRelativeSid2(
  341. IN PSID DomainId,
  342. IN ULONG RelativeId
  343. );
  344. //
  345. // Debug helpers to track down bogus handle use
  346. //
  347. #if DBG > 0
  348. #define SpmSetEvent(hHandle) ASSERT(SetEvent(hHandle))
  349. #else
  350. #define SpmSetEvent(hHandle) SetEvent(hHandle)
  351. #endif
  352. ULONG
  353. SpmpReportEvent(
  354. IN BOOL Unicode,
  355. IN WORD EventType,
  356. IN ULONG EventId,
  357. IN ULONG Category,
  358. IN ULONG SizeOfRawData,
  359. IN PVOID RawData,
  360. IN ULONG NumberOfStrings,
  361. ...
  362. );
  363. ULONG
  364. SpmpReportEventU(
  365. IN WORD EventType,
  366. IN ULONG EventId,
  367. IN ULONG Category,
  368. IN ULONG SizeOfRawData,
  369. IN PVOID RawData,
  370. IN ULONG NumberOfStrings,
  371. ...
  372. );
  373. #endif // __PROTOS_H__