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