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
{
23 Password
: *mut USHORT
,
24 PasswordLength
: ULONG
,
27 STRUCT
!{struct COAUTHINFO
{
30 pwszServerPrincName
: LPWSTR
,
32 dwImpersonationLevel
: DWORD
,
33 pAuthIdentityData
: *mut COAUTHIDENTITY
,
34 dwCapabilities
: DWORD
,
36 pub type SCODE
= LONG
;
37 pub type PSCODE
= *mut SCODE
;
42 MEMCTX_UNKNOWN
= -1i32 as u32,
43 MEMCTX_SAME
= -2i32 as u32,
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;
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,
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
{
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,
108 MSHCTX_NOSHAREDMEM
= 1,
109 MSHCTX_DIFFERENTMACHINE
= 2,
113 STRUCT
!{struct BYTE_BLOB
{
117 pub type UP_BYTE_BLOB
= *mut BYTE_BLOB
;
118 STRUCT
!{struct WORD_BLOB
{
120 asData
: [c_ushort
; 1],
122 pub type UP_WORD_BLOB
= *mut WORD_BLOB
;
123 STRUCT
!{struct DWORD_BLOB
{
127 pub type UP_DWORD_BLOB
= *mut DWORD_BLOB
;
128 STRUCT
!{struct FLAGGED_BYTE_BLOB
{
133 pub type UP_FLAGGED_BYTE_BLOB
= *mut FLAGGED_BYTE_BLOB
;
134 STRUCT
!{struct FLAGGED_WORD_BLOB
{
139 pub type UP_FLAGGED_WORD_BLOB
= *mut FLAGGED_WORD_BLOB
;
140 STRUCT
!{struct BYTE_SIZEDARR
{
144 STRUCT
!{struct WORD_SIZEDARR
{
146 pData
: *mut c_ushort
,
148 STRUCT
!{struct DWORD_SIZEDARR
{
152 STRUCT
!{struct HYPER_SIZEDARR
{
156 pub type BOOLEAN
= boolean
;
157 STRUCT
!{struct BLOB
{
159 pBlobData
: *mut BYTE
,
161 pub type LPBLOB
= *mut BLOB
;