home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / vc98 / include / mdsi.h < prev    next >
C/C++ Source or Header  |  1998-04-25  |  11KB  |  474 lines

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