반응형
LPVOID VirtualAllocEx(HANDLE hProcess, LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect);
VirtualAllocEx 함수는 특정 프로세스의 가상 주소 공간 내에서 메모리 영역의 상태를
변경, 할당, 해제하고, 할당하는 메모리를 0으로 초기화한다.
hProcess
특정 프로세스의 핸들이며 이 프로세스의 가상 주소 공간 안에 메모리 영역을 할당한다.
이 핸들은 반드시 PROCESS_VM_OPERTATION 권한을 가지고 있어야한다.
권한에 대한 자세한 정보는 MSDN 에서 확인할 수 있다.
lpAddress
할당할 페이지 영역에 대해 시작주소를 지정하는 포인터이다.
lpAddress 가 NULL 이면 비어있는 메모리공간에 자동으로 할당된다.
dwSize
할당할 메모리 영역의 BYTE 단위 크기이다.
lpAddress가 NULL 이라면 dwSize를 다음페이지의 경계까지 반올림한다.
lpAddress가 NULL 이 아니라면 lpAddress + dwSize 까지의 범위에서
하나 이상의 바이트가 포함된 모든 페이지를 할당한다.
flAllocationType
메모리 할당 타입을 의미한다. 이 값은 반드시 아래의 값들중 하나를 가져야한다.
- MEM_COMMIT
- MEM_RESERVE
- MEM_RESET
- MEM_RESET_UNDO
- MEM_LARGE_PAGES
- MEM_PHYSICAL
- MEM_TOP_DOWN
flProtect
할당된 페이지에 대한 메모리 보호이다.
페이지를 할당하는 경우 메모리 보호 상수 중 하나를 지정할 수 있다.
VirtualAllocEx 함수가 정상적으로 실행을 완료한다면 할당된 페이지 영역의 기본주소를 반환한다.
실패한다면 NULL을 반환하며 GetLastError 함수를 통해 실패에 대한 상세정보를 확인할 수 있다.
Example
LPVOID pBuf = VirtualAllocEx(hProcess, NULL, sizeof(int), MEM_COMMIT, PAGE_READWRITE);
반응형
'프로그래밍 > WinAPI' 카테고리의 다른 글
GetProcAddress 함수 (0) | 2020.09.05 |
---|---|
GetModuleHandleW 함수 (0) | 2020.09.05 |
WriteProcessMemory 함수 (0) | 2020.09.05 |
OpenProcess 함수 (0) | 2020.09.05 |
STATSTG Structure (0) | 2020.07.25 |