CmFcpManagerCreateSectionFromBuffer
INT64 __stdcall CmFcpManagerCreateSectionFromBuffer(VOID *Src, size_t Size, INT64 a3){
INT64 v3;
int Section;
UINT64 v7;
PVOID v8;
__int64 v9;
PADAPTER_OBJECT DmaAdapter[2];
__int64 v12;
PVOID MappedBase[2];
__int64 v14;
__int64 v15;
v12 = 0i64;
v14 = 0i64;
*(_OWORD *)DmaAdapter = 0i64;
*(_OWORD *)MappedBase = 0i64;
Section = CmFcpManagerCreateSection((_LARGE_INTEGER)Size, a3, v3, DmaAdapter);
if( Section < 0 || (Section = CmFcpMapSection(DmaAdapter, MappedBase), Section < 0) )
{
v8 = MappedBase[1];
}
else
{
v7 = Size;
v8 = MappedBase[1];
memmove((UINT8 *)MappedBase[1], (UINT8 *)Src, v7);
Section = 0;
v9 = v12;
*(_OWORD *)v15 = *(_OWORD *)DmaAdapter;
*(_QWORD *)(v15 + 16) = v9;
*(_OWORD *)DmaAdapter = 0i64;
}
if( v8 )
MmUnmapViewInSystemSpace(v8);
if( DmaAdapter[1] )
HalPutDmaAdapter(DmaAdapter[1]);
return(unsigned int)Section;
}Referenced by:
CmFcManagerStartRuntimePhase