include vmm.inc
VMMCall _Call_On_My_Stack, <<OFFSET32 pfnCallback>, dwLParam,
<OFFSET32 pStack>, dwStackSize>
Temporarily switches a ring 0 stack to a different locked block of memory. A VxD can use this service to perform an operation that requires more than 4K bytes of stack space (each thread is limited to 4K bytes of ring 0 stack space.) This service switches to the new stack and then calls the given callback function with the LParam parameter pushed on the new stack. When the callback function returns, the service switches back to the original ring 0 stack, and then returns control to the caller. This service can handle nested calls. Uses the C calling convention. Uses EAX, ECX, EDX, and Flags.