Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

86 lines
1.4 KiB

/*++
Copyright (c) 2000 Microsoft Corporation
Module Name:
IgnoreMCIStop.cpp
Abstract:
The shim hooks mciSendCommand and ignores MCI_STOP which takes 2-3 seconds
on my P2-400.
Sent to the audio team for fixing, but I'm not optimistic - bug number
246407.
Notes:
This cannot be put in the layer, but can apply to more than one app.
History:
08/04/2000 a-brienw Created
11/30/2000 linstev Generalized
--*/
#include "precomp.h"
#include <mmsystem.h>
IMPLEMENT_SHIM_BEGIN(IgnoreMCIStop)
#include "ShimHookMacro.h"
APIHOOK_ENUM_BEGIN
APIHOOK_ENUM_ENTRY(mciSendCommandA)
APIHOOK_ENUM_END
/*++
Hook mciSendCommand and perform the shims duties.
--*/
MCIERROR
APIHOOK(mciSendCommandA)(
MCIDEVICEID IDDevice,
UINT uMsg,
DWORD fdwCommand,
DWORD dwParam
)
{
if (uMsg == MCI_STOP)
{
DPFN( eDbgLevelWarning, "Ignoring MCI_STOP");
return 0;
}
if (uMsg == MCI_CLOSE)
{
DPFN( eDbgLevelWarning, "MCI_CLOSE called: issuing MCI_STOP");
mciSendCommandA(IDDevice, MCI_STOP, 0, 0);
}
MCIERROR mErr = ORIGINAL_API(mciSendCommandA)(
IDDevice,
uMsg,
fdwCommand,
dwParam);
return mErr;
}
/*++
Register hooked functions
--*/
HOOK_BEGIN
APIHOOK_ENTRY(WINMM.DLL, mciSendCommandA)
HOOK_END
IMPLEMENT_SHIM_END