wavelib.c

来自「深圳市微逻辑电子有限公司 巨果&#8226 Kingmos&reg 系统核心」· 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 + -
显示快捷键?