Welcome to mirror list, hosted at ThFree Co, Russian Federation.

cygwin.com/git/newlib-cygwin.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2000-10-08 20:55:29 +0400
committerCorinna Vinschen <corinna@vinschen.de>2000-10-08 20:55:29 +0400
commit65bb926f51a5cac83b63e98e81121ece36d57454 (patch)
tree590e9471cb779f8dac5adc0ef342c695f0c2b422 /winsup/w32api
parent57bf29e8258b921e632666ff17081805a5a62953 (diff)
* include/ntsecapi.h: New file.
* include/subauth.h: Ditto. * include/ipexport.h: Fix global header define not to contain trailing underscore. Change layout according to standard. * include/iphlpapi.h: Ditto. * include/ipifcons.h: Ditto. * include/iptypes.h: Ditto. * include/ntdef.h: Ditto. Define conditional datatypes dependent of inclusion of ntdecapi.h and subauth.h. * lib/secur32.def: New stub for secur32.dll.
Diffstat (limited to 'winsup/w32api')
-rw-r--r--winsup/w32api/ChangeLog13
-rw-r--r--winsup/w32api/include/ipexport.h14
-rw-r--r--winsup/w32api/include/iphlpapi.h11
-rw-r--r--winsup/w32api/include/ipifcons.h10
-rw-r--r--winsup/w32api/include/iprtrmib.h35
-rw-r--r--winsup/w32api/include/iptypes.h20
-rw-r--r--winsup/w32api/include/ntdef.h21
-rw-r--r--winsup/w32api/include/ntsecapi.h602
-rw-r--r--winsup/w32api/include/subauth.h207
-rw-r--r--winsup/w32api/lib/secur32.def8
10 files changed, 857 insertions, 84 deletions
diff --git a/winsup/w32api/ChangeLog b/winsup/w32api/ChangeLog
index 528dcd122..6b4b05d24 100644
--- a/winsup/w32api/ChangeLog
+++ b/winsup/w32api/ChangeLog
@@ -1,3 +1,16 @@
+Sun Oct 8 18:26:00 2000 Corinna Vinschen <corinna@vinschen.de>
+
+ * include/ntsecapi.h: New file.
+ * include/subauth.h: Ditto.
+ * include/ipexport.h: Fix global header define not to contain
+ trailing underscore. Change layout according to standard.
+ * include/iphlpapi.h: Ditto.
+ * include/ipifcons.h: Ditto.
+ * include/iptypes.h: Ditto.
+ * include/ntdef.h: Ditto. Define conditional datatypes dependent
+ of inclusion of ntdecapi.h and subauth.h.
+ * lib/secur32.def: New stub for secur32.dll.
+
Mon Oct 2 11:15:00 2000 Corinna Vinschen <corinna@vinschen.de>
* include/ras.h: New file.
diff --git a/winsup/w32api/include/ipexport.h b/winsup/w32api/include/ipexport.h
index 1b11c5170..bcff27268 100644
--- a/winsup/w32api/include/ipexport.h
+++ b/winsup/w32api/include/ipexport.h
@@ -1,30 +1,22 @@
-#ifndef _IPEXPORT_H_
-#define _IPEXPORT_H_
-
+#ifndef _IPEXPORT_H
+#define _IPEXPORT_H
#ifdef __cplusplus
extern "C" {
#endif
-
#ifndef ANY_SIZE
#define ANY_SIZE 1
#endif
-
#define MAX_ADAPTER_NAME 128
-
typedef unsigned long IPAddr, IPMask, IP_STATUS;
-
typedef struct {
ULONG Index;
WCHAR Name[MAX_ADAPTER_NAME];
} IP_ADAPTER_INDEX_MAP, *PIP_ADAPTER_INDEX_MAP;
-
typedef struct {
LONG NumAdapters;
IP_ADAPTER_INDEX_MAP Adapter[ANY_SIZE];
} IP_INTERFACE_INFO, *PIP_INTERFACE_INFO;
-
#ifdef __cplusplus
}
#endif
-
-#endif /* _IPEXPORT_H_ */
+#endif /* _IPEXPORT_H */
diff --git a/winsup/w32api/include/iphlpapi.h b/winsup/w32api/include/iphlpapi.h
index 493224947..e71da0aab 100644
--- a/winsup/w32api/include/iphlpapi.h
+++ b/winsup/w32api/include/iphlpapi.h
@@ -1,14 +1,11 @@
-#ifndef _IPHLPAPI_H_
-#define _IPHLPAPI_H_
-
+#ifndef _IPHLPAPI_H
+#define _IPHLPAPI_H
#include <iprtrmib.h>
#include <ipexport.h>
#include <iptypes.h>
-
#ifdef __cplusplus
extern "C" {
#endif
-
DWORD WINAPI CreateIpForwardEntry(PMIB_IPFORWARDROW);
DWORD WINAPI CreateIpNetEntry(PMIB_IPNETROW);
DWORD WINAPI DeleteIpForwardEntry(PMIB_IPFORWARDROW);
@@ -40,9 +37,7 @@ DWORD WINAPI SetIpNetEntry(PMIB_IPNETROW);
DWORD WINAPI SetIpStatistics(PMIB_IPSTATS);
DWORD WINAPI SetIpTTL(UINT);
DWORD WINAPI SetTcpEntry(PMIB_TCPROW);
-
#ifdef __cplusplus
}
#endif
-
-#endif /* _IPHLPAPI_H_ */
+#endif /* _IPHLPAPI_H */
diff --git a/winsup/w32api/include/ipifcons.h b/winsup/w32api/include/ipifcons.h
index d0b2c9a1a..16ef16880 100644
--- a/winsup/w32api/include/ipifcons.h
+++ b/winsup/w32api/include/ipifcons.h
@@ -1,17 +1,14 @@
-#ifndef _IPIFCONS_H_
-#define _IPIFCONS_H_
-
+#ifndef _IPIFCONS_H
+#define _IPIFCONS_H
#define MIB_IF_ADMIN_STATUS_UP 1
#define MIB_IF_ADMIN_STATUS_DOWN 2
#define MIB_IF_ADMIN_STATUS_TESTING 3
-
#define MIB_IF_OPER_STATUS_NON_OPERATIONAL 0
#define MIB_IF_OPER_STATUS_UNREACHABLE 1
#define MIB_IF_OPER_STATUS_DISCONNECTED 2
#define MIB_IF_OPER_STATUS_CONNECTING 3
#define MIB_IF_OPER_STATUS_CONNECTED 4
#define MIB_IF_OPER_STATUS_OPERATIONAL 5
-
#define MIB_IF_TYPE_OTHER 1
#define MIB_IF_TYPE_ETHERNET 6
#define MIB_IF_TYPE_TOKENRING 9
@@ -19,5 +16,4 @@
#define MIB_IF_TYPE_PPP 23
#define MIB_IF_TYPE_LOOPBACK 24
#define MIB_IF_TYPE_SLIP 28
-
-#endif /* _IPIFCONS_H_ */
+#endif /* _IPIFCONS_H */
diff --git a/winsup/w32api/include/iprtrmib.h b/winsup/w32api/include/iprtrmib.h
index 10ea65fb3..cb30ef836 100644
--- a/winsup/w32api/include/iprtrmib.h
+++ b/winsup/w32api/include/iprtrmib.h
@@ -1,33 +1,25 @@
-#ifndef _IPRTRMIB_H_
-#define _IPRTRMIB_H_
-
+#ifndef _IPRTRMIB_H
+#define _IPRTRMIB_H
#include <ipifcons.h>
-
#ifdef __cplusplus
extern "C" {
#endif
-
#ifndef ANY_SIZE
#define ANY_SIZE 1
#endif
-
#define MAXLEN_PHYSADDR 8
#define MAXLEN_IFDESCR 256
-
#ifndef MAX_INTERFACE_NAME_LEN
#define MAX_INTERFACE_NAME_LEN 256
#endif
-
#define MIB_IPNET_TYPE_OTHER 1
#define MIB_IPNET_TYPE_INVALID 2
#define MIB_IPNET_TYPE_DYNAMIC 3
#define MIB_IPNET_TYPE_STATIC 4
-
#define MIB_TCP_RTO_OTHER 1
#define MIB_TCP_RTO_CONSTANT 2
#define MIB_TCP_RTO_RSRE 3
#define MIB_TCP_RTO_VANJ 4
-
#define MIB_TCP_STATE_CLOSED 1
#define MIB_TCP_STATE_LISTEN 2
#define MIB_TCP_STATE_SYN_SENT 3
@@ -40,11 +32,9 @@ extern "C" {
#define MIB_TCP_STATE_LAST_ACK 10
#define MIB_TCP_STATE_TIME_WAIT 11
#define MIB_TCP_STATE_DELETE_TCB 12
-
#define MIB_USE_CURRENT_TTL ((DWORD) -1)
#define MIB_USE_CURRENT_FORWARDING ((DWORD) -1)
#define MIB_TCP_MAXCONN_DYNAMIC ((DWORD) -1)
-
typedef struct {
DWORD dwAddr;
DWORD dwIndex;
@@ -54,12 +44,10 @@ typedef struct {
unsigned short unused1;
unsigned short unused2;
} MIB_IPADDRROW, *PMIB_IPADDRROW;
-
typedef struct {
DWORD dwNumEntries;
MIB_IPADDRROW table[ANY_SIZE];
} MIB_IPADDRTABLE, *PMIB_IPADDRTABLE;
-
typedef struct {
DWORD dwForwardDest;
DWORD dwForwardMask;
@@ -76,12 +64,10 @@ typedef struct {
DWORD dwForwardMetric4;
DWORD dwForwardMetric5;
} MIB_IPFORWARDROW, *PMIB_IPFORWARDROW;
-
typedef struct {
DWORD dwNumEntries;
MIB_IPFORWARDROW table[ANY_SIZE];
} MIB_IPFORWARDTABLE, *PMIB_IPFORWARDTABLE;
-
typedef struct {
DWORD dwIndex;
DWORD dwPhysAddrLen;
@@ -89,12 +75,10 @@ typedef struct {
DWORD dwAddr;
DWORD dwType;
} MIB_IPNETROW, *PMIB_IPNETROW;
-
typedef struct {
DWORD dwNumEntries;
MIB_IPNETROW table[ANY_SIZE];
} MIB_IPNETTABLE, *PMIB_IPNETTABLE;
-
typedef struct {
DWORD dwMsgs;
DWORD dwErrors;
@@ -110,16 +94,13 @@ typedef struct {
DWORD dwAddrMasks;
DWORD dwAddrMaskReps;
} MIBICMPSTATS, *PMIBICMPSTATS;
-
typedef struct {
MIBICMPSTATS icmpInStats;
MIBICMPSTATS icmpOutStats;
} MIBICMPINFO, *PMIBICMPINFO;
-
typedef struct {
MIBICMPINFO stats;
} MIB_ICMP, *PMIB_ICMP;
-
typedef struct {
WCHAR wszName[MAX_INTERFACE_NAME_LEN];
DWORD dwIndex;
@@ -146,12 +127,10 @@ typedef struct {
DWORD dwDescrLen;
BYTE bDescr[MAXLEN_IFDESCR];
} MIB_IFROW, *PMIB_IFROW;
-
typedef struct {
DWORD dwNumEntries;
MIB_IFROW table[ANY_SIZE];
} MIB_IFTABLE, *PMIB_IFTABLE;
-
typedef struct {
DWORD dwForwarding;
DWORD dwDefaultTTL;
@@ -177,7 +156,6 @@ typedef struct {
DWORD dwNumAddr;
DWORD dwNumRoutes;
} MIB_IPSTATS, *PMIB_IPSTATS;
-
typedef struct {
DWORD dwRtoAlgorithm;
DWORD dwRtoMin;
@@ -195,7 +173,6 @@ typedef struct {
DWORD dwOutRsts;
DWORD dwNumConns;
} MIB_TCPSTATS, *PMIB_TCPSTATS;
-
typedef struct {
DWORD dwState;
DWORD dwLocalAddr;
@@ -203,12 +180,10 @@ typedef struct {
DWORD dwRemoteAddr;
DWORD dwRemotePort;
} MIB_TCPROW, *PMIB_TCPROW;
-
typedef struct {
DWORD dwNumEntries;
MIB_TCPROW table[ANY_SIZE];
} MIB_TCPTABLE, *PMIB_TCPTABLE;
-
typedef struct {
DWORD dwInDatagrams;
DWORD dwNoPorts;
@@ -216,19 +191,15 @@ typedef struct {
DWORD dwOutDatagrams;
DWORD dwNumAddrs;
} MIB_UDPSTATS, *PMIB_UDPSTATS;
-
typedef struct {
DWORD dwLocalAddr;
DWORD dwLocalPort;
} MIB_UDPROW, *PMIB_UDPROW;
-
typedef struct {
DWORD dwNumEntries;
MIB_UDPROW table[ANY_SIZE];
} MIB_UDPTABLE, *PMIB_UDPTABLE;
-
#ifdef __cplusplus
}
#endif
-
-#endif /* _IPRTRMIB_H_ */
+#endif /* _IPRTRMIB_H */
diff --git a/winsup/w32api/include/iptypes.h b/winsup/w32api/include/iptypes.h
index 94fbb771d..83c5dd4e8 100644
--- a/winsup/w32api/include/iptypes.h
+++ b/winsup/w32api/include/iptypes.h
@@ -1,43 +1,34 @@
-#ifndef _IPTYPES_H_
-#define _IPTYPES_H_
-
+#ifndef _IPTYPES_H
+#define _IPTYPES_H
#ifdef __cplusplus
extern "C" {
#endif
-
#define DEFAULT_MINIMUM_ENTITIES 32
-
#define MAX_ADAPTER_ADDRESS_LENGTH 8
#define MAX_ADAPTER_DESCRIPTION_LENGTH 128
#define MAX_ADAPTER_NAME_LENGTH 256
#define MAX_DOMAIN_NAME_LEN 128
#define MAX_HOSTNAME_LEN 128
#define MAX_SCOPE_ID_LEN 256
-
#define BROADCAST_NODETYPE 1
#define PEER_TO_PEER_NODETYPE 2
#define MIXED_NODETYPE 4
#define HYBRID_NODETYPE 8
-
#define IF_OTHER_ADAPTERTYPE 0
#define IF_ETHERNET_ADAPTERTYPE 1
#define IF_TOKEN_RING_ADAPTERTYPE 2
#define IF_FDDI_ADAPTERTYPE 3
#define IF_PPP_ADAPTERTYPE 4
#define IF_LOOPBACK_ADAPTERTYPE 5
-
typedef struct {
char String[4 * 4];
-} IP_ADDRESS_STRING, *PIP_ADDRESS_STRING,
- IP_MASK_STRING, *PIP_MASK_STRING;
-
+} IP_ADDRESS_STRING, *PIP_ADDRESS_STRING, IP_MASK_STRING, *PIP_MASK_STRING;
typedef struct __IP_ADDR_STRING {
struct __IP_ADDR_STRING* Next;
IP_ADDRESS_STRING IpAddress;
IP_MASK_STRING IpMask;
DWORD Context;
} IP_ADDR_STRING, *PIP_ADDR_STRING;
-
typedef struct __IP_ADAPTER_INFO {
struct __IP_ADAPTER_INFO* Next;
DWORD ComboIndex;
@@ -58,7 +49,6 @@ typedef struct __IP_ADAPTER_INFO {
time_t LeaseObtained;
time_t LeaseExpires;
} IP_ADAPTER_INFO, *PIP_ADAPTER_INFO;
-
typedef struct {
char HostName[MAX_HOSTNAME_LEN + 4] ;
char DomainName[MAX_DOMAIN_NAME_LEN + 4];
@@ -70,9 +60,7 @@ typedef struct {
UINT EnableProxy;
UINT EnableDns;
} FIXED_INFO, *PFIXED_INFO;
-
#ifdef __cplusplus
}
#endif
-
-#endif /* _IPTYPES_H_ */
+#endif /* _IPTYPES_H */
diff --git a/winsup/w32api/include/ntdef.h b/winsup/w32api/include/ntdef.h
index 71e84da16..a192a78d7 100644
--- a/winsup/w32api/include/ntdef.h
+++ b/winsup/w32api/include/ntdef.h
@@ -1,8 +1,6 @@
-#ifndef _NTDEF_H_
-#define _NTDEF_H_
-
+#ifndef _NTDEF_H
+#define _NTDEF_H
#define NTAPI __stdcall
-
#define OBJ_INHERIT 2L
#define OBJ_PERMANENT 16L
#define OBJ_EXCLUSIVE 32L
@@ -10,7 +8,6 @@
#define OBJ_OPENIF 128L
#define OBJ_OPENLINK 256L
#define OBJ_VALID_ATTRIBUTES 498L
-
#define InitializeObjectAttributes(p,n,a,r,s) { \
(p)->Length = sizeof( OBJECT_ATTRIBUTES ); \
(p)->RootDirectory = r; \
@@ -19,17 +16,22 @@
(p)->SecurityDescriptor = s; \
(p)->SecurityQualityOfService = NULL; \
}
-
#define STATUS_SUCCESS ((NTSTATUS)0)
#define NT_SUCCESS(x) ((x)>=0)
-
+#if !defined(_NTSECAPI_H) && !defined(_SUBAUTH_H)
typedef LONG NTSTATUS, *PNTSTATUS;
-typedef LARGE_INTEGER PHYSICAL_ADDRESS, *PPHYSICAL_ADDRESS;
typedef struct _UNICODE_STRING {
USHORT Length;
USHORT MaximumLength;
PWSTR Buffer;
} UNICODE_STRING, *PUNICODE_STRING;
+typedef struct __STRING {
+ USHORT Length;
+ USHORT MaximumLength;
+ PCHAR Buffer;
+} STRING, *PSTRING;
+#endif
+typedef LARGE_INTEGER PHYSICAL_ADDRESS, *PPHYSICAL_ADDRESS;
typedef enum _SECTION_INHERIT {
ViewShare = 1,
ViewUnmap = 2
@@ -42,5 +44,4 @@ typedef struct _OBJECT_ATTRIBUTES {
PVOID SecurityDescriptor;
PVOID SecurityQualityOfService;
} OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;
-
-#endif /* _NTDEF_H_ */
+#endif /* _NTDEF_H */
diff --git a/winsup/w32api/include/ntsecapi.h b/winsup/w32api/include/ntsecapi.h
new file mode 100644
index 000000000..7a4f7a989
--- /dev/null
+++ b/winsup/w32api/include/ntsecapi.h
@@ -0,0 +1,602 @@
+#ifndef _NTSECAPI_H
+#define _NTSECAPI_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#define LOGON_GUEST 1
+#define LOGON_NOENCRYPTION 2
+#define LOGON_CACHED_ACCOUNT 4
+#define LOGON_USED_LM_PASSWORD 8
+#define LOGON_EXTRA_SIDS 32
+#define LOGON_SUBAUTH_SESSION_KEY 64
+#define LOGON_SERVER_TRUST_ACCOUNT 128
+#define LOGON_NTLMV2_ENABLED 256
+#define LOGON_RESOURCE_GROUPS 512
+#define LOGON_PROFILE_PATH_RETURNED 1024
+#define LOGON_GRACE_LOGON 16777216
+#define LSA_MODE_PASSWORD_PROTECTED 1
+#define LSA_MODE_INDIVIDUAL_ACCOUNTS 2
+#define LSA_MODE_MANDATORY_ACCESS 3
+#define LSA_MODE_LOG_FULL 4
+#define LSA_SUCCESS(Error) ((LONG)(Error) >= 0)
+#define MSV1_0_ALLOW_SERVER_TRUST_ACCOUNT 32
+#define MSV1_0_ALLOW_WORKSTATION_TRUST_ACCOUNT 2048
+#define MSV1_0_CHALLENGE_LENGTH 8
+#define MSV1_0_CLEARTEXT_PASSWORD_ALLOWED 2
+#define MSV1_0_CRED_LM_PRESENT 1
+#define MSV1_0_CRED_NT_PRESENT 2
+#define MSV1_0_CRED_VERSION 0
+#define MSV1_0_DONT_TRY_GUEST_ACCOUNT 16
+#define MSV1_0_LANMAN_SESSION_KEY_LENGTH 8
+#define MSV1_0_MAX_NTLM3_LIFE 1800
+#define MSV1_0_MAX_AVL_SIZE 64000
+#define MSV1_0_MNS_LOGON 16777216
+#define MSV1_0_NTLM3_RESPONSE_LENGTH 16
+#define MSV1_0_NTLM3_OWF_LENGTH 16
+#define MSV1_0_NTLM3_INPUT_LENGTH (sizeof(MSV1_0_NTLM3_RESPONSE) - MSV1_0_NTLM3_RESPONSE_LENGTH)
+#define MSV1_0_OWF_PASSWORD_LENGTH 16
+#define MSV1_0_PACKAGE_NAME "MICROSOFT_AUTHENTICATION_PACKAGE_V1_0"
+#define MSV1_0_PACKAGE_NAMEW L"MICROSOFT_AUTHENTICATION_PACKAGE_V1_0"
+#define MSV1_0_PACKAGE_NAMEW_LENGTH sizeof(MSV1_0_PACKAGE_NAMEW) - sizeof(WCHAR)
+#define MSV1_0_RETURN_USER_PARAMETERS 8
+#define MSV1_0_RETURN_PASSWORD_EXPIRY 64
+#define MSV1_0_RETURN_PROFILE_PATH 512
+#define MSV1_0_SUBAUTHENTICATION_DLL_EX 1048576
+#define MSV1_0_SUBAUTHENTICATION_DLL 0xff000000
+#define MSV1_0_SUBAUTHENTICATION_DLL_SHIFT 24
+#define MSV1_0_SUBAUTHENTICATION_DLL_RAS 2
+#define MSV1_0_SUBAUTHENTICATION_DLL_IIS 132
+#define MSV1_0_SUBAUTHENTICATION_FLAGS 0xff000000
+#define MSV1_0_SUBAUTHENTICATION_KEY "System\\CurrentControlSet\\Control\\Lsa\\MSV1_0"
+#define MSV1_0_SUBAUTHENTICATION_VALUE "Auth"
+#define MSV1_0_TRY_GUEST_ACCOUNT_ONLY 256
+#define MSV1_0_TRY_SPECIFIED_DOMAIN_ONLY 1024
+#define MSV1_0_UPDATE_LOGON_STATISTICS 4
+#define MSV1_0_USE_CLIENT_CHALLENGE 128
+#define MSV1_0_USER_SESSION_KEY_LENGTH 16
+#define POLICY_VIEW_LOCAL_INFORMATION 1
+#define POLICY_VIEW_AUDIT_INFORMATION 2
+#define POLICY_GET_PRIVATE_INFORMATION 4
+#define POLICY_TRUST_ADMIN 8
+#define POLICY_CREATE_ACCOUNT 16
+#define POLICY_CREATE_SECRET 32
+#define POLICY_CREATE_PRIVILEGE 64
+#define POLICY_SET_DEFAULT_QUOTA_LIMITS 128
+#define POLICY_SET_AUDIT_REQUIREMENTS 256
+#define POLICY_AUDIT_LOG_ADMIN 512
+#define POLICY_SERVER_ADMIN 1024
+#define POLICY_LOOKUP_NAMES 2048
+#define POLICY_READ (STANDARD_RIGHTS_READ|6)
+#define POLICY_WRITE (STANDARD_RIGHTS_WRITE|2040)
+#define POLICY_EXECUTE (STANDARD_RIGHTS_EXECUTE|2049)
+#define POLICY_ALL_ACCESS (STANDARD_RIGHTS_REQUIRED|4095)
+#define POLICY_AUDIT_EVENT_UNCHANGED 0
+#define POLICY_AUDIT_EVENT_SUCCESS 1
+#define POLICY_AUDIT_EVENT_FAILURE 2
+#define POLICY_AUDIT_EVENT_NONE 4
+#define POLICY_AUDIT_EVENT_MASK 7
+#define POLICY_LOCATION_LOCAL 1
+#define POLICY_LOCATION_DS 2
+#define POLICY_MACHINE_POLICY_LOCAL 0
+#define POLICY_MACHINE_POLICY_DEFAULTED 1
+#define POLICY_MACHINE_POLICY_EXPLICIT 2
+#define POLICY_MACHINE_POLICY_UNKNOWN 0xFFFFFFFF
+#define POLICY_QOS_SCHANEL_REQUIRED 1
+#define POLICY_QOS_OUTBOUND_INTEGRITY 2
+#define POLICY_QOS_OUTBOUND_CONFIDENTIALITY 4
+#define POLICY_QOS_INBOUND_INTEGREITY 8
+#define POLICY_QOS_INBOUND_CONFIDENTIALITY 16
+#define POLICY_QOS_ALLOW_LOCAL_ROOT_CERT_STORE 32
+#define POLICY_QOS_RAS_SERVER_ALLOWED 64
+#define POLICY_QOS_DHCP_SERVER_ALLOWD 128
+#define POLICY_KERBEROS_FORWARDABLE 1
+#define POLICY_KERBEROS_PROXYABLE 2
+#define POLICY_KERBEROS_RENEWABLE 4
+#define POLICY_KERBEROS_POSTDATEABLE 8
+#define SAM_PASSWORD_CHANGE_NOTIFY_ROUTINE "PasswordChangeNotify"
+#define SAM_INIT_NOTIFICATION_ROUTINE "InitializeChangeNotify"
+#define SAM_PASSWORD_FILTER_ROUTINE "PasswordFilter"
+#define SE_INTERACTIVE_LOGON_NAME TEXT("SeInteractiveLogonRight")
+#define SE_NETWORK_LOGON_NAME TEXT("SeNetworkLogonRight")
+#define SE_BATCH_LOGON_NAME TEXT("SeBatchLogonRight")
+#define SE_SERVICE_LOGON_NAME TEXT("SeServiceLogonRight")
+#define TRUST_ATTRIBUTE_NON_TRANSITIVE 1
+#define TRUST_ATTRIBUTE_UPLEVEL_ONLY 2
+#define TRUST_ATTRIBUTE_TREE_PARENT 4194304
+#define TRUST_ATTRIBUTES_VALID -16580609
+#define TRUST_AUTH_TYPE_NONE 0
+#define TRUST_AUTH_TYPE_NT4OWF 1
+#define TRUST_AUTH_TYPE_CLEAR 2
+#define TRUST_DIRECTION_DISABLED 0
+#define TRUST_DIRECTION_INBOUND 1
+#define TRUST_DIRECTION_OUTBOUND 2
+#define TRUST_DIRECTION_BIDIRECTIONAL 3
+#define TRUST_TYPE_DOWNLEVEL 1
+#define TRUST_TYPE_UPLEVEL 2
+#define TRUST_TYPE_MIT 3
+#define TRUST_TYPE_DCE 4
+#if !defined(_NTDEF_H) && !defined(_SUBAUTH_H)
+typedef LONG NTSTATUS, *PNTSTATUS;
+typedef struct _UNICODE_STRING {
+ USHORT Length;
+ USHORT MaximumLength;
+ PWSTR Buffer;
+} UNICODE_STRING, *PUNICODE_STRING;
+typedef struct _STRING {
+ USHORT Length;
+ USHORT MaximumLength;
+ PCHAR Buffer;
+} STRING, *PSTRING;
+#endif
+typedef UNICODE_STRING LSA_UNICODE_STRING, *PLSAUNICODE_STRING;
+typedef STRING LSA_STRING, *PLSA_STRING;
+typedef enum _MSV1_0_LOGON_SUBMIT_TYPE {
+ MsV1_0InteractiveLogon = 2,
+ MsV1_0Lm20Logon,
+ MsV1_0NetworkLogon,
+ MsV1_0SubAuthLogon,
+ MsV1_0WorkstationUnlockLogon = 7
+} MSV1_0_LOGON_SUBMIT_TYPE, *PMSV1_0_LOGON_SUBMIT_TYPE;
+typedef enum _MSV1_0_PROFILE_BUFFER_TYPE {
+ MsV1_0InteractiveProfile = 2,
+ MsV1_0Lm20LogonProfile,
+ MsV1_0SmartCardProfile
+} MSV1_0_PROFILE_BUFFER_TYPE, *PMSV1_0_PROFILE_BUFFER_TYPE;
+typedef enum {
+ MsvAvEOL,
+ MsvAvNbComputerName,
+ MsvAvNbDomainName,
+ MsvAvDnsComputerName,
+ MsvAvDnsDomainName
+} MSV1_0_AVID;
+typedef enum _MSV1_0_PROTOCOL_MESSAGE_TYPE {
+ MsV1_0Lm20ChallengeRequest = 0,
+ MsV1_0Lm20GetChallengeResponse,
+ MsV1_0EnumerateUsers,
+ MsV1_0GetUserInfo,
+ MsV1_0ReLogonUsers,
+ MsV1_0ChangePassword,
+ MsV1_0ChangeCachedPassword,
+ MsV1_0GenericPassthrough,
+ MsV1_0CacheLogon,
+ MsV1_0SubAuth,
+ MsV1_0DeriveCredential,
+ MsV1_0CacheLookup
+} MSV1_0_PROTOCOL_MESSAGE_TYPE, *PMSV1_0_PROTOCOL_MESSAGE_TYPE;
+typedef enum _POLICY_LSA_SERVER_ROLE {
+ PolicyServerRoleBackup = 2,
+ PolicyServerRolePrimary
+} POLICY_LSA_SERVER_ROLE, *PPOLICY_LSA_SERVER_ROLE;
+typedef enum _POLICY_SERVER_ENABLE_STATE {
+ PolicyServerEnabled = 2,
+ PolicyServerDisabled
+} POLICY_SERVER_ENABLE_STATE, *PPOLICY_SERVER_ENABLE_STATE;
+typedef enum _POLICY_INFORMATION_CLASS {
+ PolicyAuditLogInformation = 1,
+ PolicyAuditEventsInformation,
+ PolicyPrimaryDomainInformation,
+ PolicyPdAccountInformation,
+ PolicyAccountDomainInformation,
+ PolicyLsaServerRoleInformation,
+ PolicyReplicaSourceInformation,
+ PolicyDefaultQuotaInformation,
+ PolicyModificationInformation,
+ PolicyAuditFullSetInformation,
+ PolicyAuditFullQueryInformation,
+ PolicyDnsDomainInformation,
+ PolicyEfsInformation
+} POLICY_INFORMATION_CLASS, *PPOLICY_INFORMATION_CLASS;
+typedef enum _POLICY_AUDIT_EVENT_TYPE {
+ AuditCategorySystem,
+ AuditCategoryLogon,
+ AuditCategoryObjectAccess,
+ AuditCategoryPrivilegeUse,
+ AuditCategoryDetailedTracking,
+ AuditCategoryPolicyChange,
+ AuditCategoryAccountManagement,
+ AuditCategoryDirectoryServiceAccess,
+ AuditCategoryAccountLogon
+} POLICY_AUDIT_EVENT_TYPE, *PPOLICY_AUDIT_EVENT_TYPE;
+typedef enum _POLICY_LOCAL_INFORMATION_CLASS {
+ PolicyLocalAuditEventsInformation = 1,
+ PolicyLocalPdAccountInformation,
+ PolicyLocalAccountDomainInformation,
+ PolicyLocalLsaServerRoleInformation,
+ PolicyLocalReplicaSourceInformation,
+ PolicyLocalModificationInformation,
+ PolicyLocalAuditFullSetInformation,
+ PolicyLocalAuditFullQueryInformation,
+ PolicyLocalDnsDomainInformation,
+ PolicyLocalIPSecReferenceInformation,
+ PolicyLocalMachinePasswordInformation,
+ PolicyLocalQualityOfServiceInformation,
+ PolicyLocalPolicyLocationInformation
+} POLICY_LOCAL_INFORMATION_CLASS, *PPOLICY_LOCAL_INFORMATION_CLASS;
+typedef enum _POLICY_DOMAIN_INFORMATION_CLASS {
+ PolicyDomainIPSecReferenceInformation = 1,
+ PolicyDomainQualityOfServiceInformation,
+ PolicyDomainEfsInformation,
+ PolicyDomainPublicKeyInformation,
+ PolicyDomainPasswordPolicyInformation,
+ PolicyDomainLockoutInformation,
+ PolicyDomainKerberosTicketInformation
+} POLICY_DOMAIN_INFORMATION_CLASS, *PPOLICY_DOMAIN_INFORMATION_CLASS;
+typedef enum _SECURITY_LOGON_TYPE {
+ Interactive = 2,
+ Network,
+ Batch,
+ Service,
+ Proxy,
+ Unlock
+} SECURITY_LOGON_TYPE, *PSECURITY_LOGON_TYPE;
+typedef enum _TRUSTED_INFORMATION_CLASS {
+ TrustedDomainNameInformation = 1,
+ TrustedControllersInformation,
+ TrustedPosixOffsetInformation,
+ TrustedPasswordInformation,
+ TrustedDomainInformationBasic,
+ TrustedDomainInformationEx,
+ TrustedDomainAuthInformation,
+ TrustedDomainFullInformation
+} TRUSTED_INFORMATION_CLASS, *PTRUSTED_INFORMATION_CLASS;
+typedef struct _DOMAIN_PASSWORD_INFORMATION {
+ USHORT MinPasswordLength;
+ USHORT PasswordHistoryLength;
+ ULONG PasswordProperties;
+ LARGE_INTEGER MaxPasswordAge;
+ LARGE_INTEGER MinPasswordAge;
+} DOMAIN_PASSWORD_INFORMATION, *PDOMAIN_PASSWORD_INFORMATION;
+typedef ULONG LSA_ENUMERATION_HANDLE, *PLSA_ENUMERATION_HANDLE;
+typedef struct _LSA_ENUMERATION_INFORMATION {
+ PSID Sid;
+} LSA_ENUMERATION_INFORMATION, *PLSA_ENUMERATION_INFORMATION;
+typedef ULONG LSA_OPERATIONAL_MODE, *PLSA_OPERATIONAL_MODE;
+typedef struct _LSA_OBJECT_ATTRIBUTES {
+ ULONG Length;
+ HANDLE RootDirectory;
+ PLSA_UNICODE_STRING ObjectName;
+ ULONG Attributes;
+ PVOID SecurityDescriptor;
+ PVOID SecurityQualityOfService;
+} OBJECT_ATTRIBUTES, *POBJECT_ATTRIBUTES;
+typedef OBJECT_ATTRIBUTES LSA_OBJECT_ATTRIBUTES, *PLSA_OBJECT_ATTRIBUTES;
+typedef struct _LSA_TRUST_INFORMATION {
+ LSA_UNICODE_STRING Name;
+ PSID Sid;
+} LSA_TRUST_INFORMATION, *PLSA_TRUST_INFORMATION;
+typedef struct _LSA_REFERENCED_DOMAIN_LIST {
+ ULONG Entries;
+ PLSA_TRUST_INFORMATION Domains;
+} LSA_REFERENCED_DOMAIN_LIST, *PLSA_REFERENCED_DOMAIN_LIST;
+typedef struct _LSA_TRANSLATED_SID {
+ SID_NAME_USE Use;
+ ULONG RelativeId;
+ LONG DomainIndex;
+} LSA_TRANSLATED_SID, *PLSA_TRANSLATED_SID;
+typedef struct _LSA_TRANSLATED_NAME {
+ SID_NAME_USE Use;
+ LSA_UNICODE_STRING Name;
+ LONG DomainIndex;
+} LSA_TRANSLATED_NAME, *PLSA_TRANSLATED_NAME;
+typedef struct _MSV1_0_INTERACTIVE_LOGON {
+ MSV1_0_LOGON_SUBMIT_TYPE MessageType;
+ UNICODE_STRING LogonDomainName;
+ UNICODE_STRING UserName;
+ UNICODE_STRING Password;
+} MSV1_0_INTERACTIVE_LOGON, *PMSV1_0_INTERACTIVE_LOGON;
+typedef struct _MSV1_0_INTERACTIVE_PROFILE {
+ MSV1_0_PROFILE_BUFFER_TYPE MessageType;
+ USHORT LogonCount;
+ USHORT BadPasswordCount;
+ LARGE_INTEGER LogonTime;
+ LARGE_INTEGER LogoffTime;
+ LARGE_INTEGER KickOffTime;
+ LARGE_INTEGER PasswordLastSet;
+ LARGE_INTEGER PasswordCanChange;
+ LARGE_INTEGER PasswordMustChange;
+ UNICODE_STRING LogonScript;
+ UNICODE_STRING HomeDirectory;
+ UNICODE_STRING FullName;
+ UNICODE_STRING ProfilePath;
+ UNICODE_STRING HomeDirectoryDrive;
+ UNICODE_STRING LogonServer;
+ ULONG UserFlags;
+} MSV1_0_INTERACTIVE_PROFILE, *PMSV1_0_INTERACTIVE_PROFILE;
+typedef struct _MSV1_0_LM20_LOGON {
+ MSV1_0_LOGON_SUBMIT_TYPE MessageType;
+ UNICODE_STRING LogonDomainName;
+ UNICODE_STRING UserName;
+ UNICODE_STRING Workstation;
+ UCHAR ChallengeToClient[MSV1_0_CHALLENGE_LENGTH];
+ STRING CaseSensitiveChallengeResponse;
+ STRING CaseInsensitiveChallengeResponse;
+ ULONG ParameterControl;
+} MSV1_0_LM20_LOGON, * PMSV1_0_LM20_LOGON;
+typedef struct _MSV1_0_SUBAUTH_LOGON{ /* W2K only */
+ MSV1_0_LOGON_SUBMIT_TYPE MessageType;
+ UNICODE_STRING LogonDomainName;
+ UNICODE_STRING UserName;
+ UNICODE_STRING Workstation;
+ UCHAR ChallengeToClient[MSV1_0_CHALLENGE_LENGTH];
+ STRING AuthenticationInfo1;
+ STRING AuthenticationInfo2;
+ ULONG ParameterControl;
+ ULONG SubAuthPackageId;
+} MSV1_0_SUBAUTH_LOGON, * PMSV1_0_SUBAUTH_LOGON;
+typedef struct _MSV1_0_LM20_LOGON_PROFILE {
+ MSV1_0_PROFILE_BUFFER_TYPE MessageType;
+ LARGE_INTEGER KickOffTime;
+ LARGE_INTEGER LogoffTime;
+ ULONG UserFlags;
+ UCHAR UserSessionKey[MSV1_0_USER_SESSION_KEY_LENGTH];
+ UNICODE_STRING LogonDomainName;
+ UCHAR LanmanSessionKey[MSV1_0_LANMAN_SESSION_KEY_LENGTH];
+ UNICODE_STRING LogonServer;
+ UNICODE_STRING UserParameters;
+} MSV1_0_LM20_LOGON_PROFILE, * PMSV1_0_LM20_LOGON_PROFILE;
+typedef struct _MSV1_0_SUPPLEMENTAL_CREDENTIAL {
+ ULONG Version;
+ ULONG Flags;
+ UCHAR LmPassword[MSV1_0_OWF_PASSWORD_LENGTH];
+ UCHAR NtPassword[MSV1_0_OWF_PASSWORD_LENGTH];
+} MSV1_0_SUPPLEMENTAL_CREDENTIAL, *PMSV1_0_SUPPLEMENTAL_CREDENTIAL;
+typedef struct _MSV1_0_NTLM3_RESPONSE {
+ UCHAR Response[MSV1_0_NTLM3_RESPONSE_LENGTH];
+ UCHAR RespType;
+ UCHAR HiRespType;
+ USHORT Flags;
+ ULONG MsgWord;
+ ULONGLONG TimeStamp;
+ UCHAR ChallengeFromClient[MSV1_0_CHALLENGE_LENGTH];
+ ULONG AvPairsOff;
+ UCHAR Buffer[1];
+} MSV1_0_NTLM3_RESPONSE, *PMSV1_0_NTLM3_RESPONSE;
+typedef struct _MSV1_0_AV_PAIR {
+ USHORT AvId;
+ USHORT AvLen;
+} MSV1_0_AV_PAIR, *PMSV1_0_AV_PAIR;
+typedef struct _MSV1_0_CHANGEPASSWORD_REQUEST {
+ MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
+ UNICODE_STRING DomainName;
+ UNICODE_STRING AccountName;
+ UNICODE_STRING OldPassword;
+ UNICODE_STRING NewPassword;
+ BOOLEAN Impersonating;
+} MSV1_0_CHANGEPASSWORD_REQUEST, *PMSV1_0_CHANGEPASSWORD_REQUEST;
+typedef struct _MSV1_0_CHANGEPASSWORD_RESPONSE {
+ MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
+ BOOLEAN PasswordInfoValid;
+ DOMAIN_PASSWORD_INFORMATION DomainPasswordInfo;
+} MSV1_0_CHANGEPASSWORD_RESPONSE, *PMSV1_0_CHANGEPASSWORD_RESPONSE;
+typedef struct _MSV1_0_SUBAUTH_REQUEST{
+ MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
+ ULONG SubAuthPackageId;
+ ULONG SubAuthInfoLength;
+ PUCHAR SubAuthSubmitBuffer;
+} MSV1_0_SUBAUTH_REQUEST, *PMSV1_0_SUBAUTH_REQUEST;
+typedef struct _MSV1_0_SUBAUTH_RESPONSE{
+ MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
+ ULONG SubAuthInfoLength;
+ PUCHAR SubAuthReturnBuffer;
+} MSV1_0_SUBAUTH_RESPONSE, *PMSV1_0_SUBAUTH_RESPONSE;
+#define MSV1_0_DERIVECRED_TYPE_SHA1 0
+typedef struct _MSV1_0_DERIVECRED_REQUEST {
+ MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
+ LUID LogonId;
+ ULONG DeriveCredType;
+ ULONG DeriveCredInfoLength;
+ UCHAR DeriveCredSubmitBuffer[1];
+} MSV1_0_DERIVECRED_REQUEST, *PMSV1_0_DERIVECRED_REQUEST;
+typedef struct _MSV1_0_DERIVECRED_RESPONSE {
+ MSV1_0_PROTOCOL_MESSAGE_TYPE MessageType;
+ ULONG DeriveCredInfoLength;
+ UCHAR DeriveCredReturnBuffer[1];
+} MSV1_0_DERIVECRED_RESPONSE, *PMSV1_0_DERIVECRED_RESPONSE;
+typedef ULONG POLICY_AUDIT_EVENT_OPTIONS, *PPOLICY_AUDIT_EVENT_OPTIONS;
+typedef struct _POLICY_PRIVILEGE_DEFINITION {
+ LSA_UNICODE_STRING Name;
+ LUID LocalValue;
+} POLICY_PRIVILEGE_DEFINITION, *PPOLICY_PRIVILEGE_DEFINITION;
+typedef struct _POLICY_AUDIT_LOG_INFO {
+ ULONG AuditLogPercentFull;
+ ULONG MaximumLogSize;
+ LARGE_INTEGER AuditRetentionPeriod;
+ BOOLEAN AuditLogFullShutdownInProgress;
+ LARGE_INTEGER TimeToShutdown;
+ ULONG NextAuditRecordId;
+} POLICY_AUDIT_LOG_INFO, *PPOLICY_AUDIT_LOG_INFO;
+typedef struct _POLICY_AUDIT_EVENTS_INFO {
+ BOOLEAN AuditingMode;
+ PPOLICY_AUDIT_EVENT_OPTIONS EventAuditingOptions;
+ ULONG MaximumAuditEventCount;
+} POLICY_AUDIT_EVENTS_INFO, *PPOLICY_AUDIT_EVENTS_INFO;
+typedef struct _POLICY_ACCOUNT_DOMAIN_INFO {
+ LSA_UNICODE_STRING DomainName;
+ PSID DomainSid;
+} POLICY_ACCOUNT_DOMAIN_INFO, *PPOLICY_ACCOUNT_DOMAIN_INFO;
+typedef struct _POLICY_PRIMARY_DOMAIN_INFO {
+ LSA_UNICODE_STRING Name;
+ PSID Sid;
+} POLICY_PRIMARY_DOMAIN_INFO, *PPOLICY_PRIMARY_DOMAIN_INFO;
+typedef struct _POLICY_DNS_DOMAIN_INFO {
+ LSA_UNICODE_STRING Name;
+ LSA_UNICODE_STRING DnsDomainName;
+ LSA_UNICODE_STRING DnsTreeName;
+ GUID DomainGuid;
+ PSID Sid;
+} POLICY_DNS_DOMAIN_INFO, *PPOLICY_DNS_DOMAIN_INFO;
+typedef struct _POLICY_PD_ACCOUNT_INFO {
+ LSA_UNICODE_STRING Name;
+} POLICY_PD_ACCOUNT_INFO, *PPOLICY_PD_ACCOUNT_INFO;
+typedef struct _POLICY_LSA_SERVER_ROLE_INFO {
+ POLICY_LSA_SERVER_ROLE LsaServerRole;
+} POLICY_LSA_SERVER_ROLE_INFO, *PPOLICY_LSA_SERVER_ROLE_INFO;
+typedef struct _POLICY_REPLICA_SOURCE_INFO {
+ LSA_UNICODE_STRING ReplicaSource;
+ LSA_UNICODE_STRING ReplicaAccountName;
+} POLICY_REPLICA_SOURCE_INFO, *PPOLICY_REPLICA_SOURCE_INFO;
+typedef struct _POLICY_DEFAULT_QUOTA_INFO {
+ QUOTA_LIMITS QuotaLimits;
+} POLICY_DEFAULT_QUOTA_INFO, *PPOLICY_DEFAULT_QUOTA_INFO;
+typedef struct _POLICY_MODIFICATION_INFO {
+ LARGE_INTEGER ModifiedId;
+ LARGE_INTEGER DatabaseCreationTime;
+} POLICY_MODIFICATION_INFO, *PPOLICY_MODIFICATION_INFO;
+typedef struct _POLICY_AUDIT_FULL_SET_INFO {
+ BOOLEAN ShutDownOnFull;
+} POLICY_AUDIT_FULL_SET_INFO, *PPOLICY_AUDIT_FULL_SET_INFO;
+typedef struct _POLICY_AUDIT_FULL_QUERY_INFO {
+ BOOLEAN ShutDownOnFull;
+ BOOLEAN LogIsFull;
+} POLICY_AUDIT_FULL_QUERY_INFO, *PPOLICY_AUDIT_FULL_QUERY_INFO;
+typedef struct _POLICY_EFS_INFO {
+ ULONG InfoLength;
+ PUCHAR EfsBlob;
+} POLICY_EFS_INFO, *PPOLICY_EFS_INFO;
+typedef struct _POLICY_LOCAL_IPSEC_REFERENCE_INFO {
+ LSA_UNICODE_STRING ObjectPath;
+} POLICY_LOCAL_IPSEC_REFERENCE_INFO, *PPOLICY_LOCAL_IPSEC_REFERENCE_INFO;
+typedef struct _POLICY_LOCAL_MACHINE_PASSWORD_INFO {
+ LARGE_INTEGER PasswordChangeInterval;
+} POLICY_LOCAL_MACHINE_PASSWORD_INFO, *PPOLICY_LOCAL_MACHINE_PASSWORD_INFO;
+typedef struct _POLICY_LOCAL_POLICY_LOCATION_INFO {
+ ULONG PolicyLocation;
+} POLICY_LOCAL_POLICY_LOCATION_INFO, *PPOLICY_LOCAL_POLICY_LOCATION_INFO;
+typedef struct _POLICY_LOCAL_QUALITY_OF_SERVICE_INFO {
+ ULONG QualityOfService;
+} POLICY_LOCAL_QUALITY_OF_SERVICE_INFO, *PPOLICY_LOCAL_QUALITY_OF_SERVICE_INFO;
+typedef struct _POLICY_LOCAL_QUALITY_OF_SERVICE_INFO POLICY_DOMAIN_QUALITY_OF_SERVICE_INFO;
+typedef struct _POLICY_LOCAL_QUALITY_OF_SERVICE_INFO *PPOLICY_DOMAIN_QUALITY_OF_SERVICE_INFO;
+typedef struct _POLICY_DOMAIN_PUBLIC_KEY_INFO {
+ ULONG InfoLength;
+ PUCHAR PublicKeyInfo;
+} POLICY_DOMAIN_PUBLIC_KEY_INFO, *PPOLICY_DOMAIN_PUBLIC_KEY_INFO;
+typedef struct _POLICY_DOMAIN_LOCKOUT_INFO {
+ LARGE_INTEGER LockoutDuration;
+ LARGE_INTEGER LockoutObservationWindow;
+ USHORT LockoutThreshold;
+} POLICY_DOMAIN_LOCKOUT_INFO, *PPOLICY_DOMAIN_LOCKOUT_INFO;
+typedef struct _POLICY_DOMAIN_PASSWORD_INFO {
+ USHORT MinPasswordLength;
+ USHORT PasswordHistoryLength;
+ ULONG PasswordProperties;
+ LARGE_INTEGER MaxPasswordAge;
+ LARGE_INTEGER MinPasswordAge;
+} POLICY_DOMAIN_PASSWORD_INFO, *PPOLICY_DOMAIN_PASSWORD_INFO;
+typedef struct _POLICY_DOMAIN_KERBEROS_TICKET_INFO {
+ ULONG AuthenticationOptions;
+ LARGE_INTEGER MinTicketAge;
+ LARGE_INTEGER MaxTicketAge;
+ LARGE_INTEGER MaxRenewAge;
+ LARGE_INTEGER ProxyLifetime;
+ LARGE_INTEGER ForceLogoff;
+} POLICY_DOMAIN_KERBEROS_TICKET_INFO, *PPOLICY_DOMAIN_KERBEROS_TICKET_INFO;
+typedef PVOID LSA_HANDLE, *PLSA_HANDLE;
+typedef struct _TRUSTED_DOMAIN_NAME_INFO {
+ LSA_UNICODE_STRING Name;
+} TRUSTED_DOMAIN_NAME_INFO, *PTRUSTED_DOMAIN_NAME_INFO;
+typedef struct _TRUSTED_CONTROLLERS_INFO {
+ ULONG Entries;
+ PLSA_UNICODE_STRING Names;
+} TRUSTED_CONTROLLERS_INFO, *PTRUSTED_CONTROLLERS_INFO;
+typedef struct _TRUSTED_POSIX_OFFSET_INFO {
+ ULONG Offset;
+} TRUSTED_POSIX_OFFSET_INFO, *PTRUSTED_POSIX_OFFSET_INFO;
+typedef struct _TRUSTED_PASSWORD_INFO {
+ LSA_UNICODE_STRING Password;
+ LSA_UNICODE_STRING OldPassword;
+} TRUSTED_PASSWORD_INFO, *PTRUSTED_PASSWORD_INFO;
+typedef LSA_TRUST_INFORMATION TRUSTED_DOMAIN_INFORMATION_BASIC;
+typedef PLSA_TRUST_INFORMATION *PTRUSTED_DOMAIN_INFORMATION_BASIC;
+typedef struct _TRUSTED_DOMAIN_INFORMATION_EX {
+ LSA_UNICODE_STRING Name;
+ LSA_UNICODE_STRING FlatName;
+ PSID Sid;
+ ULONG TrustDirection;
+ ULONG TrustType;
+ ULONG TrustAttributes;
+} TRUSTED_DOMAIN_INFORMATION_EX, *PTRUSTED_DOMAIN_INFORMATION_EX;
+typedef struct _LSA_AUTH_INFORMATION {
+ LARGE_INTEGER LastUpdateTime;
+ ULONG AuthType;
+ ULONG AuthInfoLength;
+ PUCHAR AuthInfo;
+} LSA_AUTH_INFORMATION, *PLSA_AUTH_INFORMATION;
+typedef struct _TRUSTED_DOMAIN_AUTH_INFORMATION {
+ ULONG IncomingAuthInfos;
+ PLSA_AUTH_INFORMATION IncomingAuthenticationInformation;
+ PLSA_AUTH_INFORMATION IncomingPreviousAuthenticationInformation;
+ ULONG OutgoingAuthInfos;
+ PLSA_AUTH_INFORMATION OutgoingAuthenticationInformation;
+ PLSA_AUTH_INFORMATION OutgoingPreviousAuthenticationInformation;
+} TRUSTED_DOMAIN_AUTH_INFORMATION, *PTRUSTED_DOMAIN_AUTH_INFORMATION;
+typedef struct _TRUSTED_DOMAIN_FULL_INFORMATION {
+ TRUSTED_DOMAIN_INFORMATION_EX Information;
+ TRUSTED_POSIX_OFFSET_INFO PosixOffset;
+ TRUSTED_DOMAIN_AUTH_INFORMATION AuthInformation;
+} TRUSTED_DOMAIN_FULL_INFORMATION, *PTRUSTED_DOMAIN_FULL_INFORMATION;
+NTSTATUS NTAPI LsaAddAccountRights(LSA_HANDLE,PSID,PLSA_UNICODE_STRING,ULONG);
+NTSTATUS NTAPI LsaCallAuthenticationPackage(HANDLE,ULONG,PVOID,ULONG,PVOID*,
+ PULONG,PNTSTATUS);
+NTSTATUS NTAPI LsaClose(LSA_HANDLE);
+NTSTATUS NTAPI LsaConnectUntrusted(PHANDLE);
+NTSTATUS NTAPI LsaCreateTrustedDomainEx(LSA_HANDLE,
+ PTRUSTED_DOMAIN_INFORMATION_EX,
+ PTRUSTED_DOMAIN_AUTH_INFORMATION,ACCESS_MASK,
+ PLSA_HANDLE);
+NTSTATUS NTAPI LsaDeleteTrustedDomain(LSA_HANDLE,PSID);
+NTSTATUS NTAPI LsaDeregisterLogonProcess(HANDLE);
+NTSTATUS NTAPI LsaEnumerateAccountRights(LSA_HANDLE,PSID,PLSA_UNICODE_STRING*,PULONG);
+NTSTATUS NTAPI LsaEnumerateAccountsWithUserRight(LSA_HANDLE,PLSA_UNICODE_STRING,
+ PVOID*,PULONG);
+NTSTATUS NTAPI LsaEnumerateTrustedDomains(LSA_HANDLE,PLSA_ENUMERATION_HANDLE,
+ PVOID*,ULONG,PULONG);
+NTSTATUS NTAPI LsaEnumerateTrustedDomainsEx(LSA_HANDLE,PLSA_ENUMERATION_HANDLE,
+ TRUSTED_INFORMATION_CLASS,PVOID*,ULONG,PULONG);
+NTSTATUS NTAPI LsaFreeMemory(PVOID);
+NTSTATUS NTAPI LsaFreeReturnBuffer(PVOID);
+NTSTATUS NTAPI LsaLogonUser(HANDLE,PLSA_STRING,SECURITY_LOGON_TYPE,ULONG,PVOID,
+ ULONG,PTOKEN_GROUPS,PTOKEN_SOURCE,PVOID*,PULONG,
+ PLUID,PHANDLE,PQUOTA_LIMITS,PNTSTATUS);
+NTSTATUS NTAPI LsaLookupAuthenticationPackage(HANDLE,PLSA_STRING,PULONG);
+NTSTATUS NTAPI LsaLookupNames(LSA_HANDLE,ULONG,PLSA_UNICODE_STRING,
+ PLSA_REFERENCED_DOMAIN_LIST*,PLSA_TRANSLATED_SID*);
+NTSTATUS NTAPI LsaLookupSids(LSA_HANDLE,ULONG,PSID*,
+ PLSA_REFERENCED_DOMAIN_LIST*,PLSA_TRANSLATED_NAME*);
+ULONG NTAPI LsaNtStatusToWinError(NTSTATUS);
+NTSTATUS NTAPI LsaOpenPolicy(PLSA_UNICODE_STRING,PLSA_OBJECT_ATTRIBUTES,
+ ACCESS_MASK,PLSA_HANDLE);
+NTSTATUS NTAPI LsaQueryDomainInformationPolicy(LSA_HANDLE,
+ POLICY_DOMAIN_INFORMATION_CLASS,PVOID*);
+NTSTATUS NTAPI LsaQueryInformationPolicy(LSA_HANDLE,POLICY_INFORMATION_CLASS,PVOID*);
+NTSTATUS NTAPI LsaQueryLocalInformationPolicy(LSA_HANDLE,
+ POLICY_LOCAL_INFORMATION_CLASS,PVOID*);
+NTSTATUS NTAPI LsaQueryTrustedDomainInfo(LSA_HANDLE,PSID,
+ TRUSTED_INFORMATION_CLASS,PVOID*);
+NTSTATUS NTAPI LsaQueryTrustedDomainInfoByName(LSA_HANDLE,PLSA_UNICODE_STRING,
+ TRUSTED_INFORMATION_CLASS,PVOID*);
+NTSTATUS NTAPI LsaRegisterLogonProcess(PLSA_STRING,PHANDLE,PLSA_OPERATIONAL_MODE);
+NTSTATUS NTAPI LsaRemoveAccountRights(LSA_HANDLE,PSID,BOOLEAN,
+ PLSA_UNICODE_STRING,ULONG);
+NTSTATUS NTAPI LsaRetrievePrivateData(LSA_HANDLE,PLSA_UNICODE_STRING,
+ PLSA_UNICODE_STRING*);
+NTSTATUS NTAPI LsaSetDomainInformationPolicy(LSA_HANDLE,
+ POLICY_DOMAIN_INFORMATION_CLASS,PVOID);
+NTSTATUS NTAPI LsaSetInformationPolicy(LSA_HANDLE,POLICY_INFORMATION_CLASS, PVOID);
+NTSTATUS NTAPI LsaSetLocalInformationPolicy(LSA_HANDLE,
+ POLICY_LOCAL_INFORMATION_CLASS,PVOID);
+NTSTATUS NTAPI LsaSetTrustedDomainInformation(LSA_HANDLE,PSID,
+ TRUSTED_INFORMATION_CLASS,PVOID);
+NTSTATUS NTAPI LsaSetTrustedDomainInfoByName(LSA_HANDLE,PLSA_UNICODE_STRING,
+ TRUSTED_INFORMATION_CLASS,PVOID);
+NTSTATUS NTAPI LsaStorePrivateData(LSA_HANDLE,PLSA_UNICODE_STRING,
+ PLSA_UNICODE_STRING);
+typedef NTSTATUS (*PSAM_PASSWORD_NOTIFICATION_ROUTINE)(PUNICODE_STRING,
+ ULONG,PUNICODE_STRING);
+typedef BOOLEAN (*PSAM_INIT_NOTIFICATION_ROUTINE)();
+typedef BOOLEAN (*PSAM_PASSWORD_FILTER_ROUTINE)(PUNICODE_STRING,PUNICODE_STRING,
+ PUNICODE_STRING,BOOLEAN);
+#ifdef __cplusplus
+}
+#endif
+#endif /* _NTSECAPI_H */
diff --git a/winsup/w32api/include/subauth.h b/winsup/w32api/include/subauth.h
new file mode 100644
index 000000000..67f25c319
--- /dev/null
+++ b/winsup/w32api/include/subauth.h
@@ -0,0 +1,207 @@
+#ifndef _SUBAUTH_H
+#define _SUBAUTH_H
+#ifdef __cplusplus
+extern "C" {
+#endif
+#ifndef NT_SUCCESS
+#define NT_SUCCESS(Status) ((Status) >= 0)
+#endif
+#define CYPHER_BLOCK_LENGTH 8
+#define USER_SESSION_KEY_LENGTH (CYPHER_BLOCK_LENGTH*2)
+#define CLEAR_BLOCK_LENGTH 8
+#define MSV1_0_PASSTHRU 1
+#define MSV1_0_GUEST_LOGON 2
+#define MSV1_0_VALIDATION_LOGOFF_TIME 1
+#define MSV1_0_VALIDATION_KICKOFF_TIME 2
+#define MSV1_0_VALIDATION_LOGON_SERVER 4
+#define MSV1_0_VALIDATION_LOGON_DOMAIN 8
+#define MSV1_0_VALIDATION_SESSION_KEY 16
+#define MSV1_0_VALIDATION_USER_FLAGS 32
+#define MSV1_0_VALIDATION_USER_ID 64
+#define MSV1_0_SUBAUTH_ACCOUNT_DISABLED 1
+#define MSV1_0_SUBAUTH_PASSWORD 2
+#define MSV1_0_SUBAUTH_WORKSTATIONS 4
+#define MSV1_0_SUBAUTH_LOGON_HOURS 8
+#define MSV1_0_SUBAUTH_ACCOUNT_EXPIRY 16
+#define MSV1_0_SUBAUTH_PASSWORD_EXPIRY 32
+#define MSV1_0_SUBAUTH_ACCOUNT_TYPE 64
+#define MSV1_0_SUBAUTH_LOCKOUT 128
+#define NEXT_FREE_ACCOUNT_CONTROL_BIT 131072
+#define SAM_DAYS_PER_WEEK 7
+#define SAM_HOURS_PER_WEEK 168
+#define SAM_MINUTES_PER_WEEK 10080
+#define STATUS_SUCCESS 0
+#define STATUS_INVALID_INFO_CLASS 0xC0000003L
+#define STATUS_NO_SUCH_USER 0xC0000064L
+#define STATUS_WRONG_PASSWORD 0xC000006AL
+#define STATUS_PASSWORD_RESTRICTION 0xC000006CL
+#define STATUS_LOGON_FAILURE 0xC000006DL
+#define STATUS_ACCOUNT_RESTRICTION 0xC000006EL
+#define STATUS_INVALID_LOGON_HOURS 0xC000006FL
+#define STATUS_INVALID_WORKSTATION 0xC0000070L
+#define STATUS_PASSWORD_EXPIRED 0xC0000071L
+#define STATUS_ACCOUNT_DISABLED 0xC0000072L
+#define STATUS_INSUFFICIENT_RESOURCES 0xC000009AL
+#define STATUS_ACCOUNT_EXPIRED 0xC0000193L
+#define STATUS_PASSWORD_MUST_CHANGE 0xC0000224L
+#define STATUS_ACCOUNT_LOCKED_OUT 0xC0000234L
+#define USER_ACCOUNT_DISABLED 1
+#define USER_HOME_DIRECTORY_REQUIRED 2
+#define USER_PASSWORD_NOT_REQUIRED 4
+#define USER_TEMP_DUPLICATE_ACCOUNT 8
+#define USER_NORMAL_ACCOUNT 16
+#define USER_MNS_LOGON_ACCOUNT 32
+#define USER_INTERDOMAIN_TRUST_ACCOUNT 64
+#define USER_WORKSTATION_TRUST_ACCOUNT 128
+#define USER_SERVER_TRUST_ACCOUNT 256
+#define USER_DONT_EXPIRE_PASSWORD 512
+#define USER_ACCOUNT_AUTO_LOCKED 1024
+#define USER_ENCRYPTED_TEXT_PASSWORD_ALLOWED 2048
+#define USER_SMARTCARD_REQUIRED 4096
+#define USER_TRUSTED_FOR_DELEGATION 8192
+#define USER_NOT_DELEGATED 16384
+#define USER_USE_DES_KEY_ONLY 32768
+#define USER_DONT_REQUIRE_PREAUTH 65536
+#define USER_MACHINE_ACCOUNT_MASK 448
+#define USER_ACCOUNT_TYPE_MASK 472
+#define USER_ALL_PARAMETERS 2097152
+#if !defined(_NTDEF_H) && !defined(_NTSECAPI_H)
+typedef LONG NTSTATUS, *PNTSTATUS;
+#endif
+typedef PVOID SAM_HANDLE, *PSAM_HANDLE;
+#ifndef _NTSECAPI_H
+typedef struct _UNICODE_STRING {
+ USHORT Length;
+ USHORT MaximumLength;
+ PWSTR Buffer;
+} UNICODE_STRING, *PUNICODE_STRING;
+typedef struct _STRING {
+ USHORT Length;
+ USHORT MaximumLength;
+ PCHAR Buffer;
+} STRING, *PSTRING;
+#endif
+typedef struct _OLD_LARGE_INTEGER {
+ ULONG LowPart;
+ LONG HighPart;
+} OLD_LARGE_INTEGER, *POLD_LARGE_INTEGER;
+typedef enum _NETLOGON_LOGON_INFO_CLASS {
+ NetlogonInteractiveInformation = 1,NetlogonNetworkInformation,
+ NetlogonServiceInformation,NetlogonGenericInformation,
+ NetlogonInteractiveTransitiveInformation,NetlogonNetworkTransitiveInformation,
+ NetlogonServiceTransitiveInformation
+} NETLOGON_LOGON_INFO_CLASS;
+typedef struct _CYPHER_BLOCK {
+ CHAR data[CYPHER_BLOCK_LENGTH];
+} CYPHER_BLOCK, *PCYPHER_BLOCK;
+typedef struct _CLEAR_BLOCK {
+ CHAR data[CLEAR_BLOCK_LENGTH];
+} CLEAR_BLOCK, *PCLEAR_BLOCK;
+typedef struct _LM_OWF_PASSWORD {
+ CYPHER_BLOCK data[2];
+} LM_OWF_PASSWORD, *PLM_OWF_PASSWORD;
+typedef struct _USER_SESSION_KEY {
+ CYPHER_BLOCK data[2];
+} USER_SESSION_KEY, *PUSER_SESSION_KEY;
+typedef CLEAR_BLOCK LM_CHALLENGE, *PLM_CHALLENGE;
+typedef LM_OWF_PASSWORD NT_OWF_PASSWORD, *PNT_OWF_PASSWORD;
+typedef LM_CHALLENGE NT_CHALLENGE, *PNT_CHALLENGE;
+typedef struct _LOGON_HOURS {
+ USHORT UnitsPerWeek;
+ PUCHAR LogonHours;
+} LOGON_HOURS, *PLOGON_HOURS;
+typedef struct _SR_SECURITY_DESCRIPTOR {
+ ULONG Length;
+ PUCHAR SecurityDescriptor;
+} SR_SECURITY_DESCRIPTOR, *PSR_SECURITY_DESCRIPTOR;
+#pragma pack(push,4)
+typedef struct _USER_ALL_INFORMATION {
+ LARGE_INTEGER LastLogon;
+ LARGE_INTEGER LastLogoff;
+ LARGE_INTEGER PasswordLastSet;
+ LARGE_INTEGER AccountExpires;
+ LARGE_INTEGER PasswordCanChange;
+ LARGE_INTEGER PasswordMustChange;
+ UNICODE_STRING UserName;
+ UNICODE_STRING FullName;
+ UNICODE_STRING HomeDirectory;
+ UNICODE_STRING HomeDirectoryDrive;
+ UNICODE_STRING ScriptPath;
+ UNICODE_STRING ProfilePath;
+ UNICODE_STRING AdminComment;
+ UNICODE_STRING WorkStations;
+ UNICODE_STRING UserComment;
+ UNICODE_STRING Parameters;
+ UNICODE_STRING LmPassword;
+ UNICODE_STRING NtPassword;
+ UNICODE_STRING PrivateData;
+ SR_SECURITY_DESCRIPTOR SecurityDescriptor;
+ ULONG UserId;
+ ULONG PrimaryGroupId;
+ ULONG UserAccountControl;
+ ULONG WhichFields;
+ LOGON_HOURS LogonHours;
+ USHORT BadPasswordCount;
+ USHORT LogonCount;
+ USHORT CountryCode;
+ USHORT CodePage;
+ BOOLEAN LmPasswordPresent;
+ BOOLEAN NtPasswordPresent;
+ BOOLEAN PasswordExpired;
+ BOOLEAN PrivateDataSensitive;
+} USER_ALL_INFORMATION, *PUSER_ALL_INFORMATION;
+#pragma pack(pop)
+typedef struct _MSV1_0_VALIDATION_INFO {
+ LARGE_INTEGER LogoffTime;
+ LARGE_INTEGER KickoffTime;
+ UNICODE_STRING LogonServer;
+ UNICODE_STRING LogonDomainName;
+ USER_SESSION_KEY SessionKey;
+ BOOLEAN Authoritative;
+ ULONG UserFlags;
+ ULONG WhichFields;
+ ULONG UserId;
+} MSV1_0_VALIDATION_INFO, *PMSV1_0_VALIDATION_INFO;
+typedef struct _NETLOGON_LOGON_IDENTITY_INFO {
+ UNICODE_STRING LogonDomainName;
+ ULONG ParameterControl;
+ OLD_LARGE_INTEGER LogonId;
+ UNICODE_STRING UserName;
+ UNICODE_STRING Workstation;
+} NETLOGON_LOGON_IDENTITY_INFO, *PNETLOGON_LOGON_IDENTITY_INFO;
+typedef struct _NETLOGON_INTERACTIVE_INFO {
+ NETLOGON_LOGON_IDENTITY_INFO Identity;
+ LM_OWF_PASSWORD LmOwfPassword;
+ NT_OWF_PASSWORD NtOwfPassword;
+} NETLOGON_INTERACTIVE_INFO, *PNETLOGON_INTERACTIVE_INFO;
+typedef struct _NETLOGON_GENERIC_INFO {
+ NETLOGON_LOGON_IDENTITY_INFO Identity;
+ UNICODE_STRING PackageName;
+ ULONG DataLength;
+ PUCHAR LogonData;
+} NETLOGON_GENERIC_INFO, *PNETLOGON_GENERIC_INFO;
+typedef struct _NETLOGON_NETWORK_INFO {
+ NETLOGON_LOGON_IDENTITY_INFO Identity;
+ LM_CHALLENGE LmChallenge;
+ STRING NtChallengeResponse;
+ STRING LmChallengeResponse;
+} NETLOGON_NETWORK_INFO, *PNETLOGON_NETWORK_INFO;
+typedef struct _NETLOGON_SERVICE_INFO {
+ NETLOGON_LOGON_IDENTITY_INFO Identity;
+ LM_OWF_PASSWORD LmOwfPassword;
+ NT_OWF_PASSWORD NtOwfPassword;
+} NETLOGON_SERVICE_INFO, *PNETLOGON_SERVICE_INFO;
+NTSTATUS NTAPI Msv1_0SubAuthenticationRoutine(NETLOGON_LOGON_INFO_CLASS,PVOID,
+ ULONG,PUSER_ALL_INFORMATION,PULONG,PULONG,
+ PBOOLEAN,PLARGE_INTEGER,PLARGE_INTEGER);
+NTSTATUS NTAPI Msv1_0SubAuthenticationFilter(NETLOGON_LOGON_INFO_CLASS,PVOID,
+ ULONG,PUSER_ALL_INFORMATION,PULONG,PULONG,
+ PBOOLEAN,PLARGE_INTEGER,PLARGE_INTEGER);
+NTSTATUS NTAPI Msv1_0SubAuthenticationRoutineGeneric(PVOID,ULONG,PULONG,PVOID*);
+NTSTATUS NTAPI Msv1_0SubAuthenticationRoutineEx(NETLOGON_LOGON_INFO_CLASS,PVOID,
+ ULONG,PUSER_ALL_INFORMATION,SAM_HANDLE,
+ PMSV1_0_VALIDATION_INFO,PULONG);
+#ifdef __cplusplus
+}
+#endif
+#endif /* _SUBAUTH_H */
diff --git a/winsup/w32api/lib/secur32.def b/winsup/w32api/lib/secur32.def
new file mode 100644
index 000000000..129cec8fe
--- /dev/null
+++ b/winsup/w32api/lib/secur32.def
@@ -0,0 +1,8 @@
+LIBRARY SECUR32.dll
+EXPORTS
+LsaCallAuthenticationPackage@28
+LsaDeregisterLogonProcess@4
+LsaFreeReturnBuffer@4
+LsaLogonUser@56
+LsaLookupAuthenticationPackage@12
+LsaRegisterLogonProcess@12