krnl386: Use the magic format string prefix for relay traces.

Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
Alexandre Julliard 2017-11-25 11:47:17 +01:00
parent 822e142403
commit 1729cc05af
5 changed files with 67 additions and 78 deletions

View file

@ -558,7 +558,7 @@ static LONG WINAPI exception_handler(EXCEPTION_POINTERS *eptr)
switch(rec->ExceptionCode) { switch(rec->ExceptionCode) {
case EXCEPTION_VM86_INTx: case EXCEPTION_VM86_INTx:
TRACE_(relay)("Call DOS int 0x%02x ret=%04x:%04x\n" TRACE_(relay)("\1Call DOS int 0x%02x ret=%04x:%04x\n"
" eax=%08x ebx=%08x ecx=%08x edx=%08x esi=%08x edi=%08x\n" " eax=%08x ebx=%08x ecx=%08x edx=%08x esi=%08x edi=%08x\n"
" ebp=%08x esp=%08x ds=%04x es=%04x fs=%04x gs=%04x flags=%08x\n", " ebp=%08x esp=%08x ds=%04x es=%04x fs=%04x gs=%04x flags=%08x\n",
arg, context->SegCs, context->Eip, arg, context->SegCs, context->Eip,
@ -566,7 +566,7 @@ static LONG WINAPI exception_handler(EXCEPTION_POINTERS *eptr)
context->Ebp, context->Esp, context->SegDs, context->SegEs, context->SegFs, context->SegGs, context->Ebp, context->Esp, context->SegDs, context->SegEs, context->SegFs, context->SegGs,
context->EFlags ); context->EFlags );
ret = DOSVM_EmulateInterruptRM( context, arg ); ret = DOSVM_EmulateInterruptRM( context, arg );
TRACE_(relay)("Ret DOS int 0x%02x ret=%04x:%04x\n" TRACE_(relay)("\1Ret DOS int 0x%02x ret=%04x:%04x\n"
" eax=%08x ebx=%08x ecx=%08x edx=%08x esi=%08x edi=%08x\n" " eax=%08x ebx=%08x ecx=%08x edx=%08x esi=%08x edi=%08x\n"
" ebp=%08x esp=%08x ds=%04x es=%04x fs=%04x gs=%04x flags=%08x\n", " ebp=%08x esp=%08x ds=%04x es=%04x fs=%04x gs=%04x flags=%08x\n",
arg, context->SegCs, context->Eip, arg, context->SegCs, context->Eip,

View file

@ -261,7 +261,7 @@ static void DOSVM_PushFlags( CONTEXT *context, BOOL islong, BOOL isstub )
*/ */
BOOL DOSVM_EmulateInterruptPM( CONTEXT *context, BYTE intnum ) BOOL DOSVM_EmulateInterruptPM( CONTEXT *context, BYTE intnum )
{ {
TRACE_(relay)("Call DOS int 0x%02x ret=%04x:%08x\n" TRACE_(relay)("\1Call DOS int 0x%02x ret=%04x:%08x\n"
" eax=%08x ebx=%08x ecx=%08x edx=%08x\n" " eax=%08x ebx=%08x ecx=%08x edx=%08x\n"
" esi=%08x edi=%08x ebp=%08x esp=%08x\n" " esi=%08x edi=%08x ebp=%08x esp=%08x\n"
" ds=%04x es=%04x fs=%04x gs=%04x ss=%04x flags=%08x\n", " ds=%04x es=%04x fs=%04x gs=%04x ss=%04x flags=%08x\n",
@ -450,7 +450,7 @@ void DOSVM_HardwareInterruptPM( CONTEXT *context, BYTE intnum )
*/ */
BOOL DOSVM_EmulateInterruptRM( CONTEXT *context, BYTE intnum ) BOOL DOSVM_EmulateInterruptRM( CONTEXT *context, BYTE intnum )
{ {
TRACE_(relay)("Call DOS int 0x%02x ret=%04x:%08x\n" TRACE_(relay)("\1Call DOS int 0x%02x ret=%04x:%08x\n"
" eax=%08x ebx=%08x ecx=%08x edx=%08x\n" " eax=%08x ebx=%08x ecx=%08x edx=%08x\n"
" esi=%08x edi=%08x ebp=%08x esp=%08x\n" " esi=%08x edi=%08x ebp=%08x esp=%08x\n"
" ds=%04x es=%04x fs=%04x gs=%04x ss=%04x flags=%08x\n", " ds=%04x es=%04x fs=%04x gs=%04x ss=%04x flags=%08x\n",

View file

@ -446,7 +446,7 @@ int relay_call_from_16( void *entry_point, unsigned char *args16, CONTEXT *conte
if (!TRACE_ON(relay) || !RELAY_ShowDebugmsgRelay( module, ordinal, func )) if (!TRACE_ON(relay) || !RELAY_ShowDebugmsgRelay( module, ordinal, func ))
return relay_call_from_16_no_debug( entry_point, args16, context, call ); return relay_call_from_16_no_debug( entry_point, args16, context, call );
DPRINTF( "%04x:Call %s.%d: %s(",GetCurrentThreadId(), module, ordinal, func ); TRACE( "\1Call %s.%d: %s(", module, ordinal, func );
/* look for the ret instruction */ /* look for the ret instruction */
for (j = 0; j < sizeof(call->ret)/sizeof(call->ret[0]); j++) for (j = 0; j < sizeof(call->ret)/sizeof(call->ret[0]); j++)
@ -459,43 +459,42 @@ int relay_call_from_16( void *entry_point, unsigned char *args16, CONTEXT *conte
int type = (call->arg_types[i / 10] >> (3 * (i % 10))) & 7; int type = (call->arg_types[i / 10] >> (3 * (i % 10))) & 7;
if (type == ARG_NONE) break; if (type == ARG_NONE) break;
if (i) DPRINTF( "," ); if (i) TRACE( "," );
switch(type) switch(type)
{ {
case ARG_WORD: case ARG_WORD:
DPRINTF( "%04x", *(WORD *)args16 ); TRACE( "%04x", *(WORD *)args16 );
args32[nb_args] = *(WORD *)args16; args32[nb_args] = *(WORD *)args16;
args16 += sizeof(WORD); args16 += sizeof(WORD);
break; break;
case ARG_SWORD: case ARG_SWORD:
DPRINTF( "%04x", *(WORD *)args16 ); TRACE( "%04x", *(WORD *)args16 );
args32[nb_args] = *(short *)args16; args32[nb_args] = *(short *)args16;
args16 += sizeof(WORD); args16 += sizeof(WORD);
break; break;
case ARG_LONG: case ARG_LONG:
DPRINTF( "%08x", *(int *)args16 ); TRACE( "%08x", *(int *)args16 );
args32[nb_args] = *(int *)args16; args32[nb_args] = *(int *)args16;
args16 += sizeof(int); args16 += sizeof(int);
break; break;
case ARG_PTR: case ARG_PTR:
DPRINTF( "%04x:%04x", *(WORD *)(args16+2), *(WORD *)args16 ); TRACE( "%04x:%04x", *(WORD *)(args16+2), *(WORD *)args16 );
args32[nb_args] = (int)MapSL( *(SEGPTR *)args16 ); args32[nb_args] = (int)MapSL( *(SEGPTR *)args16 );
args16 += sizeof(SEGPTR); args16 += sizeof(SEGPTR);
break; break;
case ARG_STR: case ARG_STR:
DPRINTF( "%08x %s", *(int *)args16, TRACE( "%08x %s", *(int *)args16, debugstr_a( MapSL(*(SEGPTR *)args16 )));
debugstr_a( MapSL(*(SEGPTR *)args16 )));
args32[nb_args] = (int)MapSL( *(SEGPTR *)args16 ); args32[nb_args] = (int)MapSL( *(SEGPTR *)args16 );
args16 += sizeof(int); args16 += sizeof(int);
break; break;
case ARG_SEGSTR: case ARG_SEGSTR:
DPRINTF( "%04x:%04x %s", *(WORD *)(args16+2), *(WORD *)args16, TRACE( "%04x:%04x %s", *(WORD *)(args16+2), *(WORD *)args16,
debugstr_a( MapSL(*(SEGPTR *)args16 )) ); debugstr_a( MapSL(*(SEGPTR *)args16 )) );
args32[nb_args] = *(SEGPTR *)args16; args32[nb_args] = *(SEGPTR *)args16;
args16 += sizeof(SEGPTR); args16 += sizeof(SEGPTR);
break; break;
case ARG_VARARG: case ARG_VARARG:
DPRINTF( "..." ); TRACE( "..." );
args32[nb_args] = (int)args16; args32[nb_args] = (int)args16;
break; break;
default: default:
@ -512,43 +511,42 @@ int relay_call_from_16( void *entry_point, unsigned char *args16, CONTEXT *conte
int type = (call->arg_types[i / 10] >> (3 * (i % 10))) & 7; int type = (call->arg_types[i / 10] >> (3 * (i % 10))) & 7;
if (type == ARG_NONE) break; if (type == ARG_NONE) break;
if (i) DPRINTF( "," ); if (i) TRACE( "," );
switch(type) switch(type)
{ {
case ARG_WORD: case ARG_WORD:
args16 -= sizeof(WORD); args16 -= sizeof(WORD);
args32[nb_args] = *(WORD *)args16; args32[nb_args] = *(WORD *)args16;
DPRINTF( "%04x", *(WORD *)args16 ); TRACE( "%04x", *(WORD *)args16 );
break; break;
case ARG_SWORD: case ARG_SWORD:
args16 -= sizeof(WORD); args16 -= sizeof(WORD);
args32[nb_args] = *(short *)args16; args32[nb_args] = *(short *)args16;
DPRINTF( "%04x", *(WORD *)args16 ); TRACE( "%04x", *(WORD *)args16 );
break; break;
case ARG_LONG: case ARG_LONG:
args16 -= sizeof(int); args16 -= sizeof(int);
args32[nb_args] = *(int *)args16; args32[nb_args] = *(int *)args16;
DPRINTF( "%08x", *(int *)args16 ); TRACE( "%08x", *(int *)args16 );
break; break;
case ARG_PTR: case ARG_PTR:
args16 -= sizeof(SEGPTR); args16 -= sizeof(SEGPTR);
args32[nb_args] = (int)MapSL( *(SEGPTR *)args16 ); args32[nb_args] = (int)MapSL( *(SEGPTR *)args16 );
DPRINTF( "%04x:%04x", *(WORD *)(args16+2), *(WORD *)args16 ); TRACE( "%04x:%04x", *(WORD *)(args16+2), *(WORD *)args16 );
break; break;
case ARG_STR: case ARG_STR:
args16 -= sizeof(int); args16 -= sizeof(int);
args32[nb_args] = (int)MapSL( *(SEGPTR *)args16 ); args32[nb_args] = (int)MapSL( *(SEGPTR *)args16 );
DPRINTF( "%08x %s", *(int *)args16, TRACE( "%08x %s", *(int *)args16, debugstr_a( MapSL(*(SEGPTR *)args16 )));
debugstr_a( MapSL(*(SEGPTR *)args16 )));
break; break;
case ARG_SEGSTR: case ARG_SEGSTR:
args16 -= sizeof(SEGPTR); args16 -= sizeof(SEGPTR);
args32[nb_args] = *(SEGPTR *)args16; args32[nb_args] = *(SEGPTR *)args16;
DPRINTF( "%04x:%04x %s", *(WORD *)(args16+2), *(WORD *)args16, TRACE( "%04x:%04x %s", *(WORD *)(args16+2), *(WORD *)args16,
debugstr_a( MapSL(*(SEGPTR *)args16 )) ); debugstr_a( MapSL(*(SEGPTR *)args16 )) );
break; break;
case ARG_VARARG: case ARG_VARARG:
DPRINTF( "..." ); TRACE( "..." );
args32[nb_args] = (int)args16; args32[nb_args] = (int)args16;
break; break;
default: default:
@ -557,16 +555,15 @@ int relay_call_from_16( void *entry_point, unsigned char *args16, CONTEXT *conte
} }
} }
DPRINTF( ") ret=%04x:%04x ds=%04x\n", frame->cs, frame->ip, frame->ds );
if (!j) /* register function */ if (!j) /* register function */
{ {
args32[nb_args++] = (int)context; args32[nb_args++] = (int)context;
DPRINTF(" AX=%04x BX=%04x CX=%04x DX=%04x SI=%04x DI=%04x ES=%04x EFL=%08x\n", TRACE( ") ret=%04x:%04x ax=%04x bx=%04x cx=%04x dx=%04x si=%04x di=%04x ds=%04x es=%04x efl=%08x\n",
(WORD)context->Eax, (WORD)context->Ebx, (WORD)context->Ecx, frame->cs, frame->ip, (WORD)context->Eax, (WORD)context->Ebx, (WORD)context->Ecx,
(WORD)context->Edx, (WORD)context->Esi, (WORD)context->Edi, (WORD)context->Edx, (WORD)context->Esi, (WORD)context->Edi, (WORD)context->SegDs,
(WORD)context->SegEs, context->EFlags ); (WORD)context->SegEs, context->EFlags );
} }
else TRACE( ") ret=%04x:%04x ds=%04x\n", frame->cs, frame->ip, frame->ds );
SYSLEVEL_CheckNotLevel( 2 ); SYSLEVEL_CheckNotLevel( 2 );
@ -574,24 +571,22 @@ int relay_call_from_16( void *entry_point, unsigned char *args16, CONTEXT *conte
SYSLEVEL_CheckNotLevel( 2 ); SYSLEVEL_CheckNotLevel( 2 );
DPRINTF( "%04x:Ret %s.%d: %s() ",GetCurrentThreadId(), module, ordinal, func ); TRACE( "\1Ret %s.%d: %s() ", module, ordinal, func );
if (!j) /* register function */ if (!j) /* register function */
{ {
DPRINTF("retval=none ret=%04x:%04x ds=%04x\n", TRACE( "retval=none ret=%04x:%04x ax=%04x bx=%04x cx=%04x dx=%04x si=%04x di=%04x ds=%04x es=%04x efl=%08x\n",
(WORD)context->SegCs, LOWORD(context->Eip), (WORD)context->SegDs); (WORD)context->SegCs, LOWORD(context->Eip), (WORD)context->Eax, (WORD)context->Ebx,
DPRINTF(" AX=%04x BX=%04x CX=%04x DX=%04x SI=%04x DI=%04x ES=%04x EFL=%08x\n", (WORD)context->Ecx, (WORD)context->Edx, (WORD)context->Esi, (WORD)context->Edi,
(WORD)context->Eax, (WORD)context->Ebx, (WORD)context->Ecx, (WORD)context->SegDs, (WORD)context->SegEs, context->EFlags );
(WORD)context->Edx, (WORD)context->Esi, (WORD)context->Edi,
(WORD)context->SegEs, context->EFlags );
} }
else else
{ {
frame = CURRENT_STACK16; /* might have be changed by the entry point */ frame = CURRENT_STACK16; /* might have be changed by the entry point */
if (j == 1) /* 16-bit return sequence */ if (j == 1) /* 16-bit return sequence */
DPRINTF( "retval=%04x ret=%04x:%04x ds=%04x\n", TRACE( "retval=%04x ret=%04x:%04x ds=%04x\n",
ret_val & 0xffff, frame->cs, frame->ip, frame->ds ); ret_val & 0xffff, frame->cs, frame->ip, frame->ds );
else else
DPRINTF( "retval=%08x ret=%04x:%04x ds=%04x\n", TRACE( "retval=%08x ret=%04x:%04x ds=%04x\n",
ret_val, frame->cs, frame->ip, frame->ds ); ret_val, frame->cs, frame->ip, frame->ds );
} }
return ret_val; return ret_val;

View file

@ -289,20 +289,20 @@ static void WINAPI SNOOP16_Entry(FARPROC proc, LPBYTE args, CONTEXT *context) {
context->SegCs = HIWORD(fun->origfun); context->SegCs = HIWORD(fun->origfun);
DPRINTF("%04x:CALL %s.%d: %s(",GetCurrentThreadId(), dll->name,ordinal,fun->name); TRACE("\1CALL %s.%d: %s(", dll->name, ordinal, fun->name);
if (fun->nrofargs>0) { if (fun->nrofargs>0) {
max = fun->nrofargs; max = fun->nrofargs;
if (max>16) max=16; if (max>16) max=16;
for (i=max;i--;) for (i=max;i--;)
DPRINTF("%04x%s",*(WORD*)((char *) MapSL( MAKESEGPTR(context->SegSs,LOWORD(context->Esp)) )+8+sizeof(WORD)*i),i?",":""); TRACE("%04x%s",*(WORD*)((char *) MapSL( MAKESEGPTR(context->SegSs,LOWORD(context->Esp)) )+8+sizeof(WORD)*i),i?",":"");
if (max!=fun->nrofargs) if (max!=fun->nrofargs)
DPRINTF(" ..."); TRACE(" ...");
} else if (fun->nrofargs<0) { } else if (fun->nrofargs<0) {
DPRINTF("<unknown, check return>"); TRACE("<unknown, check return>");
ret->args = HeapAlloc(GetProcessHeap(),0,16*sizeof(WORD)); ret->args = HeapAlloc(GetProcessHeap(),0,16*sizeof(WORD));
memcpy(ret->args,(LPBYTE)((char *) MapSL( MAKESEGPTR(context->SegSs,LOWORD(context->Esp)) )+8),sizeof(WORD)*16); memcpy(ret->args,(LPBYTE)((char *) MapSL( MAKESEGPTR(context->SegSs,LOWORD(context->Esp)) )+8),sizeof(WORD)*16);
} }
DPRINTF(") ret=%04x:%04x\n",HIWORD(ret->origreturn),LOWORD(ret->origreturn)); TRACE(") ret=%04x:%04x\n",HIWORD(ret->origreturn),LOWORD(ret->origreturn));
} }
static void WINAPI SNOOP16_Return(FARPROC proc, LPBYTE args, CONTEXT *context) { static void WINAPI SNOOP16_Return(FARPROC proc, LPBYTE args, CONTEXT *context) {
@ -318,9 +318,7 @@ static void WINAPI SNOOP16_Return(FARPROC proc, LPBYTE args, CONTEXT *context) {
} }
context->Eip = LOWORD(ret->origreturn); context->Eip = LOWORD(ret->origreturn);
context->SegCs = HIWORD(ret->origreturn); context->SegCs = HIWORD(ret->origreturn);
DPRINTF("%04x:RET %s.%d: %s(", TRACE("\1RET %s.%d: %s(", ret->dll->name, ret->ordinal, ret->dll->funs[ret->ordinal].name);
GetCurrentThreadId(),ret->dll->name,ret->ordinal,
ret->dll->funs[ret->ordinal].name);
if (ret->args) { if (ret->args) {
int i,max; int i,max;
@ -331,14 +329,14 @@ static void WINAPI SNOOP16_Return(FARPROC proc, LPBYTE args, CONTEXT *context) {
max=0; max=0;
for (i=max;i--;) for (i=max;i--;)
DPRINTF("%04x%s",ret->args[i],i?",":""); TRACE("%04x%s",ret->args[i],i?",":"");
if (max!=ret->dll->funs[ret->ordinal].nrofargs) if (max!=ret->dll->funs[ret->ordinal].nrofargs)
DPRINTF(" ..."); TRACE(" ...");
HeapFree(GetProcessHeap(),0,ret->args); HeapFree(GetProcessHeap(),0,ret->args);
ret->args = NULL; ret->args = NULL;
} }
DPRINTF(") retval = %04x:%04x ret=%04x:%04x\n", TRACE(") retval = %04x:%04x ret=%04x:%04x\n",
(WORD)context->Edx,(WORD)context->Eax, (WORD)context->Edx,(WORD)context->Eax,
HIWORD(ret->origreturn),LOWORD(ret->origreturn)); HIWORD(ret->origreturn),LOWORD(ret->origreturn));
ret->origreturn = NULL; /* mark as empty */ ret->origreturn = NULL; /* mark as empty */
} }

View file

@ -538,16 +538,14 @@ BOOL WINAPI K32WOWCallback16Ex( DWORD vpfn16, DWORD dwFlags,
DWORD count = cbArgs / sizeof(WORD); DWORD count = cbArgs / sizeof(WORD);
WORD * wstack = (WORD *)stack; WORD * wstack = (WORD *)stack;
DPRINTF("%04x:CallTo16(func=%04x:%04x,ds=%04x", TRACE_(relay)( "\1CallTo16(func=%04x:%04x", context->SegCs, LOWORD(context->Eip) );
GetCurrentThreadId(), while (count) TRACE_(relay)( ",%04x", wstack[--count] );
context->SegCs, LOWORD(context->Eip), context->SegDs ); TRACE_(relay)( ") ss:sp=%04x:%04x ax=%04x bx=%04x cx=%04x dx=%04x si=%04x di=%04x bp=%04x ds=%04x es=%04x\n",
while (count) DPRINTF( ",%04x", wstack[--count] ); SELECTOROF(NtCurrentTeb()->WOW32Reserved),
DPRINTF(") ss:sp=%04x:%04x", OFFSETOF(NtCurrentTeb()->WOW32Reserved),
SELECTOROF(NtCurrentTeb()->WOW32Reserved), OFFSETOF(NtCurrentTeb()->WOW32Reserved) ); (WORD)context->Eax, (WORD)context->Ebx, (WORD)context->Ecx,
DPRINTF(" ax=%04x bx=%04x cx=%04x dx=%04x si=%04x di=%04x bp=%04x es=%04x fs=%04x\n", (WORD)context->Edx, (WORD)context->Esi, (WORD)context->Edi,
(WORD)context->Eax, (WORD)context->Ebx, (WORD)context->Ecx, (WORD)context->Ebp, (WORD)context->SegDs, (WORD)context->SegEs );
(WORD)context->Edx, (WORD)context->Esi, (WORD)context->Edi,
(WORD)context->Ebp, (WORD)context->SegEs, (WORD)context->SegFs );
SYSLEVEL_CheckNotLevel( 2 ); SYSLEVEL_CheckNotLevel( 2 );
} }
@ -607,12 +605,11 @@ BOOL WINAPI K32WOWCallback16Ex( DWORD vpfn16, DWORD dwFlags,
if (TRACE_ON(relay)) if (TRACE_ON(relay))
{ {
DPRINTF("%04x:RetFrom16() ss:sp=%04x:%04x ", TRACE_(relay)( "\1RetFrom16() ss:sp=%04x:%04x ax=%04x bx=%04x cx=%04x dx=%04x bp=%04x sp=%04x\n",
GetCurrentThreadId(), SELECTOROF(NtCurrentTeb()->WOW32Reserved), SELECTOROF(NtCurrentTeb()->WOW32Reserved),
OFFSETOF(NtCurrentTeb()->WOW32Reserved)); OFFSETOF(NtCurrentTeb()->WOW32Reserved),
DPRINTF(" ax=%04x bx=%04x cx=%04x dx=%04x bp=%04x sp=%04x\n", (WORD)context->Eax, (WORD)context->Ebx, (WORD)context->Ecx,
(WORD)context->Eax, (WORD)context->Ebx, (WORD)context->Ecx, (WORD)context->Edx, (WORD)context->Ebp, (WORD)context->Esp );
(WORD)context->Edx, (WORD)context->Ebp, (WORD)context->Esp );
SYSLEVEL_CheckNotLevel( 2 ); SYSLEVEL_CheckNotLevel( 2 );
} }
} }
@ -625,12 +622,11 @@ BOOL WINAPI K32WOWCallback16Ex( DWORD vpfn16, DWORD dwFlags,
DWORD count = cbArgs / sizeof(WORD); DWORD count = cbArgs / sizeof(WORD);
WORD * wstack = (WORD *)stack; WORD * wstack = (WORD *)stack;
DPRINTF("%04x:CallTo16(func=%04x:%04x,ds=%04x", TRACE_(relay)( "\1CallTo16(func=%04x:%04x,ds=%04x",
GetCurrentThreadId(), HIWORD(vpfn16), LOWORD(vpfn16), HIWORD(vpfn16), LOWORD(vpfn16), SELECTOROF(NtCurrentTeb()->WOW32Reserved) );
SELECTOROF(NtCurrentTeb()->WOW32Reserved) ); while (count) TRACE_(relay)( ",%04x", wstack[--count] );
while (count) DPRINTF( ",%04x", wstack[--count] ); TRACE_(relay)( ") ss:sp=%04x:%04x\n", SELECTOROF(NtCurrentTeb()->WOW32Reserved),
DPRINTF(") ss:sp=%04x:%04x\n", OFFSETOF(NtCurrentTeb()->WOW32Reserved) );
SELECTOROF(NtCurrentTeb()->WOW32Reserved), OFFSETOF(NtCurrentTeb()->WOW32Reserved) );
SYSLEVEL_CheckNotLevel( 2 ); SYSLEVEL_CheckNotLevel( 2 );
} }
@ -652,9 +648,9 @@ BOOL WINAPI K32WOWCallback16Ex( DWORD vpfn16, DWORD dwFlags,
if (TRACE_ON(relay)) if (TRACE_ON(relay))
{ {
DPRINTF("%04x:RetFrom16() ss:sp=%04x:%04x retval=%08x\n", TRACE_(relay)( "\1RetFrom16() ss:sp=%04x:%04x retval=%08x\n",
GetCurrentThreadId(), SELECTOROF(NtCurrentTeb()->WOW32Reserved), SELECTOROF(NtCurrentTeb()->WOW32Reserved),
OFFSETOF(NtCurrentTeb()->WOW32Reserved), ret); OFFSETOF(NtCurrentTeb()->WOW32Reserved), ret );
SYSLEVEL_CheckNotLevel( 2 ); SYSLEVEL_CheckNotLevel( 2 );
} }
} }