[NTOSKRNK]

Implement KiCallbackReturnHandler

svn path=/trunk/; revision=61040
This commit is contained in:
Timo Kreuzer 2013-11-18 17:23:04 +00:00
parent 6f0131873e
commit d9d963a62f

View file

@ -236,7 +236,7 @@ KiNpxHandler(IN PKTRAP_FRAME TrapFrame,
IN PFX_SAVE_AREA SaveArea)
{
ULONG Cr0, Mask, Error, ErrorOffset, DataOffset;
/* Check for VDM trap */
ASSERT((KiVdmTrap(TrapFrame)) == FALSE);
@ -245,7 +245,7 @@ KiNpxHandler(IN PKTRAP_FRAME TrapFrame,
{
/* Kernel might've tripped a delayed error */
SaveArea->Cr0NpxState |= CR0_TS;
/* Only valid if it happened during a restore */
//if ((PVOID)TrapFrame->Eip == FrRestore)
{
@ -1455,7 +1455,16 @@ VOID
FASTCALL
KiCallbackReturnHandler(IN PKTRAP_FRAME TrapFrame)
{
UNIMPLEMENTED_DBGBREAK();
NTSTATUS Status;
/* Pass the register parameters to NtCallbackReturn.
Result pointer is in ecx, result length in edx, status in eax */
Status = NtCallbackReturn((PVOID)TrapFrame->Ecx,
TrapFrame->Edx,
TrapFrame->Eax);
/* If we got here, something went wrong. Return an error to the caller */
KiServiceExit(TrapFrame, Status);
}
DECLSPEC_NORETURN
@ -1567,7 +1576,7 @@ KiSystemCall(IN PKTRAP_FRAME TrapFrame,
/* Decode the system call number */
Offset = (SystemCallNumber >> SERVICE_TABLE_SHIFT) & SERVICE_TABLE_MASK;
Id = SystemCallNumber & SERVICE_NUMBER_MASK;
/* Get descriptor table */
DescriptorTable = (PVOID)((ULONG_PTR)Thread->ServiceTable + Offset);