Mdsi.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:11k
源码类别:

模拟服务器

开发平台:

C/C++

  1. /*---------------------------------------------------------------------------
  2. Copyright (c) Microsoft Corporation. 1996 - 1999. All Rights Reserved.
  3. mdsi.h
  4. Multiple Domain Synchronization Interface
  5. Authors:
  6. sandipn
  7. Version Ident:
  8. History:
  9. 03/26/96 sandipn     Initial Creation
  10. 08/08/96 sandipn     Updates for MDSI V1.1
  11. 10/10/96 sandipn     Updates for MDSI V1.2
  12. ---------------------------------------------------------------------------*/
  13. #ifndef __MDSI_H__
  14. #define __MDSI_H__
  15. #ifndef _WINDOWS_
  16. #include <windows.h>
  17. #endif // _WINDOWS_
  18. #ifdef __cplusplus
  19. extern "C" {
  20. #endif
  21. //
  22. // In parameters
  23. // 
  24. #undef IN
  25. #define IN
  26. //
  27. // Out parameters
  28. // 
  29. #undef OUT
  30. #define OUT
  31. //
  32. // Following define is used to enable forwarding user's old password
  33. // in a change password request
  34. //
  35. #undef  ENABLE_OLD_PASSWORD_PROPAGATION
  36. #define ENABLE_OLD_PASSWORD_PROPAGATION 1
  37. //
  38. // Version of the Host Process exported MDSI interface
  39. // Version is in two parts: Major revision and minor revision.
  40. // Major revision is the upper 16-bits, minor is the lower
  41. // 16-bits.
  42. //
  43. #define HOSTSEC_MDSI_VERSION_1_1             (0X00010001)
  44. #define HOSTSEC_MDSI_VERSION_1_2             (0X00010002)
  45. #define HOSTSEC_MDSI_CURRENT_VERSION         (HOSTSEC_MDSI_VERSION_1_2)
  46. //
  47. // Host Process implemented functions which ISV Security DLL invokes
  48. //
  49. //
  50. // NtSecValidateLogin
  51. //
  52. typedef
  53. DWORD 
  54. (WINAPI * PNTSEC_VALIDATE_LOGIN)(
  55. IN  HANDLE, // hHostDomain
  56. IN  HANDLE, // hTransaction
  57. IN  LPWSTR, // pwszUserName
  58. IN  LPWSTR // pwszPassword
  59. );
  60. //
  61. // NtSecChangePassword
  62. //
  63. #ifdef ENABLE_OLD_PASSWORD_PROPAGATION
  64. typedef
  65. DWORD
  66. (WINAPI * PNTSEC_CHANGE_PASSWORD)(
  67. IN  HANDLE, // hHostDomain
  68. IN  HANDLE, // hTransaction
  69. IN  LPWSTR, // pwszUserName
  70. IN  LPWSTR, // pwszNewPassword
  71. IN  LPWSTR // pwszOldPassword
  72. );
  73. #else
  74. typedef
  75. DWORD
  76. (WINAPI * PNTSEC_CHANGE_PASSWORD)(
  77. IN  HANDLE, // hHostDomain
  78. IN  HANDLE, // hTransaction
  79. IN  LPWSTR, // pwszUserName
  80. IN  LPWSTR // pwszPassword
  81. );
  82. #endif // ENABLE_OLD_PASSWORD_PROPAGATION
  83. //
  84. // NtSecTransactionComplete
  85. //
  86. typedef
  87. BOOL
  88. (WINAPI * PNTSEC_TRANSACTION_COMPLETE)(
  89. IN  HANDLE, // hHostDomain
  90. IN  HANDLE, // hTransaction
  91. IN  DWORD // dwStatus
  92. );
  93. //
  94. // NtSecShutdownComplete
  95. //
  96. typedef
  97. DWORD
  98. (WINAPI * PNTSEC_SHUTDOWN_COMPLETE)(
  99. IN  HANDLE // hHostDomain
  100. );
  101. //
  102. // NtSecGetHostUser
  103. //
  104. typedef
  105. DWORD 
  106. (WINAPI * PNTSEC_GET_HOST_USER)(
  107. IN HANDLE, // hHostDomain
  108. IN HANDLE, // hTransaction
  109. IN LPWSTR, // pwszNtUserDomain,
  110. IN LPWSTR // pwszNtUser
  111. );
  112. //
  113. // NtSecGetNtUser
  114. //
  115. typedef
  116. DWORD 
  117. (WINAPI * PNTSEC_GET_NT_USER)(
  118. IN HANDLE, // hHostDomain
  119. IN HANDLE, // hTransaction
  120. IN LPWSTR // pwszHostUser
  121. );
  122. //
  123. // Function Dispatch Table: contains pointers to each of the entrypoints the Host Process 
  124. // provides to the Security Integration DLL.  
  125. //
  126. typedef struct tagNTSEC_DISPATCH_VERSION_1_1
  127. {
  128. PNTSEC_VALIDATE_LOGIN        NtSecValidateLogin;
  129. PNTSEC_CHANGE_PASSWORD       NtSecChangePassword;
  130. PNTSEC_TRANSACTION_COMPLETE  NtSecTransactionComplete;
  131. PNTSEC_SHUTDOWN_COMPLETE     NtSecShutdownComplete;
  132. } NTSEC_DISPATCH_VERSION_1_1, *PNTSEC_DISPATCH_VERSION_1_1;
  133. typedef struct tagNTSEC_DISPATCH_VERSION_1_2
  134. {
  135. PNTSEC_VALIDATE_LOGIN        NtSecValidateLogin;
  136. PNTSEC_CHANGE_PASSWORD       NtSecChangePassword;
  137. PNTSEC_TRANSACTION_COMPLETE  NtSecTransactionComplete;
  138. PNTSEC_SHUTDOWN_COMPLETE     NtSecShutdownComplete;
  139. PNTSEC_GET_HOST_USER         NtSecGetHostUser;
  140. PNTSEC_GET_NT_USER           NtSecGetNtUser;
  141. } NTSEC_DISPATCH_VERSION_1_2, *PNTSEC_DISPATCH_VERSION_1_2;
  142. typedef NTSEC_DISPATCH_VERSION_1_2 NTSEC_DISPATCH_CURRENT_VERSION;
  143. typedef NTSEC_DISPATCH_CURRENT_VERSION *PNTSEC_DISPATCH_CURRENT_VERSION;
  144. //
  145. // ISV Security DLL implemented functions which Host Process invokes
  146. //
  147. //
  148. // HostSecNegotiate
  149. //
  150. BOOL
  151. WINAPI 
  152. HostSecNegotiate(
  153. IN  DWORD, // dwHostProcessVersion
  154. OUT PDWORD // pdwDllVersion
  155. );
  156. typedef
  157. BOOL
  158. (WINAPI * PHOSTSEC_NEGOTIATE)(
  159. IN  DWORD, // dwHostProcessVersion
  160. OUT PDWORD // pdwDllVersion
  161. );
  162. //
  163. // HostSecInitialize
  164. //
  165. BOOL
  166. WINAPI 
  167. HostSecInitialize(
  168. IN  LPWSTR, // pwszDomainName
  169. IN  HANDLE, // hHostDomain
  170. IN  PVOID, // pHostSecFunctions
  171. OUT PVOID *, // ppDllSecFunctions
  172. OUT PVOID * // phDllDomainContext
  173. );
  174. typedef
  175. BOOL
  176. (WINAPI * PHOSTSEC_INITIALIZE)(
  177. IN  LPWSTR, // pwszDomainName
  178. IN  HANDLE, // hHostDomain
  179. IN  PVOID, // pHostSecFunctions
  180. OUT PVOID *, // ppDllSecFunctions
  181. OUT PVOID * // phDllDomainContext
  182. );
  183. //
  184. // HostSecValidateLogin
  185. //
  186. DWORD
  187. WINAPI 
  188. HostSecValidateLogin(
  189. IN  PVOID, // hDllDomainContext
  190. IN  HANDLE, // hTransaction
  191. IN  LPWSTR, // pwszUserName
  192. IN  LPWSTR // pwszPassword
  193. );
  194. typedef
  195. DWORD
  196. (WINAPI * PHOSTSEC_VALIDATE_LOGIN)(
  197. IN  PVOID, // hDllDomainContext
  198. IN  HANDLE, // hTransaction
  199. IN  LPWSTR, // pwszUserName
  200. IN  LPWSTR // pwszPassword
  201. );
  202. //
  203. // HostSecChangePassword
  204. //
  205. #ifdef ENABLE_OLD_PASSWORD_PROPAGATION
  206. DWORD
  207. WINAPI 
  208. HostSecChangePassword(
  209. IN  PVOID, // hDllDomainContext
  210. IN  HANDLE, // hTransaction
  211. IN  LPWSTR, // pwszUserName
  212. IN  LPWSTR, // pwszNewPassword
  213. IN LPWSTR // pwszOldPassword
  214. );
  215. typedef
  216. DWORD
  217. (WINAPI * PHOSTSEC_CHANGE_PASSWORD)(
  218. IN  PVOID, // hDllDomainContext
  219. IN  HANDLE, // hTransaction
  220. IN  LPWSTR, // pwszUserName
  221. IN  LPWSTR, // pwszNewPassword
  222. IN LPWSTR // pwszOldPassword
  223. );
  224. #else
  225. DWORD
  226. WINAPI 
  227. HostSecChangePassword(
  228. IN  PVOID, // hDllDomainContext
  229. IN  HANDLE, // hTransaction
  230. IN  LPWSTR, // pwszUserName
  231. IN  LPWSTR // pwszPassword
  232. );
  233. typedef
  234. DWORD
  235. (WINAPI * PHOSTSEC_CHANGE_PASSWORD)(
  236. IN  PVOID, // hDllDomainContext
  237. IN  HANDLE, // hTransaction
  238. IN  LPWSTR, // pwszUserName
  239. IN  LPWSTR // pwszPassword
  240. );
  241. #endif // ENABLE_OLD_PASSWORD_PROPAGATION
  242. //
  243. // HostSecTransactionComplete
  244. //
  245. BOOL
  246. WINAPI 
  247. HostSecTransactionComplete(
  248.   IN  PVOID, // hDllDomainContext
  249.   IN  HANDLE, // hTransaction
  250. IN  DWORD // dwStatus
  251. );
  252. typedef
  253. BOOL
  254. (WINAPI * PHOSTSEC_TRANSACTION_COMPLETE)(
  255.   IN  PVOID, // hDllDomainContext
  256.   IN  HANDLE, // hTransaction
  257.   IN  DWORD // dwStatus
  258.   );
  259. //
  260. // HostSecShutdown
  261. //
  262. DWORD
  263. WINAPI 
  264. HostSecShutdown(
  265. IN  PVOID, // hDllDomainContext
  266. IN  DWORD // dwShutdownFlag
  267. );
  268. typedef
  269. DWORD
  270. (WINAPI * PHOSTSEC_SHUTDOWN)(
  271. IN  PVOID, // hDllDomainContext
  272. IN  DWORD // dwShutdownFlag
  273. );
  274. //
  275. // HostSecHostPing
  276. //
  277. DWORD
  278. WINAPI 
  279. HostSecHostPing(
  280. IN  PVOID, // hDllDomainContext
  281. OUT PDWORD // pdwStatus
  282. );
  283. typedef
  284. DWORD
  285. (WINAPI * PHOSTSEC_HOST_PING)(
  286. IN  PVOID, // hDllDomainContext
  287. OUT PDWORD // pdwStatus
  288. );
  289. //
  290. // HostSecTransactionCompleteEx
  291. //
  292. BOOL 
  293. WINAPI
  294. HostSecTransactionCompleteEx(
  295. IN PVOID, // hDllDomainContext
  296. IN HANDLE, // hTransaction
  297. IN DWORD, // dwStatus
  298. IN LPWSTR, // pwszUser
  299. IN LPWSTR // pwszDomain
  300. );
  301. typedef
  302. BOOL 
  303. (WINAPI * PHOSTSEC_TRANSACTION_COMPLETE_EX)(
  304. IN PVOID, // hDllDomainContext
  305. IN HANDLE, // hTransaction
  306. IN DWORD, // dwStatus
  307. IN LPWSTR, // pwszUser
  308. IN LPWSTR // pwszDomain
  309. );
  310. //
  311. // Function Dispatch Table: contains pointers to each of the entrypoints the ISV Security 
  312. // DLL provides to the Host Process.
  313. //  
  314. typedef struct tagHOSTSEC_DISPATCH_VERSION_1_1
  315. {
  316. PHOSTSEC_VALIDATE_LOGIN        HostSecValidateLogin;
  317. PHOSTSEC_CHANGE_PASSWORD       HostSecChangePassword;
  318. PHOSTSEC_TRANSACTION_COMPLETE  HostSecTransactionComplete;
  319. PHOSTSEC_SHUTDOWN              HostSecShutdown;
  320. PHOSTSEC_HOST_PING             HostSecHostPing;
  321. } HOSTSEC_DISPATCH_VERSION_1_1, *PHOSTSEC_DISPATCH_VERSION_1_1;
  322. typedef struct tagHOSTSEC_DISPATCH_VERSION_1_2
  323. {
  324. PHOSTSEC_VALIDATE_LOGIN           HostSecValidateLogin;
  325. PHOSTSEC_CHANGE_PASSWORD          HostSecChangePassword;
  326. PHOSTSEC_TRANSACTION_COMPLETE     HostSecTransactionComplete;
  327. PHOSTSEC_SHUTDOWN                 HostSecShutdown;
  328. PHOSTSEC_HOST_PING                HostSecHostPing;
  329. PHOSTSEC_TRANSACTION_COMPLETE_EX  HostSecTransactionCompleteEx;
  330. } HOSTSEC_DISPATCH_VERSION_1_2, *PHOSTSEC_DISPATCH_VERSION_1_2;
  331. typedef HOSTSEC_DISPATCH_VERSION_1_2 HOSTSEC_DISPATCH_CURRENT_VERSION;
  332. typedef HOSTSEC_DISPATCH_CURRENT_VERSION *PHOSTSEC_DISPATCH_CURRENT_VERSION; 
  333. //
  334. // HostSecShutdown uses following values (dwShutdownFlag) to indicate Security DLL which 
  335. // way cleanup should be done.
  336. //
  337. // NORMAL - Host Process will not initiate any more transactions. DLL should reject
  338. // any new transactions from the host. Host Process will continue to call
  339. // HostSecTransactionComplete() with any outstanding host initiated completions.
  340. //
  341. // DONE - Host Process has completed all host initiated transactions. DLL can terminate
  342. // host communications and free up any system resources it has acquired.
  343. //
  344. // ABORT - Security DLL should abort all host communications and attempt to release
  345. // all system resources it has acquired.
  346. //
  347. #define HOSTSEC_SHUTDOWN_NORMAL                            (1)
  348. #define HOSTSEC_SHUTDOWN_DONE                              (2)
  349. #define HOSTSEC_SHUTDOWN_ABORT                             (3)
  350. //
  351. // HostSecHostPing returns following values as status (pdwStatus) of host connection.
  352. //
  353. // LOCAL_CONFIG_ERROR - Local configuration error occurred.
  354. //
  355. // REMOTE_TP_UNAVAILABLE_RETRY - Remote TP is not available, retry could be done.
  356. //
  357. // REMOTE_TP_UNAVAILABLE_NORETRY - Remote TP is not available, retry should not be done.
  358. //
  359. // REMOTE_UNREACHABLE - Host is un-reachable.
  360. //
  361. #define HOSTSEC_PING_LOCAL_CONFIG_ERROR                    (1)
  362. #define HOSTSEC_PING_REMOTE_TP_UNAVAILABLE_RETRY           (2)
  363. #define HOSTSEC_PING_REMOTE_TP_UNAVAILABLE_NORETRY         (3)
  364. #define HOSTSEC_PING_REMOTE_UNREACHABLE                    (4)
  365. #ifdef __cplusplus
  366. }
  367. #endif
  368. #endif // __MDSI_H__