すっきりした。
色々書き直したら SysInfo のこーどよりずっとすっきりしました。
__readmsr() が使えるのは便利ですねぇ。
NTSTATUS
ReadMSR( ULONG IoctlCode,
void *lpInBuffer,
ULONG nInBufferSize,
void *lpOutBuffer,
ULONG nOutBufferSize,
ULONG* lpBytesReturned)
{
#ifndef _NT4
try{
#endif
ULONGLONG data = __readmsr(*(ULONG*)lpInBuffer);
memcpy((PULONG)lpOutBuffer, &data, 8);
*lpBytesReturned = 8;
return STATUS_SUCCESS;
#ifndef _NT4
}
except(EXCEPTION_EXECUTE_HANDLER)
{
*lpBytesReturned = 0;
return STATUS_UNSUCCESSFUL;
}
#endif
}
最近のコメント