Odd call stack



I was debugging my own audio device driver and get follwoing call
stack log after stopped at some breakpoint inside the driver code.

You can see NK and DEVICE in the middle of the call stack. Does that
mean the functions of an EXE file can be called by another
executables? It's impossible AFAIK. Some one please explain this for
me?



Call Stack: cprog.exe: 0x59DEC862 17:15:27 05/01/2005 +9+
WAVEDEV!HandleWaveMessage(MMDRV_MESSAGE_PARAMS * 0x2403e768,
unsigned long * 0x2403e760) line 559
WAVEDEV!WAV_IOControl(unsigned long 0x0000003a, unsigned long
0x00000000, unsigned char * 0x00000057, unsigned long 0x00410057,
unsigned char * 0x005f0056, unsigned long 0x004f0049, unsigned long *
0x006f0043) line 936 + 12 bytes
WOWXT_ARM_WCE_PPC_DRIVER!011e3624()
WOWXT_ARM_WCE_PPC_DRIVER!011e2a80()
DEVICE!FS_DevDeviceIoControl(fsopendev_t * 0x00000000, unsigned
long 0x000005c8, void * 0x00000001, unsigned long 0x0000040b, void *
0x00000004, unsigned long 0x2403e764, unsigned long * 0x00045d10,
_OVERLAPPED * 0x00000000) line 1252 + 44 bytes
NK!SC_DeviceIoControl(void * 0x00000000, unsigned long 0x000005c8,
void * 0x00000001, unsigned long 0x0000040b, void * 0x00000000,
unsigned long 0x2403e814, unsigned long * 0x2403e844, _OVERLAPPED *
0x00000000) line 3658 + 64 bytes
COREDLL!xxx_DeviceIoControl(void * 0x00000000, unsigned long
0x000005c8, void * 0x00000001, unsigned long 0x0000040b, void *
0x2403e760, unsigned long 0x00000004, unsigned long * 0x2403e764,
_OVERLAPPED * 0x00000000) line 27 + 92 bytes
AUDEVMAN!CAudioDevice::wavMessage(CAudioDevice * const 0x00000000,
unsigned int 0x000005c8, unsigned long 0x00000001, unsigned long
0x0000040b, unsigned long 0x00000000) line 846 + 56 bytes
End Call Stack: cprog.exe: 0x59DEC862 17:15:27 05/01/2005 +9+
.