Renamed LOG_FUNC_FORWARD to LOG_FORWARD, added actual logging, populated all OBJECT_TYPE variables.

This commit is contained in:
PatrickvL 2016-12-11 23:39:47 +01:00
parent 0dea41a0d3
commit 7a7af0db5e
7 changed files with 116 additions and 21 deletions

View File

@ -93,10 +93,6 @@ extern thread_local std::string _logPrefix;
std::cout << msg.str(); \
} } while (0)
// LOG_FUNC_FORWARD indicates that an api is implemented by a forward to another API
#define LOG_FUNC_FORWARD(api) \
std::cout << _logPrefix << __func__ << " forwarding to "#api"...\n";
// LOG_FUNC_RESULT logs the function return result
#define LOG_FUNC_RESULT(r) \
std::cout << _logPrefix << __func__ << " returns " << r << "\n";
@ -119,14 +115,20 @@ extern thread_local std::string _logPrefix;
// Log function with one out argument
#define LOG_FUNC_ONE_ARG_OUT(arg) LOG_FUNC_BEGIN LOG_FUNC_ARG_OUT(arg) LOG_FUNC_END
// LOG_FORWARD indicates that an api is implemented by a forward to another API
#define LOG_FORWARD(api) \
do { if(g_bPrintfOn) { \
std::cout << _logPrefix << __func__ << " forwarding to "#api"...\n"; \
} } while (0)
#define LOG_IGNORED() \
do { if(g_bPrintfOn) { \
std::cout << __func__ << " ignored!\n"; \
std::cout << _logPrefix << __func__ << " ignored!\n"; \
} } while (0)
#define LOG_UNIMPLEMENTED() \
do { if(g_bPrintfOn) { \
std::cout << __func__ << " unimplemented!\n"; \
std::cout << _logPrefix << __func__ << " unimplemented!\n"; \
} } while (0)
#define RETURN(r) do { LOG_FUNC_RESULT(r) return r; } while (0)

View File

@ -89,7 +89,7 @@ XBSYSAPI EXPORTNUM(14) xboxkrnl::PVOID NTAPI xboxkrnl::ExAllocatePool
IN SIZE_T NumberOfBytes
)
{
LOG_FUNC_FORWARD("ExAllocatePoolWithTag");
LOG_FORWARD("ExAllocatePoolWithTag");
return ExAllocatePoolWithTag(NumberOfBytes, (ULONG)"enoN"); // = "None" in reverse
}
@ -118,7 +118,18 @@ XBSYSAPI EXPORTNUM(15) xboxkrnl::PVOID NTAPI xboxkrnl::ExAllocatePoolWithTag
}
// TODO : What should we initialize this to?
XBSYSAPI EXPORTNUM(16) xboxkrnl::OBJECT_TYPE xboxkrnl::ExEventObjectType = {};
XBSYSAPI EXPORTNUM(16) xboxkrnl::OBJECT_TYPE xboxkrnl::ExEventObjectType =
{
/*
ExAllocatePoolWithTag,
ExFreePool,
NULL,
NULL,
NULL,
*/
NULL, // (PVOID)FIELD_OFFSET(KEVENT, Header),
'vevE' // = first four characters of "Event" in reverse
};
// ******************************************************************
// * 0x0011 ExFreePool
@ -216,7 +227,18 @@ XBSYSAPI EXPORTNUM(21) xboxkrnl::LONGLONG FASTCALL xboxkrnl::ExInterlockedCompar
}
// TODO : What should we initialize this to?
XBSYSAPI EXPORTNUM(22) xboxkrnl::OBJECT_TYPE xboxkrnl::ExMutantObjectType = {};
XBSYSAPI EXPORTNUM(22) xboxkrnl::OBJECT_TYPE xboxkrnl::ExMutantObjectType =
{
/*
ExAllocatePoolWithTag,
ExFreePool,
NULL,
ExpDeleteMutant,
NULL,
*/
NULL, // (PVOID)FIELD_OFFSET(KMUTANT, Header),
'atuM' // = first four characters of "Mutant" in reverse
};
// ******************************************************************
// * 0x0017 ExQueryPoolBlockSize
@ -495,10 +517,32 @@ XBSYSAPI EXPORTNUM(29) xboxkrnl::NTSTATUS NTAPI xboxkrnl::ExSaveNonVolatileSetti
}
// TODO : What should we initialize this to?
XBSYSAPI EXPORTNUM(30) xboxkrnl::OBJECT_TYPE xboxkrnl::ExSemaphoreObjectType = {};
XBSYSAPI EXPORTNUM(30) xboxkrnl::OBJECT_TYPE xboxkrnl::ExSemaphoreObjectType =
{
/*
ExAllocatePoolWithTag,
ExFreePool,
NULL,
NULL,
NULL,
*/
NULL, // (PVOID)FIELD_OFFSET(KSEMAPHORE, Header),
'ameS' // = first four characters of "Semaphore" in reverse
};
// TODO : What should we initialize this to?
XBSYSAPI EXPORTNUM(31) xboxkrnl::OBJECT_TYPE xboxkrnl::ExTimerObjectType = {};
XBSYSAPI EXPORTNUM(31) xboxkrnl::OBJECT_TYPE xboxkrnl::ExTimerObjectType =
{
/*
ExAllocatePoolWithTag,
ExFreePool,
NULL,
ExpDeleteTimer,
NULL,
*/
NULL, // (PVOID)FIELD_OFFSET(KTIMER, Header),
'emiT' // = first four characters of "Timer" in reverse
};
// Source:ReactOS
XBSYSAPI EXPORTNUM(32) xboxkrnl::PLIST_ENTRY FASTCALL xboxkrnl::ExfInterlockedInsertHeadList

