Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(338)

Unified Diff: base/memory/shared_memory_win.cc

Issue 1320783002: Make SharedMemoryHandle a class on windows. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@ipc_global
Patch Set: Rebase. Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « base/memory/shared_memory_unittest.cc ('k') | components/mus/gles2/command_buffer_driver.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: base/memory/shared_memory_win.cc
diff --git a/base/memory/shared_memory_win.cc b/base/memory/shared_memory_win.cc
index 5f706fe648598642584903f39a5aa40786acc88d..3eef9a94d33dc5a4c6e7f98c0d65a2a12b14447c 100644
--- a/base/memory/shared_memory_win.cc
+++ b/base/memory/shared_memory_win.cc
@@ -45,11 +45,12 @@ SharedMemory::SharedMemory(const std::wstring& name)
}
SharedMemory::SharedMemory(const SharedMemoryHandle& handle, bool read_only)
- : mapped_file_(handle),
+ : mapped_file_(handle.GetHandle()),
mapped_size_(0),
memory_(NULL),
read_only_(read_only),
requested_size_(0) {
+ DCHECK(!handle.IsValid() || handle.BelongsToCurrentProcess());
}
SharedMemory::SharedMemory(const SharedMemoryHandle& handle,
@@ -60,11 +61,9 @@ SharedMemory::SharedMemory(const SharedMemoryHandle& handle,
memory_(NULL),
read_only_(read_only),
requested_size_(0) {
- ::DuplicateHandle(process, handle,
- GetCurrentProcess(), &mapped_file_,
- read_only_ ? FILE_MAP_READ : FILE_MAP_READ |
- FILE_MAP_WRITE,
- FALSE, 0);
+ ::DuplicateHandle(
+ process, handle.GetHandle(), GetCurrentProcess(), &mapped_file_,
+ read_only_ ? FILE_MAP_READ : FILE_MAP_READ | FILE_MAP_WRITE, FALSE, 0);
}
SharedMemory::~SharedMemory() {
@@ -74,18 +73,17 @@ SharedMemory::~SharedMemory() {
// static
bool SharedMemory::IsHandleValid(const SharedMemoryHandle& handle) {
- return handle != NULL;
+ return handle.IsValid();
}
// static
SharedMemoryHandle SharedMemory::NULLHandle() {
- return NULL;
+ return SharedMemoryHandle();
}
// static
void SharedMemory::CloseHandle(const SharedMemoryHandle& handle) {
- DCHECK(handle != NULL);
- ::CloseHandle(handle);
+ handle.Close();
}
// static
@@ -98,13 +96,15 @@ size_t SharedMemory::GetHandleLimit() {
// static
SharedMemoryHandle SharedMemory::DuplicateHandle(
const SharedMemoryHandle& handle) {
+ DCHECK(handle.BelongsToCurrentProcess());
+ HANDLE duped_handle;
ProcessHandle process = GetCurrentProcess();
- SharedMemoryHandle duped_handle;
- BOOL success = ::DuplicateHandle(process, handle, process, &duped_handle, 0,
- FALSE, DUPLICATE_SAME_ACCESS);
+ BOOL success =
+ ::DuplicateHandle(process, handle.GetHandle(), process, &duped_handle, 0,
+ FALSE, DUPLICATE_SAME_ACCESS);
if (success)
- return duped_handle;
- return NULLHandle();
+ return SharedMemoryHandle(duped_handle, GetCurrentProcId());
+ return SharedMemoryHandle();
}
bool SharedMemory::CreateAndMapAnonymous(size_t size) {
@@ -230,7 +230,7 @@ bool SharedMemory::ShareToProcessCommon(ProcessHandle process,
SharedMemoryHandle* new_handle,
bool close_self,
ShareMode share_mode) {
- *new_handle = 0;
+ *new_handle = SharedMemoryHandle();
DWORD access = FILE_MAP_READ;
DWORD options = 0;
HANDLE mapped_file = mapped_file_;
@@ -245,7 +245,7 @@ bool SharedMemory::ShareToProcessCommon(ProcessHandle process,
}
if (process == GetCurrentProcess() && close_self) {
- *new_handle = mapped_file;
+ *new_handle = SharedMemoryHandle(mapped_file, base::GetCurrentProcId());
return true;
}
@@ -253,20 +253,20 @@ bool SharedMemory::ShareToProcessCommon(ProcessHandle process,
access, FALSE, options)) {
return false;
}
- *new_handle = result;
+ *new_handle = SharedMemoryHandle(result, base::GetProcId(process));
return true;
}
void SharedMemory::Close() {
if (mapped_file_ != NULL) {
- CloseHandle(mapped_file_);
+ ::CloseHandle(mapped_file_);
mapped_file_ = NULL;
}
}
SharedMemoryHandle SharedMemory::handle() const {
- return mapped_file_;
+ return SharedMemoryHandle(mapped_file_, base::GetCurrentProcId());
}
} // namespace base
« no previous file with comments | « base/memory/shared_memory_unittest.cc ('k') | components/mus/gles2/command_buffer_driver.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698