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