View File

@ -48,7 +48,18 @@ namespace xboxkrnl
#include "EmuFile.h" // For CxbxCreateSymbolicLink(), etc.
// TODO : What should we initialize this to?
XBSYSAPI EXPORTNUM(64) xboxkrnl::OBJECT_TYPE xboxkrnl::IoCompletionObjectType = {};
XBSYSAPI EXPORTNUM(64) xboxkrnl::OBJECT_TYPE xboxkrnl::IoCompletionObjectType =
{
/*
ExAllocatePoolWithTag,
ExFreePool,
NULL,
IopDeleteIoCompletion,
NULL,
*/
NULL, // &ObpDefaultObject,
'pmoC' // = first four characters of "Completion" in reverse
};
// ******************************************************************
// * 0x0042 - IoCreateFile
@ -150,10 +161,32 @@ XBSYSAPI EXPORTNUM(69) xboxkrnl::NTSTATUS NTAPI xboxkrnl::IoDeleteSymbolicLink
}
// TODO : What should we initialize this to?
XBSYSAPI EXPORTNUM(70) xboxkrnl::OBJECT_TYPE xboxkrnl::IoDeviceObjectType = {};
XBSYSAPI EXPORTNUM(70) xboxkrnl::OBJECT_TYPE xboxkrnl::IoDeviceObjectType =
{
/*
ExAllocatePoolWithTag,
ExFreePool,
NULL,
NULL,
IoParseDevice,
*/
NULL, // &ObpDefaultObject,
'iveD' // = first four characters of "Device" in reverse
};
// TODO : What should we initialize this to?
XBSYSAPI EXPORTNUM(71) xboxkrnl::OBJECT_TYPE xboxkrnl::IoFileObjectType = {};
XBSYSAPI EXPORTNUM(71) xboxkrnl::OBJECT_TYPE xboxkrnl::IoFileObjectType =
{
/*
ExAllocatePoolWithTag,
ExFreePool,
IopCloseFile,
IopDeleteFile,
IopParseFile,
*/
NULL, // (PVOID)FIELD_OFFSET(FILE_OBJECT, Event.Header),
'eliF' // = "File" in reverse
};
XBSYSAPI EXPORTNUM(90) xboxkrnl::NTSTATUS NTAPI xboxkrnl::IoDismountVolume
(

View File

@ -432,7 +432,7 @@ XBSYSAPI EXPORTNUM(149) xboxkrnl::BOOLEAN NTAPI xboxkrnl::KeSetTimer
IN PKDPC Dpc OPTIONAL
)
{
LOG_FUNC_FORWARD("KeSetTimerEx");
LOG_FORWARD("KeSetTimerEx");
// Call KeSetTimerEx with a period of zero
return KeSetTimerEx(Timer, DueTime, 0, Dpc);

View File

@ -86,7 +86,7 @@ XBSYSAPI EXPORTNUM(165) xboxkrnl::PVOID NTAPI xboxkrnl::MmAllocateContiguousMemo
IN ULONG NumberOfBytes
)
{
LOG_FUNC_FORWARD("MmAllocateContiguousMemoryEx");
LOG_FORWARD("MmAllocateContiguousMemoryEx");
return MmAllocateContiguousMemoryEx(NumberOfBytes, 0, MAXULONG_PTR, 0,
PAGE_READWRITE);

View File

@ -1165,7 +1165,7 @@ XBSYSAPI EXPORTNUM(190) xboxkrnl::NTSTATUS NTAPI xboxkrnl::NtCreateFile
IN ULONG CreateOptions
)
{
LOG_FUNC_FORWARD("IoCreateFile");
LOG_FORWARD("IoCreateFile");
return xboxkrnl::IoCreateFile(
FileHandle,
@ -1402,7 +1402,7 @@ XBSYSAPI EXPORTNUM(201) xboxkrnl::NTSTATUS NTAPI xboxkrnl::NtOpenDirectoryObject
IN POBJECT_ATTRIBUTES ObjectAttributes
)
{
LOG_FUNC_FORWARD("ObOpenObjectByName");
LOG_FORWARD("ObOpenObjectByName");
return ObOpenObjectByName(ObjectAttributes, &ObDirectoryObjectType, NULL, DirectoryHandle);
}
@ -1425,7 +1425,7 @@ XBSYSAPI EXPORTNUM(202) xboxkrnl::NTSTATUS NTAPI xboxkrnl::NtOpenFile
IN ULONG OpenOptions
)
{
LOG_FUNC_FORWARD("IoCreateFile");
LOG_FORWARD("IoCreateFile");
return xboxkrnl::IoCreateFile(
FileHandle,
@ -1450,6 +1450,11 @@ XBSYSAPI EXPORTNUM(203) xboxkrnl::NTSTATUS NTAPI xboxkrnl::NtOpenSymbolicLinkObj
IN POBJECT_ATTRIBUTES ObjectAttributes
)
{
/* TODO :
LOG_FORWARD("ObOpenObjectByName");
return ObOpenObjectByName(ObjectAttributes, &ObSymbolicLinkObjectType, NULL, LinkHandle);
*/
LOG_FUNC_BEGIN
LOG_FUNC_ARG_OUT(LinkHandle)
LOG_FUNC_ARG(ObjectAttributes)
@ -2167,7 +2172,7 @@ XBSYSAPI EXPORTNUM(233) xboxkrnl::NTSTATUS NTAPI xboxkrnl::NtWaitForSingleObject
IN PLARGE_INTEGER Timeout
)
{
LOG_FUNC_FORWARD("NtWaitForSingleObjectEx");
LOG_FORWARD("NtWaitForSingleObjectEx");
return NtWaitForSingleObjectEx(Handle, KernelMode, Alertable, Timeout);
}

View File

@ -92,7 +92,18 @@ XBSYSAPI EXPORTNUM(243) xboxkrnl::NTSTATUS NTAPI xboxkrnl::ObOpenObjectByName
XBSYSAPI EXPORTNUM(245) xboxkrnl::DWORD xboxkrnl::ObpObjectHandleTable[1] = {};
// TODO : What should we initialize this to?
XBSYSAPI EXPORTNUM(249) xboxkrnl::OBJECT_TYPE xboxkrnl::ObSymbolicLinkObjectType = {};
XBSYSAPI EXPORTNUM(249) xboxkrnl::OBJECT_TYPE xboxkrnl::ObSymbolicLinkObjectType =
{
/*
ExAllocatePoolWithTag,
ExFreePool,
NULL,
ObpDeleteSymbolicLink,
NULL,
*/
NULL, // &ObpDefaultObject,
'bmyS' // = first four characters of "SymbolicLink" in reverse
};
// ObReferenceObjectByHandle:
// Turns a handle into a kernel object pointer. The ObjectType parameter