#define _AMD64_
#include "wdm.h"
#include "intrin.h"
unsigned __int64 read_cr3(void) {
return __readcr3();
}
void write_cr3(unsigned __int64 Value) {
__writecr3(Value);
}
unsigned __int64 read_msr(
unsigned long Register
) {
return __readmsr(Register);
}
NTSTATUS read_msr_safe(
unsigned long Register,
unsigned __int64 *Value
) {
if (!Value) {
return STATUS_INVALID_PARAMETER;
}
__try {
*Value = __readmsr(Register);
} __except(EXCEPTION_EXECUTE_HANDLER) {
return GetExceptionCode();
}
return STATUS_SUCCESS;
}
void write_msr(
unsigned long Register,
unsigned __int64 Value
) {
__writemsr(Register, Value);
}
NTSTATUS write_msr_safe(
unsigned long Register,
unsigned __int64 Value
) {
__try {
__writemsr(Register, Value);
} __except(EXCEPTION_EXECUTE_HANDLER) {
return GetExceptionCode();
}
return STATUS_SUCCESS;
}
void invlpg(
void *Address
) {
__invlpg(Address);
}
unsigned __int64 read_cr0(void) {
return __readcr0();
}
void write_cr0(unsigned __int64 Value) {
__writecr0(Value);
}
void* AddressOfReturnAddress() {
_AddressOfReturnAddress();
}