OLD | NEW |
| (Empty) |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #ifndef SANDBOX_WIN_SRC_INTERNAL_TYPES_H_ | |
6 #define SANDBOX_WIN_SRC_INTERNAL_TYPES_H_ | |
7 | |
8 #include <stdint.h> | |
9 | |
10 namespace sandbox { | |
11 | |
12 const wchar_t kNtdllName[] = L"ntdll.dll"; | |
13 const wchar_t kKerneldllName[] = L"kernel32.dll"; | |
14 const wchar_t kKernelBasedllName[] = L"kernelbase.dll"; | |
15 | |
16 // Defines the supported C++ types encoding to numeric id. Like a poor's man | |
17 // RTTI. Note that true C++ RTTI will not work because the types are not | |
18 // polymorphic anyway. | |
19 enum ArgType { | |
20 INVALID_TYPE = 0, | |
21 WCHAR_TYPE, | |
22 UINT32_TYPE, | |
23 UNISTR_TYPE, | |
24 VOIDPTR_TYPE, | |
25 INPTR_TYPE, | |
26 INOUTPTR_TYPE, | |
27 LAST_TYPE | |
28 }; | |
29 | |
30 // Encapsulates a pointer to a buffer and the size of the buffer. | |
31 class CountedBuffer { | |
32 public: | |
33 CountedBuffer(void* buffer, uint32_t size) : size_(size), buffer_(buffer) {} | |
34 | |
35 uint32_t Size() const { return size_; } | |
36 | |
37 void* Buffer() const { | |
38 return buffer_; | |
39 } | |
40 | |
41 private: | |
42 uint32_t size_; | |
43 void* buffer_; | |
44 }; | |
45 | |
46 // Helper class to convert void-pointer packed ints for both | |
47 // 32 and 64 bit builds. This construct is non-portable. | |
48 class IPCInt { | |
49 public: | |
50 explicit IPCInt(void* buffer) { | |
51 buffer_.vp = buffer; | |
52 } | |
53 | |
54 explicit IPCInt(unsigned __int32 i32) { | |
55 buffer_.vp = NULL; | |
56 buffer_.i32 = i32; | |
57 } | |
58 | |
59 unsigned __int32 As32Bit() const { | |
60 return buffer_.i32; | |
61 } | |
62 | |
63 void* AsVoidPtr() const { | |
64 return buffer_.vp; | |
65 } | |
66 | |
67 private: | |
68 union U { | |
69 void* vp; | |
70 unsigned __int32 i32; | |
71 } buffer_; | |
72 }; | |
73 | |
74 } // namespace sandbox | |
75 | |
76 #endif // SANDBOX_WIN_SRC_INTERNAL_TYPES_H_ | |
OLD | NEW |