Alternate e697dbe9c5997e35395fe158628dd8c5209481da
for Visual Studio 2022 and Windows 11.
読み取り中…
検索中…
一致する文字列を見つけられません
VirtualMemory.cpp
[詳解]
1// ----------------------------------------------------------------------------
6
7#include "pch.h"
8#include "VirtualMemory.h"
9
10using namespace alt;
11
12// VirtualMemory1 -----------------------------------------------------
13
15{
16 _currentSize = 0;
17}
18
19LPVOID VirtualMemory1::Allocate (SIZE_T bytes, DWORD dwFlags)
20{
21 _currentSize = bytes;
22 return ::VirtualAlloc (NULL, bytes, MEM_COMMIT | MEM_RESERVE, PAGE_READWRITE);
23}
24
25LPVOID VirtualMemory1::Reallocate (LPVOID lpvMem, SIZE_T bytes, DWORD dwFlags)
26{
27 SIZE_T previousSize = _currentSize;
28 LPVOID lpvRenew = Allocate (bytes, dwFlags);
29 if (lpvRenew != NULL)
30 {
31 CopyMemory (lpvRenew, lpvMem, previousSize);
32 Free (lpvMem);
33 _currentSize = bytes;
34 }
35
36 return lpvRenew;
37}
38
39BOOL VirtualMemory1::Free (LPVOID lpvMem)
40{
41 _currentSize = 0;
42 return ::VirtualFree (lpvMem, 0, MEM_RELEASE);
43}
44
45// VirtualMemory -----------------------------------------------------
46
47LPVOID VirtualMemory::Reserve (SIZE_T size) const
48{
49 return ::VirtualAlloc (NULL, size, MEM_RESERVE, PAGE_READWRITE);
50}
51
52BOOL VirtualMemory::Release (LPVOID lpvMem) const
53{
54 return ::VirtualFree (lpvMem, 0, MEM_RELEASE);
55}
56
57LPVOID VirtualMemory::Commit (LPVOID lpvMem, SIZE_T size) const
58{
59 return ::VirtualAlloc (lpvMem, size, MEM_COMMIT, PAGE_READWRITE);
60}
61
62BOOL VirtualMemory::Decommit (LPVOID lpvMem, SIZE_T size) const
63{
64#pragma warning(push)
65#pragma warning(disable:6250)
66 return ::VirtualFree (lpvMem, size, MEM_DECOMMIT);
67#pragma warning(pop)
68}
69
70BOOL VirtualMemory::Lock (LPVOID lpvMem, SIZE_T size) const
71{
72 return ::VirtualLock (lpvMem, size);
73}
74
75BOOL VirtualMemory::Unlock (LPVOID lpvMem, SIZE_T size) const
76{
77 return ::VirtualUnlock (lpvMem, size);
78}
#define size
仮想メモリに関するWindowsAPIを集約したクラス
プリコンパイル済みヘッダー ファイルです。
virtual LPVOID APIENTRY Allocate(SIZE_T bytes, DWORD dwFlags=MEM_ZERO)
メモリの取得
APIENTRY VirtualMemory1()
コンストラクタ
virtual LPVOID APIENTRY Reallocate(LPVOID lpvMem, SIZE_T bytes, DWORD dwFlags=MEM_ZERO)
取得メモリの拡大
virtual BOOL APIENTRY Free(LPVOID lpvMem)
メモリの返却
BOOL APIENTRY Lock(LPVOID lpvMem, SIZE_T size) const
メモリのロック
BOOL APIENTRY Decommit(LPVOID lpvMem, SIZE_T size) const
確定メモリの解除
LPVOID APIENTRY Commit(LPVOID lpvMem, SIZE_T size) const
予約メモリの確定
BOOL APIENTRY Unlock(LPVOID lpvMem, SIZE_T size) const
メモリのアンロック
BOOL APIENTRY Release(LPVOID lpvMem) const
仮想メモリの予約開放
LPVOID APIENTRY Reserve(SIZE_T size) const
仮想メモリの予約
Definition: DBLibrary.h:12