Skip to main content

Read and Write AC97 Codec Registers

It is possible to read and write any registers of the codec chip assembled on the Colibri by using the Windows CE API waveOutMessage(). Of course, the wave driver has to be loaded.
Return value of waveOutMessage():

  • 0 = Success
  • not 0 = Error

C source code sample

#include <windows.h>

// message definition:
#define WPDM_PRIVATE_WRITE_AC97 WPDM_PRIVATE+0 // do a write to the ac 97 register
#define WPDM_PRIVATE_READ_AC97 WPDM_PRIVATE+1 // do a read to the ac 97 register

DWORD RegAddr = x;
DWORD RegVal = y;

//Write a register:
if(waveOutMessage(0, WPDM_PRIVATE_WRITE_AC97, RegAddr, RegVal) != 0)
return FALSE; // error

//Read a register:
if(waveOutMessage(0, WPDM_PRIVATE_READ_AC97, RegAddr, (DWORD)&RegVal) != 0)
return FALSE; // error


If you would like to use the waveOutMessage API in .NET (C#, etc.), you can load this API with a dllimport from the coredll.dll.

Send Feedback!