我需要调用VirtualAllocEx并返回IntPtr。 我调用该函数来获取一个空地址,以便我可以在那里编写我的编解码器(这是在另一个过程中)。
如何将结果转换为UInt32,所以我最近可以用该地址调用WriteProcessMemory()?
答案 0 :(得分:2)
当你调用WriteProcessMemory时,你应该传递一个IntPtr作为地址而不是UInt32(因为WriteProcessMemory需要一个指针,而不是一个整数)。因此,您应该能够直接使用VirtualAllocEx返回的IntPtr,而无需将其转换为UInt32。
答案 1 :(得分:1)
你可以用(uint)ptr投射它我相信(如果不能很好地投射,请先尝试ptr.ToInt32()或ToInt64()。至少我不知道这种方法有什么问题,虽然没有使用它 - 但是很多。鉴于UInt32的范围比Int32大,而在非负方面则与Int64相同,因此它应该足够好了。
虽然不确定Int32在64位架构上的表现如何。我觉得很糟糕,因为IntPtr的原因是提供平台独立的方式来存储指针。
答案 2 :(得分:0)