NtQueryVirtualMemory を調べてみた

Windows 2003 Server から実装された  QueryWorkingSetEx 関数

 次はこれ、内部的に、ntdll.dll の関数 NtQueryVirtualMemory の第2パラメータを4にしてコールしてるだけなので
Windows 2000に実装できないか調べてみた。

第2引数は MEMORY_INFORMATION_CLASS なのだが、Microsoft の公式ドキュメントだと

typedef enum _MEMORY_INFORMATION_CLASS {
    MemoryBasicInformation
} MEMORY_INFORMATION_CLASS;

としか書いてなくて使い物にならない。

Development | www.reactos.org

{
 MemoryBasicInformation, /* 0 */
 MemoryWorkingSetList, /* 1 */
 MemorySectionName, /* 2 */
 MemoryBasicVlmInformation, /* 3 */
 MemoryWorkingSetExList /* 4 */
} MEMORY_INFORMATION_CLASS;

実際はこんな感じ

NTOSKRNL.EXE を逆アセンブルしてみたところ、

Windows 2000 SP4でサポートしてるのは 0, 1, 2
Windows XP SP3でサポートしてるのは 0, 1, 2, 3
Windows Server 2003 が 0, 1, 2, 3, 4

なので、残念ながら、直接互換コードで拾ってくるのは無理らしい

おすすめ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です