Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/kornelski/7z.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'CPP/Windows/Memory.h')
-rwxr-xr-xCPP/Windows/Memory.h45
1 files changed, 45 insertions, 0 deletions
diff --git a/CPP/Windows/Memory.h b/CPP/Windows/Memory.h
new file mode 100755
index 00000000..bd8773b8
--- /dev/null
+++ b/CPP/Windows/Memory.h
@@ -0,0 +1,45 @@
+// Windows/Memory.h
+
+#ifndef __WINDOWS_MEMORY_H
+#define __WINDOWS_MEMORY_H
+
+namespace NWindows {
+namespace NMemory {
+
+class CGlobal
+{
+ HGLOBAL m_MemoryHandle;
+public:
+ CGlobal(): m_MemoryHandle(NULL){};
+ ~CGlobal();
+ operator HGLOBAL() const { return m_MemoryHandle; };
+ void Attach(HGLOBAL hGlobal);
+ HGLOBAL Detach();
+ bool Alloc(UINT flags, SIZE_T size);
+ bool Free();
+ LPVOID Lock() const;
+ void Unlock() const;
+ bool ReAlloc(SIZE_T size);
+};
+
+
+class CGlobalLock
+{
+ HGLOBAL m_Global;
+ LPVOID m_Pointer;
+public:
+ LPVOID GetPointer() const { return m_Pointer; }
+ CGlobalLock(HGLOBAL hGlobal): m_Global(hGlobal)
+ {
+ m_Pointer = ::GlobalLock(hGlobal);
+ };
+ ~CGlobalLock()
+ {
+ if(m_Pointer != NULL)
+ ::GlobalUnlock(m_Global);
+ }
+};
+
+}}
+
+#endif