wavelib.c
来自「深圳市微逻辑电子有限公司 巨果• Kingmos® 系统核心」· C语言 代码 · 共 2,138 行 · 第 1/5 页
C
2,138 行
cs.apiInfo = CALL_API( API_AUDIO, AUDIO_WAVEOUTGETPOSITION, 3 );
cs.arg0 = (DWORD)hwo;
return (DWORD)CALL_SERVER( &cs, pmmt, cbmmt);
#else
PWAVEOUTGETPOSITION pwaveOutGetPosition;
CALLSTACK cs;
MMRESULT retv = MMSYSERR_ERROR;
if( API_Enter( API_AUDIO, AUDIO_WAVEOUTGETPOSITION, &pwaveOutGetPosition, &cs ) )
{
pmmt = MapProcessPtr( pmmt, (LPPROCESS)cs.lpvData );
retv = pwaveOutGetPosition(hwo, pmmt, cbmmt);
API_Leave( );
}
return retv;
#endif
}
typedef MMRESULT (WINAPI *PWAVEOUTGETPITCH)(HWAVEOUT hwo, LPDWORD pdwPitch);
MMRESULT WINAPI aud_waveOutGetPitch(HWAVEOUT hwo, LPDWORD pdwPitch)
{
#ifdef CALL_TRAP
CALLTRAP cs;
cs.apiInfo = CALL_API( API_AUDIO, AUDIO_WAVEOUTGETPITCH, 2 );
cs.arg0 = (DWORD)hwo;
return (DWORD)CALL_SERVER( &cs, pdwPitch);
#else
PWAVEOUTGETPITCH pwaveOutGetPitch;
CALLSTACK cs;
MMRESULT retv = MMSYSERR_ERROR;
if( API_Enter( API_AUDIO, AUDIO_WAVEOUTGETPITCH, &pwaveOutGetPitch, &cs ) )
{
pdwPitch = MapProcessPtr( pdwPitch, (LPPROCESS)cs.lpvData );
retv = pwaveOutGetPitch(hwo, pdwPitch);
API_Leave( );
}
return retv;
#endif
}
typedef MMRESULT (WINAPI *PWAVEOUTSETPITCH)(HWAVEOUT hwo, DWORD dwPitch);
MMRESULT WINAPI aud_waveOutSetPitch(HWAVEOUT hwo, DWORD dwPitch)
{
#ifdef CALL_TRAP
CALLTRAP cs;
cs.apiInfo = CALL_API( API_AUDIO, AUDIO_WAVEOUTSETPITCH, 2 );
cs.arg0 = (DWORD)hwo;
return (DWORD)CALL_SERVER( &cs, dwPitch);
#else
PWAVEOUTSETPITCH pwaveOutSetPitch;
CALLSTACK cs;
MMRESULT retv = MMSYSERR_ERROR;
if( API_Enter( API_AUDIO, AUDIO_WAVEOUTSETPITCH, &pwaveOutSetPitch, &cs ) )
{
retv = pwaveOutSetPitch(hwo, dwPitch);
API_Leave( );
}
return retv;
#endif
}
typedef MMRESULT (WINAPI *PWAVEOUTGETPLAYBACKRATE)(HWAVEOUT hwo, LPDWORD pdwRate);
MMRESULT WINAPI aud_waveOutGetPlaybackRate(HWAVEOUT hwo, LPDWORD pdwRate)
{
#ifdef CALL_TRAP
CALLTRAP cs;
cs.apiInfo = CALL_API( API_AUDIO, AUDIO_WAVEOUTGETPLAYBACKRATE, 2 );
cs.arg0 = (DWORD)hwo;
return (DWORD)CALL_SERVER( &cs, pdwRate);
#else
PWAVEOUTGETPLAYBACKRATE pwaveOutGetPlaybackRate;
CALLSTACK cs;
MMRESULT retv = MMSYSERR_ERROR;
if( API_Enter( API_AUDIO, AUDIO_WAVEOUTGETPLAYBACKRATE, &pwaveOutGetPlaybackRate, &cs ) )
{
pdwRate = MapProcessPtr( pdwRate, (LPPROCESS)cs.lpvData );
retv = pwaveOutGetPlaybackRate(hwo, pdwRate);
API_Leave( );
}
return retv;
#endif
}
typedef MMRESULT (WINAPI *PWAVEOUTSETPLAYBACKRATE)(HWAVEOUT hwo, DWORD dwRate);
MMRESULT WINAPI aud_waveOutSetPlaybackRate(HWAVEOUT hwo, DWORD dwRate)
{
#ifdef CALL_TRAP
CALLTRAP cs;
cs.apiInfo = CALL_API( API_AUDIO, AUDIO_WAVEOUTSETPLAYBACKRATE, 2 );
cs.arg0 = (DWORD)hwo;
return (DWORD)CALL_SERVER( &cs, dwRate);
#else
PWAVEOUTSETPLAYBACKRATE pwaveOutSetPlaybackRate;
CALLSTACK cs;
MMRESULT retv = MMSYSERR_ERROR;
if( API_Enter( API_AUDIO, AUDIO_WAVEOUTSETPLAYBACKRATE, &pwaveOutSetPlaybackRate, &cs ) )
{
retv = pwaveOutSetPlaybackRate(hwo, dwRate);
API_Leave( );
}
return retv;
#endif
}
typedef MMRESULT (WINAPI *PWAVEOUTGETID)(HWAVEOUT hwo, LPUINT puDeviceID);
MMRESULT WINAPI aud_waveOutGetID(HWAVEOUT hwo, LPUINT puDeviceID)
{
#ifdef CALL_TRAP
CALLTRAP cs;
cs.apiInfo = CALL_API( API_AUDIO, AUDIO_WAVEOUTGETID, 2 );
cs.arg0 = (DWORD)hwo;
return (DWORD)CALL_SERVER( &cs, puDeviceID);
#else
PWAVEOUTGETID pwaveOutGetID;
CALLSTACK cs;
MMRESULT retv = MMSYSERR_ERROR;
if( API_Enter( API_AUDIO, AUDIO_WAVEOUTGETID, &pwaveOutGetID, &cs ) )
{
puDeviceID = MapProcessPtr( puDeviceID, (LPPROCESS)cs.lpvData );
retv = pwaveOutGetID(hwo, puDeviceID);
API_Leave( );
}
return retv;
#endif
}
typedef MMRESULT (WINAPI *PWAVEOUTMESSAGE)(HWAVEOUT hwo, UINT uMsg, DWORD dw1, DWORD dw2);
MMRESULT WINAPI aud_waveOutMessage(HWAVEOUT hwo, UINT uMsg, DWORD dw1, DWORD dw2)
{
#ifdef CALL_TRAP
CALLTRAP cs;
cs.apiInfo = CALL_API( API_AUDIO, AUDIO_WAVEOUTMESSAGE, 4 );
cs.arg0 = (DWORD)hwo;
return (DWORD)CALL_SERVER( &cs, uMsg, dw1, dw2);
#else
PWAVEOUTMESSAGE pwaveOutMessage;
CALLSTACK cs;
MMRESULT retv = MMSYSERR_ERROR;
if( API_Enter( API_AUDIO, AUDIO_WAVEOUTMESSAGE, &pwaveOutMessage, &cs ) )
{
retv = pwaveOutMessage(hwo, uMsg, dw1, dw2);
API_Leave( );
}
return retv;
#endif
}
typedef MMRESULT (WINAPI *PWAVEOUTOPEN)(LPHWAVEOUT phwo, UINT uDeviceID,
LPCWAVEFORMATEX pwfx, DWORD dwCallback, DWORD dwInstance, DWORD fdwOpen);
MMRESULT WINAPI aud_waveOutOpen(LPHWAVEOUT phwo, UINT uDeviceID,
LPCWAVEFORMATEX pwfx, DWORD dwCallback, DWORD dwInstance, DWORD fdwOpen)
{
#ifdef CALL_TRAP
CALLTRAP cs;
cs.apiInfo = CALL_API( API_AUDIO, AUDIO_WAVEOUTOPEN, 6 );
cs.arg0 = (DWORD)phwo;
return (DWORD)CALL_SERVER( &cs, uDeviceID,pwfx, dwCallback, dwInstance, fdwOpen);
#else
PWAVEOUTOPEN pwaveOutOpen;
CALLSTACK cs;
MMRESULT retv = MMSYSERR_ERROR;
if( API_Enter( API_AUDIO, AUDIO_WAVEOUTOPEN, &pwaveOutOpen, &cs ) )
{
pwfx = MapProcessPtr( pwfx, (LPPROCESS)cs.lpvData );
retv = pwaveOutOpen(phwo, uDeviceID,pwfx, dwCallback, dwInstance, fdwOpen);
API_Leave( );
}
return retv;
#endif
}
typedef UINT (WINAPI *PWAVEINGETNUMDEVS)(void);
UINT WINAPI aud_waveInGetNumDevs(void)
{
#ifdef CALL_TRAP
CALLTRAP cs;
cs.apiInfo = CALL_API( API_AUDIO, AUDIO_WAVEINGETNUMDEVS, 0 );
cs.arg0 = 0;
return (DWORD)CALL_SERVER( &cs );
#else
PWAVEINGETNUMDEVS pwaveInGetNumDevs;
CALLSTACK cs;
MMRESULT retv = 0;
if( API_Enter( API_AUDIO, AUDIO_WAVEINGETNUMDEVS, &pwaveInGetNumDevs, &cs ) )
{
retv = pwaveInGetNumDevs();
API_Leave( );
}
return retv;
#endif
}
typedef MMRESULT (WINAPI *PWAVEINGETDEVCAPS)(UINT uDeviceID, LPWAVEINCAPS pwic, UINT cbwic);
MMRESULT WINAPI aud_waveInGetDevCaps(UINT uDeviceID, LPWAVEINCAPS pwic, UINT cbwic)
{
#ifdef CALL_TRAP
CALLTRAP cs;
cs.apiInfo = CALL_API( API_AUDIO, AUDIO_WAVEINGETDEVCAPS, 3 );
cs.arg0 = (DWORD)uDeviceID;
return (DWORD)CALL_SERVER( &cs, pwic, cbwic);
#else
PWAVEINGETDEVCAPS pwaveInGetDevCaps;
CALLSTACK cs;
MMRESULT retv = MMSYSERR_ERROR;
if( API_Enter( API_AUDIO, AUDIO_WAVEINGETDEVCAPS, &pwaveInGetDevCaps, &cs ) )
{
pwic = MapProcessPtr( pwic, (LPPROCESS)cs.lpvData );
retv = pwaveInGetDevCaps(uDeviceID, pwic, cbwic);
API_Leave( );
}
return retv;
#endif
}
typedef MMRESULT (WINAPI *PWAVEINGETERRORTEXT)(MMRESULT mmrError, LPTSTR pszText, UINT cchText);
MMRESULT WINAPI aud_waveInGetErrorText(MMRESULT mmrError, LPTSTR pszText, UINT cchText)
{
#ifdef CALL_TRAP
CALLTRAP cs;
cs.apiInfo = CALL_API( API_AUDIO, AUDIO_WAVEINGETERRORTEXT, 3 );
cs.arg0 = (DWORD)mmrError;
return (DWORD)CALL_SERVER( &cs, pszText, cchText);
#else
PWAVEINGETERRORTEXT pwaveInGetErrorText;
CALLSTACK cs;
MMRESULT retv = MMSYSERR_ERROR;
if( API_Enter( API_AUDIO, AUDIO_WAVEINGETERRORTEXT, &pwaveInGetErrorText, &cs ) )
{
pszText = MapProcessPtr( pszText, (LPPROCESS)cs.lpvData );
retv = pwaveInGetErrorText(mmrError, pszText, cchText);
API_Leave( );
}
return retv;
#endif
}
typedef MMRESULT (WINAPI *PWAVEINCLOSE)(HWAVEIN hwi);
MMRESULT WINAPI aud_waveInClose(HWAVEIN hwi)
{
#ifdef CALL_TRAP
CALLTRAP cs;
cs.apiInfo = CALL_API( API_AUDIO, AUDIO_WAVEINCLOSE, 1 );
cs.arg0 = (DWORD)hwi;
return (DWORD)CALL_SERVER( &cs );
#else
PWAVEINCLOSE pwaveInClose;
CALLSTACK cs;
MMRESULT retv = MMSYSERR_ERROR;
if( API_Enter( API_AUDIO, AUDIO_WAVEINCLOSE, &pwaveInClose, &cs ) )
{
retv = pwaveInClose(hwi);
API_Leave( );
}
return retv;
#endif
}
typedef MMRESULT (WINAPI *PWAVEINPREPAREHEADER)(HWAVEIN hwi, LPWAVEHDR pwh, UINT cbwh);
MMRESULT WINAPI aud_waveInPrepareHeader(HWAVEIN hwi, LPWAVEHDR pwh, UINT cbwh)
{
#ifdef CALL_TRAP
CALLTRAP cs;
cs.apiInfo = CALL_API( API_AUDIO, AUDIO_WAVEINPREPAREHEADER, 3 );
cs.arg0 = (DWORD)hwi;
return (DWORD)CALL_SERVER( &cs, pwh, cbwh);
#else
PWAVEINPREPAREHEADER pwaveInPrepareHeader;
CALLSTACK cs;
MMRESULT retv = MMSYSERR_ERROR;
if( API_Enter( API_AUDIO, AUDIO_WAVEINPREPAREHEADER, &pwaveInPrepareHeader, &cs ) )
{
pwh = MapProcessPtr( pwh, (LPPROCESS)cs.lpvData );
pwh->lpData = MapProcessPtr( pwh->lpData , (LPPROCESS)cs.lpvData );
retv = pwaveInPrepareHeader(hwi, pwh, cbwh);
API_Leave( );
}
return retv;
#endif
}
typedef MMRESULT (WINAPI *PWAVEINUNPREPAREHEADER)(HWAVEIN hwi, LPWAVEHDR pwh, UINT cbwh);
MMRESULT WINAPI aud_waveInUnprepareHeader(HWAVEIN hwi, LPWAVEHDR pwh, UINT cbwh)
{
#ifdef CALL_TRAP
CALLTRAP cs;
cs.apiInfo = CALL_API( API_AUDIO, AUDIO_WAVEINUNPREPAREHEADER, 3 );
cs.arg0 = (DWORD)hwi;
return (DWORD)CALL_SERVER( &cs, pwh, cbwh);
#else
PWAVEINUNPREPAREHEADER pwaveInUnprepareHeader;
CALLSTACK cs;
MMRESULT retv = MMSYSERR_ERROR;
if( API_Enter( API_AUDIO, AUDIO_WAVEINUNPREPAREHEADER, &pwaveInUnprepareHeader, &cs ) )
{
pwh = MapProcessPtr( pwh, (LPPROCESS)cs.lpvData );
pwh->lpData = MapProcessPtr( pwh->lpData , (LPPROCESS)cs.lpvData );
retv = pwaveInUnprepareHeader(hwi, pwh, cbwh);
API_Leave( );
}
return retv;
#endif
}
typedef MMRESULT (WINAPI *PWAVEINADDBUFFER)(HWAVEIN hwi, LPWAVEHDR pwh, UINT cbwh);
MMRESULT WINAPI aud_waveInAddBuffer(HWAVEIN hwi, LPWAVEHDR pwh, UINT cbwh)
{
#ifdef CALL_TRAP
CALLTRAP cs;
cs.apiInfo = CALL_API( API_AUDIO, AUDIO_WAVEINADDBUFFER, 3 );
cs.arg0 = (DWORD)hwi;
return (DWORD)CALL_SERVER( &cs, pwh, cbwh);
#else
PWAVEINADDBUFFER pwaveInAddBuffer;
CALLSTACK cs;
MMRESULT retv = MMSYSERR_ERROR;
if( API_Enter( API_AUDIO, AUDIO_WAVEINADDBUFFER, &pwaveInAddBuffer, &cs ) )
{
pwh = MapProcessPtr( pwh, (LPPROCESS)cs.lpvData );
pwh->lpData = MapProcessPtr( pwh->lpData , (LPPROCESS)cs.lpvData );
retv = pwaveInAddBuffer(hwi, pwh, cbwh);
API_Leave( );
}
return retv;
#endif
}
typedef MMRESULT (WINAPI *PWAVEINSTART)(HWAVEIN hwi);
MMRESULT WINAPI aud_waveInStart(HWAVEIN hwi)
{
#ifdef CALL_TRAP
CALLTRAP cs;
cs.apiInfo = CALL_API( API_AUDIO, AUDIO_WAVEINSTART, 1 );
cs.arg0 = (DWORD)hwi;
return (DWORD)CALL_SERVER( &cs );
#else
PWAVEINSTART pwaveInStart;
CALLSTACK cs;
MMRESULT retv = MMSYSERR_ERROR;
if( API_Enter( API_AUDIO, AUDIO_WAVEINSTART, &pwaveInStart, &cs ) )
{
retv = pwaveInStart(hwi);
API_Leave( );
}
return retv;
#endif
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?