mirror of
https://github.com/momo5502/emulator.git
synced 2026-01-11 16:46:16 +00:00
Added info class handling (#149)
info_classes ProcessDeviceMap, ProcessEnableAlignmentFaultFixup in handle_NtQueryInformationProcess and ThreadTimes in handle_NtQueryInformationThread.
This commit is contained in:
@@ -1397,6 +1397,44 @@ namespace
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
if (info_class == ProcessDeviceMap)
|
||||
{
|
||||
c.win_emu.log.info("Handling ProcessDeviceMap request.\n");
|
||||
|
||||
if (return_length)
|
||||
{
|
||||
return_length.write(sizeof(EmulatorTraits<Emu64>::PVOID));
|
||||
}
|
||||
|
||||
if (process_information_length != sizeof(EmulatorTraits<Emu64>::PVOID))
|
||||
{
|
||||
return STATUS_BUFFER_OVERFLOW;
|
||||
}
|
||||
|
||||
const emulator_object<EmulatorTraits<Emu64>::PVOID> info{c.emu, process_information};
|
||||
info.write(0); // NULL pointer
|
||||
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
if (info_class == ProcessEnableAlignmentFaultFixup)
|
||||
{
|
||||
if (return_length)
|
||||
{
|
||||
return_length.write(sizeof(BOOLEAN));
|
||||
}
|
||||
|
||||
if (process_information_length != sizeof(BOOLEAN))
|
||||
{
|
||||
return STATUS_BUFFER_OVERFLOW;
|
||||
}
|
||||
|
||||
const emulator_object<BOOLEAN> info{c.emu, process_information};
|
||||
info.write(FALSE); // Alignment fault fixup is disabled
|
||||
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
if (info_class == ProcessDebugObjectHandle)
|
||||
{
|
||||
if (return_length)
|
||||
@@ -1584,6 +1622,24 @@ namespace
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
if (info_class == ThreadTimes)
|
||||
{
|
||||
if (return_length)
|
||||
{
|
||||
return_length.write(sizeof(KERNEL_USER_TIMES));
|
||||
}
|
||||
|
||||
if (thread_information_length != sizeof(KERNEL_USER_TIMES))
|
||||
{
|
||||
return STATUS_BUFFER_OVERFLOW;
|
||||
}
|
||||
|
||||
const emulator_object<KERNEL_USER_TIMES> info{c.emu, thread_information};
|
||||
info.write(KERNEL_USER_TIMES{});
|
||||
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
c.win_emu.log.error("Unsupported thread query info class: %X\n", info_class);
|
||||
c.emu.stop();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user