-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathWin_AutoHandle.cpp
More file actions
53 lines (44 loc) · 811 Bytes
/
Win_AutoHandle.cpp
File metadata and controls
53 lines (44 loc) · 811 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include "stdafx.h"
#include "Win_AutoHandle.h"
CAutoHandle::CAutoHandle(HANDLE handle)
:handle_(handle)
{
if(handle == INVALID_HANDLE_VALUE)
{
throw CAutoHandleException("[CAutoHandle]: Handle is invalid");
}
}
CAutoHandle::CAutoHandle(HANDLE handle, Nothrow)
:handle_(handle)
{
}
CAutoHandle::~CAutoHandle(void)
{
Reset();
}
CAutoHandle::operator HANDLE(void) const
{
return handle_;
}
HANDLE CAutoHandle::GetHandle(void) const
{
return handle_;
}
HANDLE CAutoHandle::Release(void)
{
HANDLE result = handle_;
handle_ = INVALID_HANDLE_VALUE;
return result;
}
void CAutoHandle::Reset(void)
{
Reset(INVALID_HANDLE_VALUE);
}
void CAutoHandle::Reset(HANDLE newHandle/* = INVALID_HANDLE_VALUE*/)
{
if(handle_ != INVALID_HANDLE_VALUE)
{
::CloseHandle(handle_);
}
handle_ = newHandle;
}