12 #define SWAPMEM_FLAG_ASYNC_CALL 0x00000001 13 #define SWAPMEM_FLAG_ENTRY_XD 0x00000002 19 #define SWAPMEM_OPT_NO_FAULT 0x00000001 20 #define SWAPMEM_OPT_UM_FAULT 0x00000002 22 #define SWAPMEM_OPT_KM_FAULT 0x00000004 26 #define SWAPMEM_OPT_BP_FAULT 0x00000010 28 #define SWAPMEM_OPT_RW_FAULT 0x00000020 30 #define SWAPMEM_OPT_NO_DUPS 0x80000000 120 _In_ void *Transaction
143 #endif // _SWAPMEM_H_
INTSTATUS IntSwapMemRemoveTransactionsForVaSpace(QWORD Cr3)
Remove all transactions initiated for a virtual address space.
INTSTATUS IntSwapMemReadData(QWORD Cr3, QWORD VirtualAddress, DWORD Length, DWORD Options, void *Context, DWORD ContextTag, PFUNC_PagesReadCallback Callback, PFUNC_PreInjectCallback PreInject, void **SwapHandle)
Reads a region of guest virtual memory, and calls the indicated callback when all the data is availab...
void IntSwapMemCancelPendingPF(QWORD VirtualAddress)
Cancel a pending PF.
int INTSTATUS
The status data type.
INTSTATUS(* PFUNC_PagesReadCallback)(void *Context, QWORD Cr3, QWORD VirtualAddress, QWORD PhysicalAddress, void *Data, DWORD DataSize, DWORD Flags)
Called when all the required data is available.
void IntSwapMemDump(void)
Dump all active transactions & pages.
INTSTATUS IntSwapMemInit(void)
Init the swapmem system.
INTSTATUS IntSwapMemUnInit(void)
Uninit the swapmem system.
INTSTATUS IntSwapMemRemoveTransaction(void *Transaction)
Remove a transaction.
INTSTATUS IntSwapMemInjectPendingPF(void)
Inject a PF for a pending page.
#define _In_reads_bytes_(expr)
INTSTATUS(* PFUNC_PreInjectCallback)(void *Context, QWORD Cr3, QWORD VirtualAddress)
Called before injecting a PF inside the guest.
void IntSwapMemReinjectFailedPF(void)
Reinject timed-out PFs.