turborex 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE +674 -0
- data/README.md +38 -0
- data/README.rdoc +19 -0
- data/examples/alpc_client.rb +15 -0
- data/examples/alpc_server.rb +14 -0
- data/examples/com_client.rb +19 -0
- data/examples/com_finder.rb +39 -0
- data/examples/create_instance.rb +15 -0
- data/examples/cstruct.rb +19 -0
- data/examples/find_com_client_calls.rb +16 -0
- data/examples/find_rpc_security_callback.rb +12 -0
- data/examples/rpc_finder.rb +117 -0
- data/examples/scan_exports.rb +5 -0
- data/examples/scan_imports.rb +5 -0
- data/examples/tinysdk.rb +17 -0
- data/lib/turborex.rb +21 -0
- data/lib/turborex/cstruct.rb +565 -0
- data/lib/turborex/cstruct/struct_helper.rb +7 -0
- data/lib/turborex/exception.rb +65 -0
- data/lib/turborex/fuzzer.rb +204 -0
- data/lib/turborex/fuzzer/containers.rb +115 -0
- data/lib/turborex/fuzzer/coverage.rb +67 -0
- data/lib/turborex/fuzzer/mutators.rb +25 -0
- data/lib/turborex/fuzzer/seed.rb +30 -0
- data/lib/turborex/monkey.rb +11 -0
- data/lib/turborex/msrpc.rb +14 -0
- data/lib/turborex/msrpc/decompiler.rb +244 -0
- data/lib/turborex/msrpc/midl.rb +747 -0
- data/lib/turborex/msrpc/ndrtype.rb +167 -0
- data/lib/turborex/msrpc/rpcbase.rb +777 -0
- data/lib/turborex/msrpc/rpcfinder.rb +1426 -0
- data/lib/turborex/msrpc/utils.rb +70 -0
- data/lib/turborex/pefile.rb +8 -0
- data/lib/turborex/pefile/pe.rb +61 -0
- data/lib/turborex/pefile/scanner.rb +82 -0
- data/lib/turborex/utils.rb +321 -0
- data/lib/turborex/windows.rb +402 -0
- data/lib/turborex/windows/alpc.rb +844 -0
- data/lib/turborex/windows/com.rb +266 -0
- data/lib/turborex/windows/com/client.rb +84 -0
- data/lib/turborex/windows/com/com_finder.rb +330 -0
- data/lib/turborex/windows/com/com_registry.rb +100 -0
- data/lib/turborex/windows/com/interface.rb +522 -0
- data/lib/turborex/windows/com/utils.rb +210 -0
- data/lib/turborex/windows/constants.rb +82 -0
- data/lib/turborex/windows/process.rb +56 -0
- data/lib/turborex/windows/security.rb +12 -0
- data/lib/turborex/windows/security/ace.rb +76 -0
- data/lib/turborex/windows/security/acl.rb +25 -0
- data/lib/turborex/windows/security/security_descriptor.rb +118 -0
- data/lib/turborex/windows/tinysdk.rb +89 -0
- data/lib/turborex/windows/utils.rb +138 -0
- data/resources/headers/alpc/ntdef.h +72 -0
- data/resources/headers/alpc/ntlpcapi.h +1014 -0
- data/resources/headers/rpc/common.h +162 -0
- data/resources/headers/rpc/guiddef.h +191 -0
- data/resources/headers/rpc/internal_ndrtypes.h +262 -0
- data/resources/headers/rpc/rpc.h +10 -0
- data/resources/headers/rpc/rpcdce.h +266 -0
- data/resources/headers/rpc/rpcdcep.h +187 -0
- data/resources/headers/rpc/rpcndr.h +39 -0
- data/resources/headers/rpc/v4_x64/rpcinternals.h +154 -0
- data/resources/headers/rpc/wintype.h +517 -0
- data/resources/headers/tinysdk/tinysdk.h +5 -0
- data/resources/headers/tinysdk/tinysdk/comdef.h +645 -0
- data/resources/headers/tinysdk/tinysdk/dbghelp.h +118 -0
- data/resources/headers/tinysdk/tinysdk/guiddef.h +194 -0
- data/resources/headers/tinysdk/tinysdk/memoryapi.h +12 -0
- data/resources/headers/tinysdk/tinysdk/poppack.h +12 -0
- data/resources/headers/tinysdk/tinysdk/pshpack4.h +13 -0
- data/resources/headers/tinysdk/tinysdk/winnt.h +1059 -0
- data/resources/headers/tinysdk/tinysdk/wintype.h +326 -0
- metadata +290 -0
@@ -0,0 +1,39 @@
|
|
1
|
+
#include <rpcdcep.h>
|
2
|
+
typedef struct _COMM_FAULT_OFFSETS
|
3
|
+
{
|
4
|
+
short CommOffset;
|
5
|
+
short FaultOffset;
|
6
|
+
} COMM_FAULT_OFFSETS;
|
7
|
+
|
8
|
+
typedef const unsigned char * PFORMAT_STRING;
|
9
|
+
|
10
|
+
typedef struct _MIDL_METHOD_PROPERTY
|
11
|
+
{
|
12
|
+
unsigned long Id;
|
13
|
+
ULONG_PTR Value;
|
14
|
+
} MIDL_METHOD_PROPERTY, *PMIDL_METHOD_PROPERTY;
|
15
|
+
|
16
|
+
typedef struct _MIDL_METHOD_PROPERTY_MAP
|
17
|
+
{
|
18
|
+
unsigned long Count;
|
19
|
+
const MIDL_METHOD_PROPERTY *Properties;
|
20
|
+
} MIDL_METHOD_PROPERTY_MAP, *PMIDL_METHOD_PROPERTY_MAP;
|
21
|
+
|
22
|
+
typedef struct _MIDL_INTERFACE_METHOD_PROPERTIES
|
23
|
+
{
|
24
|
+
unsigned short MethodCount;
|
25
|
+
const MIDL_METHOD_PROPERTY_MAP* const *MethodProperties;
|
26
|
+
} MIDL_INTERFACE_METHOD_PROPERTIES;
|
27
|
+
|
28
|
+
typedef struct _MIDL_SYNTAX_INFO
|
29
|
+
{
|
30
|
+
RPC_SYNTAX_IDENTIFIER TransferSyntax;
|
31
|
+
RPC_DISPATCH_TABLE * DispatchTable;
|
32
|
+
PFORMAT_STRING ProcString;
|
33
|
+
const unsigned short * FmtStringOffset;
|
34
|
+
PFORMAT_STRING TypeString;
|
35
|
+
const void * aUserMarshalQuadruple;
|
36
|
+
const MIDL_INTERFACE_METHOD_PROPERTIES *pMethodProperties;
|
37
|
+
ULONG_PTR pReserved2;
|
38
|
+
} MIDL_SYNTAX_INFO, *PMIDL_SYNTAX_INFO;
|
39
|
+
|
@@ -0,0 +1,154 @@
|
|
1
|
+
#include "../common.h"
|
2
|
+
// From RpcView
|
3
|
+
static UINT64 RPC_CORE_RUNTIME_VERSION[] = {
|
4
|
+
0x6000324D70000LL, //6.3.9431.0000
|
5
|
+
0x6000325804000LL, //6.3.9600.16384
|
6
|
+
0x6000325804340LL, //6.3.9600.17216
|
7
|
+
0x6000325804407LL, //6.3.9600.17415
|
8
|
+
0x60003258045FFLL, //6.3.9600.17919
|
9
|
+
0x6000325804774LL, //6.3.9600.18292
|
10
|
+
0x6000325804AE8LL, //6.3.9600.19176
|
11
|
+
0xA000028004000LL, //10.0.10240.16384
|
12
|
+
0xA00002800401CLL, //10.0.10240.16412
|
13
|
+
0xA0000280041C9LL, //10.0.10240.16841
|
14
|
+
0xA0000295A0000LL, //10.0.10586.0
|
15
|
+
0xA0000295A0132LL, //10.0.10586.306
|
16
|
+
0xA0000295A0498LL, //10.0.10586.1176
|
17
|
+
0xA0000380603E8LL, //10.0.14342.1000
|
18
|
+
0xA000038190000LL, //10.0.14361.0
|
19
|
+
0xA000038390000LL, //10.0.14393.0
|
20
|
+
0xA000038390052LL, //10.0.14393.82
|
21
|
+
0xA0000383906EALL, //10.0.14393.1770
|
22
|
+
0xA000038390908LL, //10.0.14393.2312
|
23
|
+
0xA000038390A69LL, //10.0.14393.2665
|
24
|
+
0xA000038390C2BLL, //10.0.14393.3115
|
25
|
+
0xA00003AD70000LL, //10.0.15063.0
|
26
|
+
0xA00003AD701BFLL, //10.0.15063.447
|
27
|
+
0xA00003AD702A2LL, //10.0.15063.674
|
28
|
+
0xA00003F6803E8LL, //10.0.16232.1000
|
29
|
+
0xA00003FAB000FLL, //10.0.16299.15
|
30
|
+
0xA00003FAB00C0LL, //10.0.16299.192
|
31
|
+
0xA00003FAB0135LL, //10.0.16299.309
|
32
|
+
0xA00003FAB0173LL, //10.0.16299.371
|
33
|
+
0xA00003FAB01ECLL, //10.0.16299.492
|
34
|
+
0xA00003FAB02D6LL, //10.0.16299.726
|
35
|
+
0xA00003FAB034ELL, //10.0.16299.846
|
36
|
+
0xA0000427903E8LL, //10.0.17017.1000
|
37
|
+
0xA0000428103E8LL, //10.0.17025.1000
|
38
|
+
0xA000042B203EALL, //10.0.17074.1002
|
39
|
+
0xA000042EE0001LL, //10.0.17134.1
|
40
|
+
0xA000042EE0030LL, //10.0.17134.48
|
41
|
+
0xA000042EE0070LL, //10.0.17134.112
|
42
|
+
0xA000042EE00E4LL, //10.0.17134.228
|
43
|
+
0xA000042EE0197LL, //10.0.17134.407
|
44
|
+
0xA000042EE01D7LL, //10.0.17134.471
|
45
|
+
0xA000042EE0288LL, //10.0.17134.648
|
46
|
+
0xA000045630001LL, //10.0.17763.1
|
47
|
+
0xA000045630086LL, //10.0.17763.134
|
48
|
+
0xA0000456300C2LL, //10.0.17763.194
|
49
|
+
0xA00004563017BLL, //10.0.17763.379
|
50
|
+
0xA0000456302CFLL, //10.0.17763.719
|
51
|
+
0xA000047BA0001LL, //10.0.18362.1
|
52
|
+
0xA000047BA01DCLL //10.0.18362.476
|
53
|
+
};
|
54
|
+
|
55
|
+
#define ULONG_PTR_T ULONG_PTR
|
56
|
+
#define PTR_T *
|
57
|
+
|
58
|
+
#pragma pack(1)
|
59
|
+
typedef struct _RPC_SERVER_T{
|
60
|
+
MUTEX_T Mutex;
|
61
|
+
ULONG __bIslistening;
|
62
|
+
ULONG bIsListening;
|
63
|
+
ULONG MinimumCallThreads;
|
64
|
+
ULONG Wait;
|
65
|
+
ULONG OutCalls;
|
66
|
+
ULONG Unk1;
|
67
|
+
ULONG InCalls;
|
68
|
+
ULONG Unk2;
|
69
|
+
SIMPLE_DICT_T AddressDict;
|
70
|
+
ULONG lAvailableCalls;
|
71
|
+
ULONG Unk3;
|
72
|
+
SIMPLE_DICT_T _ProtSeqQueue;
|
73
|
+
ULONG Unk4[8];
|
74
|
+
ULONG OutPackets;
|
75
|
+
ULONG Unk5;
|
76
|
+
MUTEX_T Mutex2;
|
77
|
+
ULONG MaxCalls;
|
78
|
+
ULONG Unk6;
|
79
|
+
VOID PTR_T hEvent;
|
80
|
+
ULONG Unk7[4];
|
81
|
+
SIMPLE_DICT_T InterfaceDict;
|
82
|
+
ULONG _bIsListening;
|
83
|
+
ULONG bIsMaxCalls1234;
|
84
|
+
ULONG Unk8[6];
|
85
|
+
ULONG InPackets;
|
86
|
+
ULONG Unk9;
|
87
|
+
RPC_FORWARD_FUNCTION PTR_T pRpcForwardFunction;
|
88
|
+
ULONG Unk10[6];
|
89
|
+
SIMPLE_DICT_T AuthenInfoDict;
|
90
|
+
LIST_ENTRY_T RpcIfGroupListEntry;
|
91
|
+
ULONG PTR_T __SRWLock;
|
92
|
+
LIST_ENTRY_T field_1E0;
|
93
|
+
}RPC_SERVER_T, PTR_T PRPC_SERVER_T;
|
94
|
+
|
95
|
+
typedef struct _RPC_INTERFACE_T
|
96
|
+
{
|
97
|
+
PRPC_SERVER_T pRpcServer;
|
98
|
+
ULONG Flags;
|
99
|
+
ULONG Unk1;
|
100
|
+
MUTEX_T Mutex;
|
101
|
+
ULONG EpMapperFlags;
|
102
|
+
ULONG Unk2;
|
103
|
+
RPC_MGR_EPV PTR_T pMgrEpv;
|
104
|
+
RPC_IF_CALLBACK_FN PTR_T IfCallbackFn;
|
105
|
+
RPC_SERVER_INTERFACE_T RpcServerInterface;
|
106
|
+
PMIDL_SYNTAX_INFO pSyntaxInfo;
|
107
|
+
VOID PTR_T pTransfertSyntaxes;
|
108
|
+
ULONG TransfertSyntaxesCount;
|
109
|
+
ULONG __Field_C4;
|
110
|
+
ULONG NbTypeManager;
|
111
|
+
ULONG MaxRpcSize;
|
112
|
+
UUID_VECTOR PTR_T pUuidVector;
|
113
|
+
SIMPLE_DICT_T RpcInterfaceManagerDict;
|
114
|
+
UCHAR Annotation[MAX_RPC_INTERFACE_ANNOTATION];
|
115
|
+
ULONG IsCallSizeLimitReached;
|
116
|
+
ULONG currentNullManagerCalls;
|
117
|
+
ULONG __Field_150;
|
118
|
+
ULONG __Field_154;
|
119
|
+
ULONG __Field_158;
|
120
|
+
ULONG SecurityCallbackInProgress;
|
121
|
+
ULONG SecurityCacheEntry;
|
122
|
+
ULONG field_164;
|
123
|
+
VOID PTR_T __SecurityCacheEntries[16];
|
124
|
+
SIMPLE_DICT_T FwEpDict;
|
125
|
+
ULONG Unk3[6];
|
126
|
+
struct RPCP_INTERFACE_GROUP PTR_T pRpcpInterfaceGroup;
|
127
|
+
}RPC_INTERFACE_T, PTR_T PRPC_INTERFACE_T;
|
128
|
+
|
129
|
+
#define RPC_ADDRESS_TYPE_DG 0x400000
|
130
|
+
#define RPC_ADDRESS_TYPE_LRPC 0x800000
|
131
|
+
#define RPC_ADDRESS_TYPE_OSF 0x800
|
132
|
+
|
133
|
+
typedef struct _RPC_ADDRESS_T{
|
134
|
+
VOID PTR_T pVtable;
|
135
|
+
ULONG Magic;
|
136
|
+
ULONG TypeOfAddress;
|
137
|
+
ULONG ReferenceCounter;
|
138
|
+
ULONG Unk1[3];
|
139
|
+
WCHAR PTR_T Name;
|
140
|
+
WCHAR PTR_T Protocole;
|
141
|
+
WCHAR PTR_T Address;
|
142
|
+
ULONG bNamed;
|
143
|
+
ULONG EpAddAddressFlag;
|
144
|
+
SIMPLE_DICT_T __LRPCSassociationSimpleDict;
|
145
|
+
ULONG __Field_68;
|
146
|
+
ULONG Unk3;
|
147
|
+
ULONG NbActiveCalls;
|
148
|
+
ULONG __Field_74;
|
149
|
+
ULONG Unk4[6];
|
150
|
+
ULONG __Field_90;
|
151
|
+
MUTEX_T Mutex;
|
152
|
+
}RPC_ADDRESS_T;
|
153
|
+
|
154
|
+
#pragma pack()
|
@@ -0,0 +1,517 @@
|
|
1
|
+
#define WINAPI_FAMILY_PARTITION(Partitions) (Partitions)
|
2
|
+
|
3
|
+
#define PTR_T *
|
4
|
+
#if defined(_WIN64)
|
5
|
+
typedef unsigned __int64 ULONG_PTR;
|
6
|
+
#else
|
7
|
+
typedef unsigned long ULONG_PTR;
|
8
|
+
#endif
|
9
|
+
|
10
|
+
typedef ULONG_PTR ULONG_PTR_T;
|
11
|
+
// ==============================
|
12
|
+
// from winnt.h
|
13
|
+
|
14
|
+
typedef unsigned short WCHAR; // wc, 16-bit UNICODE character
|
15
|
+
|
16
|
+
|
17
|
+
#ifndef VOID
|
18
|
+
#define VOID void
|
19
|
+
typedef char CHAR;
|
20
|
+
typedef short SHORT;
|
21
|
+
typedef long LONG;
|
22
|
+
#if !defined(MIDL_PASS)
|
23
|
+
typedef int INT;
|
24
|
+
#endif
|
25
|
+
#endif
|
26
|
+
|
27
|
+
|
28
|
+
// ==============================
|
29
|
+
// from minwindef.h
|
30
|
+
|
31
|
+
#define far
|
32
|
+
#define near
|
33
|
+
#define CONST const
|
34
|
+
|
35
|
+
|
36
|
+
typedef unsigned long ULONG;
|
37
|
+
typedef ULONG *PULONG;
|
38
|
+
typedef unsigned short USHORT;
|
39
|
+
typedef USHORT *PUSHORT;
|
40
|
+
typedef unsigned char UCHAR;
|
41
|
+
typedef UCHAR *PUCHAR;
|
42
|
+
|
43
|
+
#define FAR far
|
44
|
+
#define NEAR near
|
45
|
+
|
46
|
+
#define CALLBACK __stdcall
|
47
|
+
#define WINAPI __stdcall
|
48
|
+
#define WINAPIV __cdecl
|
49
|
+
#define APIENTRY WINAPI
|
50
|
+
#define APIPRIVATE __stdcall
|
51
|
+
#define PASCAL __stdcall
|
52
|
+
|
53
|
+
typedef unsigned long DWORD;
|
54
|
+
typedef int BOOL;
|
55
|
+
typedef unsigned char BYTE;
|
56
|
+
typedef unsigned short WORD;
|
57
|
+
typedef float FLOAT;
|
58
|
+
typedef FLOAT *PFLOAT;
|
59
|
+
typedef BOOL near *PBOOL;
|
60
|
+
typedef BOOL far *LPBOOL;
|
61
|
+
typedef BYTE near *PBYTE;
|
62
|
+
typedef BYTE far *LPBYTE;
|
63
|
+
typedef int near *PINT;
|
64
|
+
typedef int far *LPINT;
|
65
|
+
typedef WORD near *PWORD;
|
66
|
+
typedef WORD far *LPWORD;
|
67
|
+
typedef long far *LPLONG;
|
68
|
+
typedef DWORD near *PDWORD;
|
69
|
+
typedef DWORD far *LPDWORD;
|
70
|
+
typedef void far *LPVOID;
|
71
|
+
typedef CONST void far *LPCVOID;
|
72
|
+
|
73
|
+
typedef int INT;
|
74
|
+
typedef unsigned int UINT;
|
75
|
+
typedef unsigned int *PUINT;
|
76
|
+
|
77
|
+
// ==============================
|
78
|
+
// from basetsd.h
|
79
|
+
|
80
|
+
|
81
|
+
#ifndef _BASETSD_H_
|
82
|
+
#define _BASETSD_H_
|
83
|
+
|
84
|
+
#if _MSC_VER >= 1200
|
85
|
+
#pragma warning(push)
|
86
|
+
#pragma warning(disable:4668)
|
87
|
+
#endif
|
88
|
+
|
89
|
+
#if !defined(_MAC) && (defined(_M_MRX000) || defined(_WIN64)) && (_MSC_VER >= 1100) && !(defined(MIDL_PASS) || defined(RC_INVOKED))
|
90
|
+
#define POINTER_64 __ptr64
|
91
|
+
typedef unsigned __int64 POINTER_64_INT;
|
92
|
+
#if defined(_WIN64)
|
93
|
+
#define POINTER_32 __ptr32
|
94
|
+
#else
|
95
|
+
#define POINTER_32
|
96
|
+
#endif
|
97
|
+
#else
|
98
|
+
#if defined(_MAC) && defined(_MAC_INT_64)
|
99
|
+
#define POINTER_64 __ptr64
|
100
|
+
typedef unsigned __int64 POINTER_64_INT;
|
101
|
+
#else
|
102
|
+
#if (_MSC_VER >= 1300) && !(defined(MIDL_PASS) || defined(RC_INVOKED))
|
103
|
+
#define POINTER_64 __ptr64
|
104
|
+
#else
|
105
|
+
#define POINTER_64
|
106
|
+
#endif
|
107
|
+
typedef unsigned long POINTER_64_INT;
|
108
|
+
#endif
|
109
|
+
#define POINTER_32
|
110
|
+
#endif
|
111
|
+
|
112
|
+
#if defined(_WIN64)
|
113
|
+
#define FIRMWARE_PTR
|
114
|
+
#else
|
115
|
+
#define FIRMWARE_PTR POINTER_32
|
116
|
+
#endif
|
117
|
+
|
118
|
+
#if (_MSC_FULL_VER >= 140041204) && !defined(MIDL_PASS) && !defined(RC_INVOKED)
|
119
|
+
#define POINTER_SIGNED __sptr
|
120
|
+
#define POINTER_UNSIGNED __uptr
|
121
|
+
#else
|
122
|
+
#define POINTER_SIGNED
|
123
|
+
#define POINTER_UNSIGNED
|
124
|
+
#endif
|
125
|
+
|
126
|
+
#define SPOINTER_32 POINTER_SIGNED POINTER_32
|
127
|
+
#define UPOINTER_32 POINTER_UNSIGNED POINTER_32
|
128
|
+
|
129
|
+
#if _MSC_VER > 1000
|
130
|
+
#pragma once
|
131
|
+
#endif
|
132
|
+
|
133
|
+
#ifdef __cplusplus
|
134
|
+
extern "C" {
|
135
|
+
#endif
|
136
|
+
|
137
|
+
typedef signed char INT8, *PINT8;
|
138
|
+
typedef signed short INT16, *PINT16;
|
139
|
+
typedef signed int INT32, *PINT32;
|
140
|
+
typedef signed __int64 INT64, *PINT64;
|
141
|
+
typedef unsigned char UINT8, *PUINT8;
|
142
|
+
typedef unsigned short UINT16, *PUINT16;
|
143
|
+
typedef unsigned int UINT32, *PUINT32;
|
144
|
+
typedef unsigned __int64 UINT64, *PUINT64;
|
145
|
+
|
146
|
+
typedef signed int LONG32, *PLONG32;
|
147
|
+
|
148
|
+
|
149
|
+
typedef unsigned int ULONG32, *PULONG32;
|
150
|
+
typedef unsigned int DWORD32, *PDWORD32;
|
151
|
+
|
152
|
+
#if !defined(_W64)
|
153
|
+
#if !defined(__midl) && (defined(_X86_) || defined(_M_IX86) || defined(_ARM_) || defined(_M_ARM)) && _MSC_VER >= 1300
|
154
|
+
#define _W64 __w64
|
155
|
+
#else
|
156
|
+
#define _W64
|
157
|
+
#endif
|
158
|
+
#endif
|
159
|
+
|
160
|
+
#if ( defined(__midl) && (501 < __midl) )
|
161
|
+
|
162
|
+
typedef [public] __int3264 INT_PTR, *PINT_PTR;
|
163
|
+
typedef [public] unsigned __int3264 UINT_PTR, *PUINT_PTR;
|
164
|
+
|
165
|
+
typedef [public] __int3264 LONG_PTR, *PLONG_PTR;
|
166
|
+
typedef [public] unsigned __int3264 ULONG_PTR, *PULONG_PTR;
|
167
|
+
|
168
|
+
#else
|
169
|
+
|
170
|
+
#if defined(_WIN64)
|
171
|
+
typedef __int64 INT_PTR, *PINT_PTR;
|
172
|
+
typedef unsigned __int64 UINT_PTR, *PUINT_PTR;
|
173
|
+
|
174
|
+
typedef __int64 LONG_PTR, *PLONG_PTR;
|
175
|
+
typedef unsigned __int64 ULONG_PTR, *PULONG_PTR;
|
176
|
+
|
177
|
+
#define __int3264 __int64
|
178
|
+
|
179
|
+
#else
|
180
|
+
typedef _W64 int INT_PTR, *PINT_PTR;
|
181
|
+
typedef _W64 unsigned int UINT_PTR, *PUINT_PTR;
|
182
|
+
|
183
|
+
typedef _W64 long LONG_PTR, *PLONG_PTR;
|
184
|
+
typedef _W64 unsigned long ULONG_PTR, *PULONG_PTR;
|
185
|
+
|
186
|
+
#define __int3264 __int32
|
187
|
+
|
188
|
+
#endif
|
189
|
+
#endif
|
190
|
+
|
191
|
+
|
192
|
+
#ifdef _WIN64
|
193
|
+
|
194
|
+
#define ADDRESS_TAG_BIT 0x40000000000UI64
|
195
|
+
|
196
|
+
typedef __int64 SHANDLE_PTR;
|
197
|
+
typedef unsigned __int64 HANDLE_PTR;
|
198
|
+
typedef unsigned int UHALF_PTR, *PUHALF_PTR;
|
199
|
+
typedef int HALF_PTR, *PHALF_PTR;
|
200
|
+
|
201
|
+
#if !defined(__midl)
|
202
|
+
__inline
|
203
|
+
unsigned long
|
204
|
+
HandleToULong(
|
205
|
+
const void *h
|
206
|
+
)
|
207
|
+
{
|
208
|
+
return((unsigned long) (ULONG_PTR) h );
|
209
|
+
}
|
210
|
+
|
211
|
+
__inline
|
212
|
+
long
|
213
|
+
HandleToLong(
|
214
|
+
const void *h
|
215
|
+
)
|
216
|
+
{
|
217
|
+
return((long) (LONG_PTR) h );
|
218
|
+
}
|
219
|
+
|
220
|
+
__inline
|
221
|
+
void *
|
222
|
+
ULongToHandle(
|
223
|
+
const unsigned long h
|
224
|
+
)
|
225
|
+
{
|
226
|
+
return((void *) (UINT_PTR) h );
|
227
|
+
}
|
228
|
+
|
229
|
+
|
230
|
+
__inline
|
231
|
+
void *
|
232
|
+
LongToHandle(
|
233
|
+
const long h
|
234
|
+
)
|
235
|
+
{
|
236
|
+
return((void *) (INT_PTR) h );
|
237
|
+
}
|
238
|
+
|
239
|
+
|
240
|
+
__inline
|
241
|
+
unsigned long
|
242
|
+
PtrToUlong(
|
243
|
+
const void *p
|
244
|
+
)
|
245
|
+
{
|
246
|
+
return((unsigned long) (ULONG_PTR) p );
|
247
|
+
}
|
248
|
+
|
249
|
+
__inline
|
250
|
+
unsigned int
|
251
|
+
PtrToUint(
|
252
|
+
const void *p
|
253
|
+
)
|
254
|
+
{
|
255
|
+
return((unsigned int) (UINT_PTR) p );
|
256
|
+
}
|
257
|
+
|
258
|
+
__inline
|
259
|
+
unsigned short
|
260
|
+
PtrToUshort(
|
261
|
+
const void *p
|
262
|
+
)
|
263
|
+
{
|
264
|
+
return((unsigned short) (unsigned long) (ULONG_PTR) p );
|
265
|
+
}
|
266
|
+
|
267
|
+
__inline
|
268
|
+
long
|
269
|
+
PtrToLong(
|
270
|
+
const void *p
|
271
|
+
)
|
272
|
+
{
|
273
|
+
return((long) (LONG_PTR) p );
|
274
|
+
}
|
275
|
+
|
276
|
+
__inline
|
277
|
+
int
|
278
|
+
PtrToInt(
|
279
|
+
const void *p
|
280
|
+
)
|
281
|
+
{
|
282
|
+
return((int) (INT_PTR) p );
|
283
|
+
}
|
284
|
+
|
285
|
+
__inline
|
286
|
+
short
|
287
|
+
PtrToShort(
|
288
|
+
const void *p
|
289
|
+
)
|
290
|
+
{
|
291
|
+
return((short) (long) (LONG_PTR) p );
|
292
|
+
}
|
293
|
+
|
294
|
+
__inline
|
295
|
+
void *
|
296
|
+
IntToPtr(
|
297
|
+
const int i
|
298
|
+
)
|
299
|
+
{
|
300
|
+
return( (void *)(INT_PTR)i );
|
301
|
+
}
|
302
|
+
|
303
|
+
__inline
|
304
|
+
void *
|
305
|
+
UIntToPtr(
|
306
|
+
const unsigned int ui
|
307
|
+
)
|
308
|
+
{
|
309
|
+
return( (void *)(UINT_PTR)ui );
|
310
|
+
}
|
311
|
+
|
312
|
+
__inline
|
313
|
+
void *
|
314
|
+
LongToPtr(
|
315
|
+
const long l
|
316
|
+
)
|
317
|
+
{
|
318
|
+
return( (void *)(LONG_PTR)l );
|
319
|
+
}
|
320
|
+
|
321
|
+
__inline
|
322
|
+
void *
|
323
|
+
ULongToPtr(
|
324
|
+
const unsigned long ul
|
325
|
+
)
|
326
|
+
{
|
327
|
+
return( (void *)(ULONG_PTR)ul );
|
328
|
+
}
|
329
|
+
|
330
|
+
#define PtrToPtr64( p ) ((void * POINTER_64) p)
|
331
|
+
#define Ptr64ToPtr( p ) ((void *) p)
|
332
|
+
#define HandleToHandle64( h ) (PtrToPtr64( h ))
|
333
|
+
#define Handle64ToHandle( h ) (Ptr64ToPtr( h ))
|
334
|
+
|
335
|
+
__inline
|
336
|
+
void *
|
337
|
+
Ptr32ToPtr(
|
338
|
+
const void * POINTER_32 p
|
339
|
+
)
|
340
|
+
{
|
341
|
+
return((void *) (ULONG_PTR) (unsigned long) p);
|
342
|
+
}
|
343
|
+
|
344
|
+
__inline
|
345
|
+
void *
|
346
|
+
Handle32ToHandle(
|
347
|
+
const void * POINTER_32 h
|
348
|
+
)
|
349
|
+
{
|
350
|
+
return((void *) (LONG_PTR) (long) h);
|
351
|
+
}
|
352
|
+
|
353
|
+
__inline
|
354
|
+
void * POINTER_32
|
355
|
+
PtrToPtr32(
|
356
|
+
const void *p
|
357
|
+
)
|
358
|
+
{
|
359
|
+
return((void * POINTER_32) (unsigned long) (ULONG_PTR) p);
|
360
|
+
}
|
361
|
+
|
362
|
+
#define HandleToHandle32( h ) (PtrToPtr32( h ))
|
363
|
+
|
364
|
+
#endif
|
365
|
+
|
366
|
+
#else
|
367
|
+
|
368
|
+
#define ADDRESS_TAG_BIT 0x80000000UL
|
369
|
+
|
370
|
+
typedef unsigned short UHALF_PTR, *PUHALF_PTR;
|
371
|
+
typedef short HALF_PTR, *PHALF_PTR;
|
372
|
+
typedef _W64 long SHANDLE_PTR;
|
373
|
+
typedef _W64 unsigned long HANDLE_PTR;
|
374
|
+
|
375
|
+
#define HandleToULong( h ) ((ULONG)(ULONG_PTR)(h) )
|
376
|
+
#define HandleToLong( h ) ((LONG)(LONG_PTR) (h) )
|
377
|
+
#define ULongToHandle( ul ) ((HANDLE)(ULONG_PTR) (ul) )
|
378
|
+
#define LongToHandle( h ) ((HANDLE)(LONG_PTR) (h) )
|
379
|
+
#define PtrToUlong( p ) ((ULONG)(ULONG_PTR) (p) )
|
380
|
+
#define PtrToLong( p ) ((LONG)(LONG_PTR) (p) )
|
381
|
+
#define PtrToUint( p ) ((UINT)(UINT_PTR) (p) )
|
382
|
+
#define PtrToInt( p ) ((INT)(INT_PTR) (p) )
|
383
|
+
#define PtrToUshort( p ) ((unsigned short)(ULONG_PTR)(p) )
|
384
|
+
#define PtrToShort( p ) ((short)(LONG_PTR)(p) )
|
385
|
+
#define IntToPtr( i ) ((VOID *)(INT_PTR)((int)i))
|
386
|
+
#define UIntToPtr( ui ) ((VOID *)(UINT_PTR)((unsigned int)ui))
|
387
|
+
#define LongToPtr( l ) ((VOID *)(LONG_PTR)((long)l))
|
388
|
+
#define ULongToPtr( ul ) ((VOID *)(ULONG_PTR)((unsigned long)ul))
|
389
|
+
|
390
|
+
#if !defined(__midl)
|
391
|
+
__inline
|
392
|
+
void * POINTER_64
|
393
|
+
PtrToPtr64(
|
394
|
+
const void *p
|
395
|
+
)
|
396
|
+
{
|
397
|
+
return((void * POINTER_64) (unsigned __int64) (ULONG_PTR)p );
|
398
|
+
}
|
399
|
+
|
400
|
+
__inline
|
401
|
+
void *
|
402
|
+
Ptr64ToPtr(
|
403
|
+
const void * POINTER_64 p
|
404
|
+
)
|
405
|
+
{
|
406
|
+
return((void *) (ULONG_PTR) (unsigned __int64) p);
|
407
|
+
}
|
408
|
+
|
409
|
+
__inline
|
410
|
+
void * POINTER_64
|
411
|
+
HandleToHandle64(
|
412
|
+
const void *h
|
413
|
+
)
|
414
|
+
{
|
415
|
+
return((void * POINTER_64)(__int64)(LONG_PTR)h );
|
416
|
+
}
|
417
|
+
|
418
|
+
__inline
|
419
|
+
void *
|
420
|
+
Handle64ToHandle(
|
421
|
+
const void * POINTER_64 h
|
422
|
+
)
|
423
|
+
{
|
424
|
+
return((void *) (ULONG_PTR) (unsigned __int64) h );
|
425
|
+
}
|
426
|
+
#endif
|
427
|
+
|
428
|
+
#define Ptr32ToPtr( p ) ((void *) p)
|
429
|
+
#define Handle32ToHandle( h ) (Ptr32ToPtr( h ))
|
430
|
+
#define PtrToPtr32( p ) ((void * POINTER_32) p)
|
431
|
+
#define HandleToHandle32( h ) (PtrToPtr32( h ))
|
432
|
+
|
433
|
+
#endif // !_WIN64
|
434
|
+
|
435
|
+
#define HandleToUlong(h) HandleToULong(h)
|
436
|
+
#define UlongToHandle(ul) ULongToHandle(ul)
|
437
|
+
#define UlongToPtr(ul) ULongToPtr(ul)
|
438
|
+
#define UintToPtr(ui) UIntToPtr(ui)
|
439
|
+
|
440
|
+
#define MAXUINT_PTR (~((UINT_PTR)0))
|
441
|
+
#define MAXINT_PTR ((INT_PTR)(MAXUINT_PTR >> 1))
|
442
|
+
#define MININT_PTR (~MAXINT_PTR)
|
443
|
+
|
444
|
+
#define MAXULONG_PTR (~((ULONG_PTR)0))
|
445
|
+
#define MAXLONG_PTR ((LONG_PTR)(MAXULONG_PTR >> 1))
|
446
|
+
#define MINLONG_PTR (~MAXLONG_PTR)
|
447
|
+
|
448
|
+
#define MAXUHALF_PTR ((UHALF_PTR)~0)
|
449
|
+
#define MAXHALF_PTR ((HALF_PTR)(MAXUHALF_PTR >> 1))
|
450
|
+
#define MINHALF_PTR (~MAXHALF_PTR)
|
451
|
+
|
452
|
+
|
453
|
+
typedef ULONG_PTR SIZE_T, *PSIZE_T;
|
454
|
+
typedef LONG_PTR SSIZE_T, *PSSIZE_T;
|
455
|
+
|
456
|
+
#if _WIN32_WINNT >= 0x0600 || (defined(__cplusplus) && defined(WINDOWS_ENABLE_CPLUSPLUS))
|
457
|
+
|
458
|
+
#define MAXUINT8 ((UINT8)~((UINT8)0))
|
459
|
+
#define MAXINT8 ((INT8)(MAXUINT8 >> 1))
|
460
|
+
#define MININT8 ((INT8)~MAXINT8)
|
461
|
+
|
462
|
+
#define MAXUINT16 ((UINT16)~((UINT16)0))
|
463
|
+
#define MAXINT16 ((INT16)(MAXUINT16 >> 1))
|
464
|
+
#define MININT16 ((INT16)~MAXINT16)
|
465
|
+
|
466
|
+
#define MAXUINT32 ((UINT32)~((UINT32)0))
|
467
|
+
#define MAXINT32 ((INT32)(MAXUINT32 >> 1))
|
468
|
+
#define MININT32 ((INT32)~MAXINT32)
|
469
|
+
|
470
|
+
#define MAXUINT64 ((UINT64)~((UINT64)0))
|
471
|
+
#define MAXINT64 ((INT64)(MAXUINT64 >> 1))
|
472
|
+
#define MININT64 ((INT64)~MAXINT64)
|
473
|
+
|
474
|
+
#define MAXULONG32 ((ULONG32)~((ULONG32)0))
|
475
|
+
#define MAXLONG32 ((LONG32)(MAXULONG32 >> 1))
|
476
|
+
#define MINLONG32 ((LONG32)~MAXLONG32)
|
477
|
+
|
478
|
+
#define MAXULONG64 ((ULONG64)~((ULONG64)0))
|
479
|
+
#define MAXLONG64 ((LONG64)(MAXULONG64 >> 1))
|
480
|
+
#define MINLONG64 ((LONG64)~MAXLONG64)
|
481
|
+
|
482
|
+
#define MAXULONGLONG ((ULONGLONG)~((ULONGLONG)0))
|
483
|
+
#define MINLONGLONG ((LONGLONG)~MAXLONGLONG)
|
484
|
+
|
485
|
+
#define MAXSIZE_T ((SIZE_T)~((SIZE_T)0))
|
486
|
+
#define MAXSSIZE_T ((SSIZE_T)(MAXSIZE_T >> 1))
|
487
|
+
#define MINSSIZE_T ((SSIZE_T)~MAXSSIZE_T)
|
488
|
+
|
489
|
+
#define MAXUINT ((UINT)~((UINT)0))
|
490
|
+
#define MAXINT ((INT)(MAXUINT >> 1))
|
491
|
+
#define MININT ((INT)~MAXINT)
|
492
|
+
|
493
|
+
#define MAXDWORD32 ((DWORD32)~((DWORD32)0))
|
494
|
+
#define MAXDWORD64 ((DWORD64)~((DWORD64)0))
|
495
|
+
|
496
|
+
#endif
|
497
|
+
|
498
|
+
typedef ULONG_PTR DWORD_PTR, *PDWORD_PTR;
|
499
|
+
|
500
|
+
typedef __int64 LONG64, *PLONG64;
|
501
|
+
|
502
|
+
typedef unsigned __int64 ULONG64, *PULONG64;
|
503
|
+
typedef unsigned __int64 DWORD64, *PDWORD64;
|
504
|
+
|
505
|
+
typedef ULONG_PTR KAFFINITY;
|
506
|
+
typedef KAFFINITY *PKAFFINITY;
|
507
|
+
|
508
|
+
|
509
|
+
#ifdef __cplusplus
|
510
|
+
}
|
511
|
+
#endif
|
512
|
+
|
513
|
+
#if _MSC_VER >= 1200
|
514
|
+
#pragma warning(pop)
|
515
|
+
#endif
|
516
|
+
|
517
|
+
#endif
|