i'm tring of create a virtual audio driver for a servidor, than don't have sound card, so allow to the clients can use it. i´m working in this moment whit virtual cable software that implement a driver in user mode that build sound card virtuals one for each client, i need the "wdmaud.drv code" forbuild my own software and to learn, or "mmdrv.dll" that too export funtions: driverproc widmessage wodmessage auxmessage midmessage modmessage i has build my own DLL but my system is breaked, this is the code: #include <windows.h> #include "Caudiogaleontres.h" long DriverProc(DWORD dwDriverId, HDRVR hdrvr, UINT msg, LONG lParam1, LONG lParam2) { DWORD dwRes = 1L; switch (msg) { case DRV_LOAD: //1111111111111 // Sent when the driver is loaded. This is always // the first message received by a driver. return 1L; // returns 0L to fail break; case DRV_ENABLE: //22222222222222 // Sent when the driver is loaded or reloaded and // when Windows is enabled. Install interrupt // handlers and initialize hardware. Expect the // driver to be in memory only between the enable // and disable messages. return 1L; // return value ignored break; case DRV_OPEN: //333333333333333 return 1L; break; // value subsequently used // for dwDriverId. case DRV_INSTALL: //4444444444444444 // Sent when the driver is installed. return DRVCNF_RESTART; // Can also return break; // DRVCNF_CANCEL // and DRV_RESTART case DRV_QUERYCONFIGURE: //555555555555555 // Sent to determine if the driver can be // configured. return 0L; // Zero indicates configuration break; // NOT supported case DRV_CONFIGURE: //66666666666 // Sent to display the configuration // dialog box for the driver. return DRVCNF_RESTART; // Can also return break; // DRVCNF_CANCEL // and DRVCNF_RESTART case DRV_CLOSE: //777777777777777777777 // Sent when the driver is closed. Drivers are // unloaded when the open count reaches zero. return 1L; // returns 0L to fail break; case DRV_DISABLE: //8888888888888888 // Sent before the driver is freed or when Windows // is disabled. Remove interrupt handlers and place // hardware in an inactive state. return 1L; // return value ignored break; case DRV_FREE: //99999999999999999999999 // Sent when the driver is about to be discarded. // This is the last message a driver receives // before it is freed. return 1L; // return value ignored break; case DRV_REMOVE: // Sent when the driver is removed. return 1L; // return value ignored break; } return dwRes; } long midMessage (UINT uDeviceId, UINT uMsg, DWORD dwUser, DWORD dwParam1, DWORD dwParam2) { return 0; } long modMessage (UINT uDeviceId, UINT uMsg, DWORD dwUser, DWORD dwParam1, DWORD dwParam2) { return 0; } long widMessage (UINT uDeviceId, UINT uMsg, DWORD dwUser, DWORD dwParam1, DWORD dwParam2) { return 0; } long wodMessage (UINT uDeviceId, UINT uMsg, DWORD dwUser, DWORD dwParam1, DWORD dwParam2) { return 0; } long auxMessage (UINT uDeviceId, UINT uMsg, DWORD dwUser, DWORD dwParam1, DWORD dwParam2) { return 0; } i don't know thati´mk doing bad! if some body can help me thanks whit information ó recomendation or some tips. att: Vladimir Matiz --------------------------------- Do You Yahoo!? Todo lo que quieres saber de Estados Unidos, América Latina y el resto del Mundo. Visíta Yahoo! Noticias.