1*f6dc9357SAndroid Build Coastguard Worker // Windows/Handle.h 2*f6dc9357SAndroid Build Coastguard Worker 3*f6dc9357SAndroid Build Coastguard Worker #ifndef ZIP7_INC_WINDOWS_HANDLE_H 4*f6dc9357SAndroid Build Coastguard Worker #define ZIP7_INC_WINDOWS_HANDLE_H 5*f6dc9357SAndroid Build Coastguard Worker 6*f6dc9357SAndroid Build Coastguard Worker #include "../Common/MyWindows.h" 7*f6dc9357SAndroid Build Coastguard Worker 8*f6dc9357SAndroid Build Coastguard Worker namespace NWindows { 9*f6dc9357SAndroid Build Coastguard Worker 10*f6dc9357SAndroid Build Coastguard Worker class CHandle MY_UNCOPYABLE 11*f6dc9357SAndroid Build Coastguard Worker { 12*f6dc9357SAndroid Build Coastguard Worker protected: 13*f6dc9357SAndroid Build Coastguard Worker HANDLE _handle; 14*f6dc9357SAndroid Build Coastguard Worker public: HANDLE()15*f6dc9357SAndroid Build Coastguard Worker operator HANDLE() { return _handle; } CHandle()16*f6dc9357SAndroid Build Coastguard Worker CHandle(): _handle(NULL) {} ~CHandle()17*f6dc9357SAndroid Build Coastguard Worker ~CHandle() { Close(); } IsCreated()18*f6dc9357SAndroid Build Coastguard Worker bool IsCreated() const { return (_handle != NULL); } Close()19*f6dc9357SAndroid Build Coastguard Worker bool Close() 20*f6dc9357SAndroid Build Coastguard Worker { 21*f6dc9357SAndroid Build Coastguard Worker if (_handle == NULL) 22*f6dc9357SAndroid Build Coastguard Worker return true; 23*f6dc9357SAndroid Build Coastguard Worker if (!::CloseHandle(_handle)) 24*f6dc9357SAndroid Build Coastguard Worker return false; 25*f6dc9357SAndroid Build Coastguard Worker _handle = NULL; 26*f6dc9357SAndroid Build Coastguard Worker return true; 27*f6dc9357SAndroid Build Coastguard Worker } Attach(HANDLE handle)28*f6dc9357SAndroid Build Coastguard Worker void Attach(HANDLE handle) { _handle = handle; } Detach()29*f6dc9357SAndroid Build Coastguard Worker HANDLE Detach() 30*f6dc9357SAndroid Build Coastguard Worker { 31*f6dc9357SAndroid Build Coastguard Worker const HANDLE handle = _handle; 32*f6dc9357SAndroid Build Coastguard Worker _handle = NULL; 33*f6dc9357SAndroid Build Coastguard Worker return handle; 34*f6dc9357SAndroid Build Coastguard Worker } 35*f6dc9357SAndroid Build Coastguard Worker }; 36*f6dc9357SAndroid Build Coastguard Worker 37*f6dc9357SAndroid Build Coastguard Worker } 38*f6dc9357SAndroid Build Coastguard Worker 39*f6dc9357SAndroid Build Coastguard Worker #endif 40