k32getprocessmemoryinfo kernel32 dll: Kapsamlı Bir Genel Bakış
Giriş
k32getprocessmemoryinfo, Windows işletim sistemlerinde çalışan bir işlemin bellek bilgilerini almak için kullanılan bir işlevdir. Bu işlev, bir işlemin bellek kullanımını izlemek, bellek sızıntılarını tespit etmek ve bellek hatalarını gidermek gibi çeşitli amaçlar için kullanılabilir.
İşlev Sözdizimi
k32getprocessmemoryinfo işlevi aşağıdaki sözdizimine sahiptir:
BOOL k32getprocessmemoryinfo(
HANDLE hProcess,
PMEMORY_BASIC_INFORMATION pmbi,
DWORD cb
);
- hProcess: İşlemin tutacağı.
- pmbi: Bellek bilgileri alınacak bellek bölgesinin bilgilerini içeren bir MEMORY_BASIC_INFORMATION yapısı.
- cb: MEMORY_BASIC_INFORMATION yapısının boyutu.
Geri Dönüş Değeri
İşlev başarılı olursa TRUE, başarısız olursa FALSE döndürür.
Parametreler
- hProcess: İşlemin tutacağı. Bu tutamaç, OpenProcess işlevi kullanılarak elde edilebilir.
-
pmbi: Bellek bilgileri alınacak bellek bölgesinin bilgilerini içeren bir MEMORY_BASIC_INFORMATION yapısı. Bu yapı, aşağıdaki üyelere sahiptir:
- BaseAddress: Bellek bölgesinin başlangıç adresi.
- AllocationBase: Bellek bölgesinin tahsis edildiği adres.
- AllocationProtect: Bellek bölgesinin koruma öznitelikleri.
- RegionSize: Bellek bölgesinin boyutu.
- State: Bellek bölgesinin durumu.
- Protect: Bellek bölgesinin koruma öznitelikleri.
- Type: Bellek bölgesinin türü.
-
cb: MEMORY_BASIC_INFORMATION yapısının boyutu. Bu değer, sizeof(MEMORY_BASIC_INFORMATION) olarak ayarlanmalıdır.
Örnek Kullanım
Aşağıdaki kod örneği, bir işlemin bellek kullanımını izlemek için k32getprocessmemoryinfo işlevini kullanmaktadır:
“`
include
include
int main()
{
HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, FALSE, GetCurrentProcessId());
if (hProcess == NULL)
{
printf(“OpenProcess failed: %d\n”, GetLastError());
return 1;
}
MEMORY_BASIC_INFORMATION mbi;
DWORD cb = sizeof(mbi);
while (VirtualQueryEx(hProcess, NULL, &mbi, cb, &cb))
{
printf("BaseAddress: %p\n", mbi.BaseAddress);
printf("AllocationBase: %p\n", mbi.AllocationBase);
printf("AllocationProtect: %x\n", mbi.AllocationProtect);
printf("RegionSize: %x\n", mbi.RegionSize);
printf("State: %x\n", mbi.State);
printf("Protect: %x\n", mbi.Protect);
printf("Type: %x\n", mbi.Type);
cb = sizeof(mbi);
}
CloseHandle(hProcess);
return 0;
}
“`
Dosya Bilgileri
- Dosya Adı: kernel32.dll
- Üretici: Microsoft Corporation
- Ücretsiz: Evet
- Uyumlu İşletim Sistemleri: Windows XP ve üzeri
- Dosya Boyutu: 1.2 MB
İndirme Linki