diff options
Diffstat (limited to 'chromium/sandbox/win/src/internal_types.h')
-rw-r--r-- | chromium/sandbox/win/src/internal_types.h | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/chromium/sandbox/win/src/internal_types.h b/chromium/sandbox/win/src/internal_types.h new file mode 100644 index 00000000000..db969aadd59 --- /dev/null +++ b/chromium/sandbox/win/src/internal_types.h @@ -0,0 +1,75 @@ +// Copyright (c) 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef SANDBOX_SRC_INTERNAL_TYPES_H_ +#define SANDBOX_SRC_INTERNAL_TYPES_H_ + +namespace sandbox { + +const wchar_t kNtdllName[] = L"ntdll.dll"; +const wchar_t kKerneldllName[] = L"kernel32.dll"; + +// Defines the supported C++ types encoding to numeric id. Like a poor's man +// RTTI. Note that true C++ RTTI will not work because the types are not +// polymorphic anyway. +enum ArgType { + INVALID_TYPE = 0, + WCHAR_TYPE, + ULONG_TYPE, + UNISTR_TYPE, + VOIDPTR_TYPE, + INPTR_TYPE, + INOUTPTR_TYPE, + LAST_TYPE +}; + +// Encapsulates a pointer to a buffer and the size of the buffer. +class CountedBuffer { + public: + CountedBuffer(void* buffer, uint32 size) : size_(size), buffer_(buffer) {} + + uint32 Size() const { + return size_; + } + + void* Buffer() const { + return buffer_; + } + + private: + uint32 size_; + void* buffer_; +}; + +// Helper class to convert void-pointer packed ints for both +// 32 and 64 bit builds. This construct is non-portable. +class IPCInt { + public: + explicit IPCInt(void* buffer) { + buffer_.vp = buffer; + } + + explicit IPCInt(unsigned __int32 i32) { + buffer_.vp = NULL; + buffer_.i32 = i32; + } + + unsigned __int32 As32Bit() const { + return buffer_.i32; + } + + void* AsVoidPtr() const { + return buffer_.vp; + } + + private: + union U { + void* vp; + unsigned __int32 i32; + } buffer_; +}; + +} // namespace sandbox + +#endif // SANDBOX_SRC_INTERNAL_TYPES_H_ |