Hi Hi Hi there,
I am using ExtEscape() to get a DisplayDriver specific service (In this case
ist’s just a some driver data).
typedef struct _XXX_ARGS {
/*IN*/ ULONG Cmd;
/*IN*/ USHORT Action;
/*IN*/ WCHAR pwszValueName[64];
/*IN*/ /*OUT*/ DWORD dwValue;
/*OUT*/ NTSTATUS Status;
} XXX_ARGS, *PXXX_ARGS;
HDC hDC = CreateDC(“DISPLAY”,NULL,NULL,NULL);
XXX_ARGS xxxArgs;
xxxArgs.Action = GET_XXX_VALUE;
xxxArgs.Cmd = XXX_DWORD;
wcscpy(xxxArgs.pwszValueName, “xxxValue”);
cbIn=sizeof(XXX_ARGS);
retval = ExtEscape(hDC, XXX_ESCAPE, cbIn, (LPCSTR) &xxxArgs, cbIn, (LPSTR)
&xxxArgs);
and as expected it’s properly hitting DrvEscape gets in the required data in
to pvOut
*ULONG
**DrvEscape**(*
*IN SURFOBJ* **pso**,*
*IN ULONG* *iEsc**,*
*IN ULONG* *cjIn**,*
*IN PVOID* *pvIn**,*
*IN ULONG* *cjOut**,*
*OUT PVOID* *pvOut*
* );*
**
when I checked values at (XXX_ARGS*)pvOut.
pvOut->dwValue was 0x023C;
problem is when I checked the values after the call to ExtEscape()
xxxArgs->dwValue was 000000.
How can that happen.
I was wondering What happens after return of DrvEscape and in the
implementation of ExtEscape API?
Please help me.
regards,
Madhu