/// <summary> /// Allocates a block of memory in the target process. /// </summary> /// <param name="_hProcess">Handle to the process in which memory will be allocated.</param> /// <param name="_bytesCount">Number of bytes to be allocated. Default is 0x1000.</param> /// <param name="_allocationType">The type of memory allocation. See <see cref="OnyxNative.MemoryAllocType" /></param> /// <param name="_protectType"> /// The memory protection for the region of pages to be allocated. If the pages are being /// committed, you can specify any one of the <see cref="OnyxNative.MemoryProtectType" /> constants. /// </param> /// <returns>Returns zero on failure, or the base address of the allocated block of memory on success.</returns> public static IntPtr AllocateMemory(IntPtr _hProcess, uint _bytesCount, uint _allocationType, uint _protectType) { var result = OnyxNative.VirtualAllocEx(_hProcess, IntPtr.Zero, _bytesCount, _allocationType, _protectType); if (result == IntPtr.Zero) { throw new Win32Exception(Marshal.GetLastWin32Error()); } return(result); }