reactos/sdk/lib/drivers/sound/mmebuddy/functiontable.c

58 lines
1.7 KiB
C

/*
* PROJECT: ReactOS Sound System "MME Buddy" Library
* LICENSE: GPL - See COPYING in the top level directory
* FILE: lib/drivers/sound/mmebuddy/functiontable.c
*
* PURPOSE: Routes function calls through a function table, calling
* implementation-defined routines or a default function, depending
* on configuration.
*
* PROGRAMMERS: Andrew Greenwood (silverblade@reactos.org)
*/
#include "precomp.h"
/*
Attaches a function table to a sound device. Any NULL entries in this
table are automatically set to point to a default routine to handle
the appropriate function.
*/
MMRESULT
SetSoundDeviceFunctionTable(
IN PSOUND_DEVICE SoundDevice,
IN PMMFUNCTION_TABLE FunctionTable)
{
VALIDATE_MMSYS_PARAMETER( IsValidSoundDevice(SoundDevice) );
VALIDATE_MMSYS_PARAMETER( FunctionTable );
/* Zero out the existing function table (if present) */
ZeroMemory(&SoundDevice->FunctionTable, sizeof(MMFUNCTION_TABLE));
if ( ! FunctionTable )
return MMSYSERR_INVALPARAM;
/* Fill in the client-supplied functions */
CopyMemory(&SoundDevice->FunctionTable,
FunctionTable,
sizeof(MMFUNCTION_TABLE));
return MMSYSERR_NOERROR;
}
/*
Retrieves the function table for a sound device, as previously set using
SetSoundDeviceFunctionTable.
*/
MMRESULT
GetSoundDeviceFunctionTable(
IN PSOUND_DEVICE SoundDevice,
OUT PMMFUNCTION_TABLE* FunctionTable)
{
VALIDATE_MMSYS_PARAMETER( IsValidSoundDevice(SoundDevice) );
VALIDATE_MMSYS_PARAMETER( FunctionTable );
*FunctionTable = &SoundDevice->FunctionTable;
return MMSYSERR_NOERROR;
}