mirror of
https://github.com/klzgrad/naiveproxy.git
synced 2025-02-26 20:03:26 +03:00
60 lines
1.9 KiB
C++
60 lines
1.9 KiB
C++
// Copyright 2012 The Chromium Authors
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
#include "base/win/scoped_handle.h"
|
|
#include "base/win/scoped_handle_verifier.h"
|
|
#include "base/win/windows_types.h"
|
|
|
|
namespace base {
|
|
namespace win {
|
|
|
|
using base::win::internal::ScopedHandleVerifier;
|
|
|
|
std::ostream& operator<<(std::ostream& os, HandleOperation operation) {
|
|
switch (operation) {
|
|
case HandleOperation::kHandleAlreadyTracked:
|
|
return os << "Handle Already Tracked";
|
|
case HandleOperation::kCloseHandleNotTracked:
|
|
return os << "Closing an untracked handle";
|
|
case HandleOperation::kCloseHandleNotOwner:
|
|
return os << "Closing a handle owned by something else";
|
|
case HandleOperation::kCloseHandleHook:
|
|
return os << "CloseHandleHook validation failure";
|
|
case HandleOperation::kDuplicateHandleHook:
|
|
return os << "DuplicateHandleHook validation failure";
|
|
}
|
|
}
|
|
|
|
// Static.
|
|
bool HandleTraits::CloseHandle(HANDLE handle) {
|
|
return ScopedHandleVerifier::Get()->CloseHandle(handle);
|
|
}
|
|
|
|
// Static.
|
|
void VerifierTraits::StartTracking(HANDLE handle,
|
|
const void* owner,
|
|
const void* pc1,
|
|
const void* pc2) {
|
|
return ScopedHandleVerifier::Get()->StartTracking(handle, owner, pc1, pc2);
|
|
}
|
|
|
|
// Static.
|
|
void VerifierTraits::StopTracking(HANDLE handle,
|
|
const void* owner,
|
|
const void* pc1,
|
|
const void* pc2) {
|
|
return ScopedHandleVerifier::Get()->StopTracking(handle, owner, pc1, pc2);
|
|
}
|
|
|
|
void DisableHandleVerifier() {
|
|
return ScopedHandleVerifier::Get()->Disable();
|
|
}
|
|
|
|
void OnHandleBeingClosed(HANDLE handle, HandleOperation operation) {
|
|
return ScopedHandleVerifier::Get()->OnHandleBeingClosed(handle, operation);
|
|
}
|
|
|
|
} // namespace win
|
|
} // namespace base
|