PspApiSetCopyToSystemSpace
INT64 __stdcall PspApiSetCopyToSystemSpace(
PVOID ApiSetBaseAddress,
UINT64 ApiSetSize,
PVOID *ApiSetSection,
PVOID *ApiSetSchema){
NTSTATUS v8;
struct _DMA_ADAPTER *v9;
NTSTATUS v10;
UINT64 v11;
PVOID v12;
UINT64 v14;
UINT64 v15;
PVOID MappedBase;
LARGE_INTEGER v17;
__int64 ViewSize[2];
PVOID Section;
MappedBase = 0i64;
Section = 0i64;
ViewSize[0] = 0i64;
v17.QuadPart = ApiSetSize;
LODWORD(v15) = 0x8000000;
LODWORD(v14) = 4;
v8 = MmCreateSection(&Section, 0xF001Fui64, 0i64, &v17, v14, v15, 0i64, 0i64);
v9 = (struct _DMA_ADAPTER *)Section;
v10 = v8;
if( v8 >= 0 )
{
v10 = MmMapViewInSystemSpace(Section, &MappedBase, (UINT64 *)ViewSize);
if( v10 >= 0 )
{
v11 = ApiSetSize;
v12 = MappedBase;
memmove((UINT8 *)MappedBase, (UINT8 *)ApiSetBaseAddress, v11);
*ApiSetSection = v9;
*ApiSetSchema = v12;
}
}
if( v9 && v10 < 0 )
HalPutDmaAdapter(v9);
return(unsigned int)v10;
}Referenced by:
PspSiloLoadApiSets