blob: bd52a322bdd853d32bf3cf01abc39a9f76aa89e0 [file] [log] [blame]
// Copyright © 2016-2017 winapi-rs developers
// 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;