turborex 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|