winapi_ui_automation/um/
lsalookup.rs1use shared::guiddef::GUID;
8use shared::minwindef::{ULONG, USHORT};
9use shared::ntdef::NTSTATUS;
10use um::winnt::{ACCESS_MASK, HANDLE, LONG, PCHAR, PSID, PVOID, PWSTR, SID_NAME_USE};
11STRUCT!{struct LSA_UNICODE_STRING {
12 Length: USHORT,
13 MaximumLength: USHORT,
14 Buffer: PWSTR,
15}}
16pub type PLSA_UNICODE_STRING = *mut LSA_UNICODE_STRING;
17STRUCT!{struct LSA_STRING {
18 Length: USHORT,
19 MaximumLength: USHORT,
20 Buffer: PCHAR,
21}}
22pub type PLSA_STRING = *mut LSA_STRING;
23STRUCT!{struct LSA_OBJECT_ATTRIBUTES {
24 Length: ULONG,
25 RootDirectory: HANDLE,
26 ObjectName: PLSA_UNICODE_STRING,
27 Attributes: ULONG,
28 SecurityDescriptor: PVOID,
29 SecurityQualityOfService: PVOID,
30}}
31pub type PLSA_OBJECT_ATTRIBUTES = *mut LSA_OBJECT_ATTRIBUTES;
32STRUCT!{struct LSA_TRUST_INFORMATION {
33 Name: LSA_UNICODE_STRING,
34 Sid: PSID,
35}}
36pub type PLSA_TRUST_INFORMATION = *mut LSA_TRUST_INFORMATION;
37STRUCT!{struct LSA_REFERENCED_DOMAIN_LIST {
38 Entries: ULONG,
39 Domains: PLSA_TRUST_INFORMATION,
40}}
41pub type PLSA_REFERENCED_DOMAIN_LIST = *mut LSA_REFERENCED_DOMAIN_LIST;
42STRUCT!{struct LSA_TRANSLATED_SID2 {
43 Use: SID_NAME_USE,
44 Sid: PSID,
45 DomainIndex: LONG,
46 Flags: ULONG,
47}}
48pub type PLSA_TRANSLATED_SID2 = *mut LSA_TRANSLATED_SID2;
49STRUCT!{struct LSA_TRANSLATED_NAME {
50 Use: SID_NAME_USE,
51 Name: LSA_UNICODE_STRING,
52 DomainIndex: LONG,
53}}
54pub type PLSA_TRANSLATED_NAME = *mut LSA_TRANSLATED_NAME;
55STRUCT!{struct POLICY_ACCOUNT_DOMAIN_INFO {
56 DomainName: LSA_UNICODE_STRING,
57 DomainSid: PSID,
58}}
59pub type PPOLICY_ACCOUNT_DOMAIN_INFO = *mut POLICY_ACCOUNT_DOMAIN_INFO;
60STRUCT!{struct POLICY_DNS_DOMAIN_INFO {
61 Name: LSA_UNICODE_STRING,
62 DnsDomainName: LSA_UNICODE_STRING,
63 DnsForestName: LSA_UNICODE_STRING,
64 DomainGuid: GUID,
65 Sid: PSID,
66}}
67pub type PPOLICY_DNS_DOMAIN_INFO = *mut POLICY_DNS_DOMAIN_INFO;
68pub const LOOKUP_VIEW_LOCAL_INFORMATION: ACCESS_MASK = 0x00000001;
69pub const LOOKUP_TRANSLATE_NAMES: ACCESS_MASK = 0x00000800;
70ENUM!{enum LSA_LOOKUP_DOMAIN_INFO_CLASS {
71 AccountDomainInformation = 5,
72 DnsDomainInformation = 12,
73}}
74pub type PLSA_LOOKUP_DOMAIN_INFO_CLASS = *mut LSA_LOOKUP_DOMAIN_INFO_CLASS;
75pub type LSA_LOOKUP_HANDLE = PVOID;
76pub type PLSA_LOOKUP_HANDLE = *mut PVOID;
77extern "C" {
78 pub fn LsaLookupOpenLocalPolicy(
79 ObjectAttributes: PLSA_OBJECT_ATTRIBUTES,
80 AccessMask: ACCESS_MASK,
81 PolicyHandle: PLSA_LOOKUP_HANDLE,
82 ) -> NTSTATUS;
83 pub fn LsaLookupClose(
84 ObjectHandle: LSA_LOOKUP_HANDLE,
85 ) -> NTSTATUS;
86 pub fn LsaLookupTranslateSids(
87 PolicyHandle: LSA_LOOKUP_HANDLE,
88 Count: ULONG,
89 Sids: *mut PSID,
90 ReferencedDomains: *mut PLSA_REFERENCED_DOMAIN_LIST,
91 Names: *mut PLSA_TRANSLATED_NAME,
92 ) -> NTSTATUS;
93 pub fn LsaLookupTranslateNames(
94 PolicyHandle: LSA_LOOKUP_HANDLE,
95 Flags: ULONG,
96 Count: ULONG,
97 Names: PLSA_UNICODE_STRING,
98 ReferencedDomains: *mut PLSA_REFERENCED_DOMAIN_LIST,
99 Sids: *mut PLSA_TRANSLATED_SID2,
100 ) -> NTSTATUS;
101 pub fn LsaLookupGetDomainInfo(
102 PolicyHandle: LSA_LOOKUP_HANDLE,
103 DomainInfoClass: LSA_LOOKUP_DOMAIN_INFO_CLASS,
104 DomainInfo: *mut PVOID,
105 ) -> NTSTATUS;
106 pub fn LsaLookupFreeMemory(
107 Buffer: PVOID,
108 ) -> NTSTATUS;
109}