assert_unhandled_case on ObReferenceObjectByHandle.

This commit is contained in:
Ben Vanik 2015-02-02 22:33:15 -08:00
parent 05f008d6ce
commit c33613b2f8
2 changed files with 6 additions and 1 deletions

View File

@ -508,6 +508,7 @@ uint64_t ResolveFunctionAddress(void* raw_context, uint64_t target_address) {
};
#pragma pack(pop)
static_assert_size(Asm, kICSlotSize);
// TODO(benvanik): quick check table is full (so we don't have to enum slots)
// The return address points to ReloadRCX work after the call.
// To get the top of the table, look back a ways.
uint64_t table_start = return_address - 12 - kICSlotSize * kICSlotCount;

View File

@ -35,13 +35,17 @@ SHIM_CALL ObReferenceObjectByHandle_shim(PPCContext* ppc_state,
// TODO(benvanik): verify type with object_type_ptr
// TODO(benvanik): get native value, if supported.
uint32_t native_ptr = 0xDEADF00D;
uint32_t native_ptr;
switch (object_type_ptr) {
case 0xD01BBEEF: // ExThreadObjectType
{
XThread* thread = (XThread*)object;
native_ptr = thread->thread_state();
} break;
default:
assert_unhandled_case(object_type_ptr);
native_ptr = 0xDEADF00D;
break;
}
if (out_object_ptr) {