1 // Licensed under the Apache License, Version 2.0
2 // <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
3 // <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
4 // All files in the project carrying such notice may not be copied, modified, or distributed
5 // except according to those terms.
6 use ctypes::{c_double, c_short, c_uchar, c_ushort};
7 use shared::minwindef::{BYTE, DWORD};
8 use shared::rpcndr::{boolean, byte, hyper};
9 use um::winnt::{LONG, LPWSTR, WCHAR};
10 pub type OLECHAR = WCHAR;
11 pub type LPOLESTR = *mut OLECHAR;
12 pub type LPCOLESTR = *const OLECHAR;
13 pub type UCHAR = c_uchar;
14 pub type SHORT = c_short;
15 pub type USHORT = c_ushort;
16 pub type ULONG = DWORD;
17 pub type DOUBLE = c_double;
18 STRUCT!{struct COAUTHIDENTITY {
19     User: *mut USHORT,
20     UserLength: ULONG,
21     Domain: *mut USHORT,
22     DomainLength: ULONG,
23     Password: *mut USHORT,
24     PasswordLength: ULONG,
25     Flags: ULONG,
26 }}
27 STRUCT!{struct COAUTHINFO {
28     dwAuthnSvc: DWORD,
29     dwAuthzSvc: DWORD,
30     pwszServerPrincName: LPWSTR,
31     dwAuthnLevel: DWORD,
32     dwImpersonationLevel: DWORD,
33     pAuthIdentityData: *mut COAUTHIDENTITY,
34     dwCapabilities: DWORD,
35 }}
36 pub type SCODE = LONG;
37 pub type PSCODE = *mut SCODE;
38 ENUM!{enum MEMCTX {
39     MEMCTX_TASK = 1,
40     MEMCTX_SHARED = 2,
41     MEMCTX_MACSYSTEM = 3,
42     MEMCTX_UNKNOWN = -1i32 as u32,
43     MEMCTX_SAME = -2i32 as u32,
44 }}
45 pub const ROTREGFLAGS_ALLOWANYCLIENT: DWORD = 0x1;
46 pub const APPIDREGFLAGS_ACTIVATE_IUSERVER_INDESKTOP: DWORD = 0x1;
47 pub const APPIDREGFLAGS_SECURE_SERVER_PROCESS_SD_AND_BIND: DWORD = 0x2;
48 pub const APPIDREGFLAGS_ISSUE_ACTIVATION_RPC_AT_IDENTIFY: DWORD = 0x4;
49 pub const APPIDREGFLAGS_IUSERVER_UNMODIFIED_LOGON_TOKEN: DWORD = 0x8;
50 pub const APPIDREGFLAGS_IUSERVER_SELF_SID_IN_LAUNCH_PERMISSION: DWORD = 0x10;
51 pub const APPIDREGFLAGS_IUSERVER_ACTIVATE_IN_CLIENT_SESSION_ONLY: DWORD = 0x20;
52 pub const APPIDREGFLAGS_RESERVED1: DWORD = 0x40;
53 pub const APPIDREGFLAGS_RESERVED2: DWORD = 0x80;
54 pub const APPIDREGFLAGS_RESERVED3: DWORD = 0x100;
55 pub const APPIDREGFLAGS_RESERVED4: DWORD = 0x200;
56 pub const APPIDREGFLAGS_RESERVED5: DWORD = 0x400;
57 pub const APPIDREGFLAGS_RESERVED6: DWORD = 0x800;
58 pub const DCOMSCM_ACTIVATION_USE_ALL_AUTHNSERVICES: DWORD = 0x1;
59 pub const DCOMSCM_ACTIVATION_DISALLOW_UNSECURE_CALL: DWORD = 0x2;
60 pub const DCOMSCM_RESOLVE_USE_ALL_AUTHNSERVICES: DWORD = 0x4;
61 pub const DCOMSCM_RESOLVE_DISALLOW_UNSECURE_CALL: DWORD = 0x8;
62 pub const DCOMSCM_PING_USE_MID_AUTHNSERVICE: DWORD = 0x10;
63 pub const DCOMSCM_PING_DISALLOW_UNSECURE_CALL: DWORD = 0x20;
64 ENUM!{enum CLSCTX {
65     CLSCTX_INPROC_SERVER = 0x1,
66     CLSCTX_INPROC_HANDLER = 0x2,
67     CLSCTX_LOCAL_SERVER = 0x4,
68     CLSCTX_INPROC_SERVER16 = 0x8,
69     CLSCTX_REMOTE_SERVER = 0x10,
70     CLSCTX_INPROC_HANDLER16 = 0x20,
71     CLSCTX_RESERVED1 = 0x40,
72     CLSCTX_RESERVED2 = 0x80,
73     CLSCTX_RESERVED3 = 0x100,
74     CLSCTX_RESERVED4 = 0x200,
75     CLSCTX_NO_CODE_DOWNLOAD = 0x400,
76     CLSCTX_RESERVED5 = 0x800,
77     CLSCTX_NO_CUSTOM_MARSHAL = 0x1000,
78     CLSCTX_ENABLE_CODE_DOWNLOAD = 0x2000,
79     CLSCTX_NO_FAILURE_LOG = 0x4000,
80     CLSCTX_DISABLE_AAA = 0x8000,
81     CLSCTX_ENABLE_AAA = 0x10000,
82     CLSCTX_FROM_DEFAULT_CONTEXT = 0x20000,
83     CLSCTX_ACTIVATE_32_BIT_SERVER = 0x40000,
84     CLSCTX_ACTIVATE_64_BIT_SERVER = 0x80000,
85     CLSCTX_ENABLE_CLOAKING = 0x100000,
86     CLSCTX_APPCONTAINER = 0x400000,
87     CLSCTX_ACTIVATE_AAA_AS_IU = 0x800000,
88     CLSCTX_PS_DLL = 0x80000000,
89 }}
90 pub const CLSCTX_VALID_MASK: CLSCTX = CLSCTX_INPROC_SERVER | CLSCTX_INPROC_HANDLER
91     | CLSCTX_LOCAL_SERVER | CLSCTX_INPROC_SERVER16 | CLSCTX_REMOTE_SERVER
92     | CLSCTX_NO_CODE_DOWNLOAD | CLSCTX_NO_CUSTOM_MARSHAL | CLSCTX_ENABLE_CODE_DOWNLOAD
93     | CLSCTX_NO_FAILURE_LOG | CLSCTX_DISABLE_AAA | CLSCTX_ENABLE_AAA | CLSCTX_FROM_DEFAULT_CONTEXT
94     | CLSCTX_ACTIVATE_32_BIT_SERVER | CLSCTX_ACTIVATE_64_BIT_SERVER | CLSCTX_ENABLE_CLOAKING
95     | CLSCTX_APPCONTAINER | CLSCTX_ACTIVATE_AAA_AS_IU | CLSCTX_PS_DLL;
96 ENUM!{enum MSHLFLAGS {
97     MSHLFLAGS_NORMAL = 0,
98     MSHLFLAGS_TABLESTRONG = 1,
99     MSHLFLAGS_TABLEWEAK = 2,
100     MSHLFLAGS_NOPING = 4,
101     MSHLFLAGS_RESERVED1 = 8,
102     MSHLFLAGS_RESERVED2 = 16,
103     MSHLFLAGS_RESERVED3 = 32,
104     MSHLFLAGS_RESERVED4 = 64,
105 }}
106 ENUM!{enum MSHCTX {
107     MSHCTX_LOCAL = 0,
108     MSHCTX_NOSHAREDMEM = 1,
109     MSHCTX_DIFFERENTMACHINE = 2,
110     MSHCTX_INPROC = 3,
111     MSHCTX_CROSSCTX = 4,
112 }}
113 STRUCT!{struct BYTE_BLOB {
114     clSize: ULONG,
115     abData: [byte; 1],
116 }}
117 pub type UP_BYTE_BLOB = *mut BYTE_BLOB;
118 STRUCT!{struct WORD_BLOB {
119     clSize: ULONG,
120     asData: [c_ushort; 1],
121 }}
122 pub type UP_WORD_BLOB = *mut WORD_BLOB;
123 STRUCT!{struct DWORD_BLOB {
124     clSize: ULONG,
125     alData: [ULONG; 1],
126 }}
127 pub type UP_DWORD_BLOB = *mut DWORD_BLOB;
128 STRUCT!{struct FLAGGED_BYTE_BLOB {
129     fFlags: ULONG,
130     clSize: ULONG,
131     abData: [byte; 1],
132 }}
133 pub type UP_FLAGGED_BYTE_BLOB = *mut FLAGGED_BYTE_BLOB;
134 STRUCT!{struct FLAGGED_WORD_BLOB {
135     fFlags: ULONG,
136     clSize: ULONG,
137     alData: [ULONG; 1],
138 }}
139 pub type UP_FLAGGED_WORD_BLOB = *mut FLAGGED_WORD_BLOB;
140 STRUCT!{struct BYTE_SIZEDARR {
141     clSize: ULONG,
142     pData: *mut byte,
143 }}
144 STRUCT!{struct WORD_SIZEDARR {
145     clSize: ULONG,
146     pData: *mut c_ushort,
147 }}
148 STRUCT!{struct DWORD_SIZEDARR {
149     clSize: ULONG,
150     pData: *mut ULONG,
151 }}
152 STRUCT!{struct HYPER_SIZEDARR {
153     clSize: ULONG,
154     pData: *mut hyper,
155 }}
156 pub type BOOLEAN = boolean;
157 STRUCT!{struct BLOB {
158     cbSize: ULONG,
159     pBlobData: *mut BYTE,
160 }}
161 pub type LPBLOB = *mut BLOB;
162