KiTpWriteUmMemory
NTSTATUS __fastcall KiTpWriteUmMemory(
PFN_WDFDRIVERERRORREPORTAPIMISSING *a1,
VOID *ToAddress,
VOID *FromAddress,
UINT64 BufferSize){
_EPROCESS *v4;
UINT64 v7;
int v9;
int v10;
INT64 v12;
INT64 v13;
__int64 NumberOfBytesRead[2];
_XSTATE_FEATURE *v15;
PFN_WDFDEVICEWDMDISPATCHPREPROCESSEDIRP *v16;
PFN_WDFDEVICEWDMDISPATCHPREPROCESSEDIRP DeviceObject;
v4 = PsInitialSystemProcess;
NumberOfBytesRead[0] = 0i64;
LODWORD(DeviceObject) = 0;
v7 = (unsigned int)BufferSize;
v16 = (PFN_WDFDEVICEWDMDISPATCHPREPROCESSEDIRP *)ToAddress;
LODWORD(v12) = 128;
v15 = (_XSTATE_FEATURE *)(unsigned int)BufferSize;
v9 = MmProtectVirtualMemory(
(PFN_WDFDRIVERERRORREPORTAPIMISSING *)PsInitialSystemProcess,
a1,
&v16,
&v15,
v12,
&DeviceObject);
if( v9 >= 0 )
{
MmCopyVirtualMemory(v4, FromAddress, (_EPROCESS *)a1, ToAddress, v7, 0, (UINT64 *)NumberOfBytesRead);
v9 = v10;
LODWORD(v13) = (_DWORD)DeviceObject;
MmProtectVirtualMemory((PFN_WDFDRIVERERRORREPORTAPIMISSING *)v4, a1, &v16, &v15, v13, &DeviceObject);
}
return v9;
}Referenced by:
KiTpWriteMemory