C# Only part of a ReadProcessMemory or WriteProcessMemory request was completed during Process.Kill()

前端 未结 3 689
谎友^
谎友^ 2020-12-05 18:45

I have been researching this issue pretty extensively and cannot seem to find an answer.

I know that the Only part of a ReadProcessMemory or WriteProcessMemory

3条回答
  •  醉酒成梦
    2020-12-05 19:15

    As detailed in the comments of the MSDN page for Process.Modules and this thread there is a known issue in Process.Modules when enumerating 32 bit processes from a 64 bit process and visa-versa:

    Internally .NET's Process.Modules is using function EnumProcessModules from PSAPI.dll. This function has a known issue that it cannot work across 32/64 bit process boundary. Therefore enumerating another 64-bit process from 32-bit process or vice versa doesn't work correctly.

    The solution seems to be to use the EnumProcessModulesEx function, (which must be called via P/Invoke), however this function is only available on later versions of Windows.

    We fixed this issue by adding a new function called EnumProcessModulesEx to PSAPI.dll (http://msdn2.microsoft.com/en-us/library/ms682633.aspx), but we currently cannot use it in this case:

    • it only works on Windows Vista or Windows Server 2008
    • currently .NET 2.0 Framework don't have a service pack or hotfix to make Process.Modules use this new API

提交回复
热议问题