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