PsChargePoolQuota と PsChargeProcessPoolQuota

Windows XP には PsChargeProcessPoolQuota という関数があるが、 2000 にはない。
afd.sys でそれぞれがコールされてるのだが、役割は同じように見えるので比較してみたところ…

PsChargePoolQuota:
  mov edi,edi
  push ebp
  mov ebp,esp
  push [ebp+10h]
  push [ebp+0Ch]
  push [ebp+08h]
  call PsChargeProcessPoolQuota
  test eax,eax
  jl L0045463C
L0042075F:
  pop ebp
  retn 000Ch
L0045463C:
  push eax
  call ExRaiseStatus
  jmp L0042075F

2000 XP
PsChargePoolQuota ExRaiseStatus
あり
返り値 viod
ExRaiseStatus
あり
返り値 viod
PsChargeProcessPoolQuota  -  ExRaiseStatusなし
のPsChargePoolQuota
返り値 Status あり

こんな感じ ・ω・
関数の完全移植になるとちょっとめんどくさい感じですね

あと、XP以降は PS_QUOTA_TYPE に PsPageFile が追加されているようですが、XPが0~2以外の値だとエラー処理を行うのに対して、2000 は未チェックで変なアドレスにアクセスしてもスルーみたいです(((・ω・)))

PsChargePoolQuota

おすすめ

コメントを残す

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