mmsystem.c
来自「开放源码的编译器open watcom 1.6.0版的源代码」· C语言 代码 · 共 555 行 · 第 1/2 页
C
555 行
} /* __mmioGetInfo */
/*
* __mmioOpen - cover for mmsystem function mmioOpen
*/
HMMIO FAR PASCAL __mmioOpen( LPSTR szFileName, LPMMIOINFO lpmmioinfo,
DWORD dwOpenFlags)
{
HMMIO rc;
DWORD alias;
LPMMINFOLIST curr;
if( mmsystemmmioOpen == NULL ) {
mmsystemmmioOpen = BackPatch_mmsystem( "mmioOpen" );
if( mmsystemmmioOpen == NULL ) return( 0 );
}
alias = NULL;
if( !(dwOpenFlags & (MMIO_ALLOCBUF | MMIO_DELETE | MMIO_PARSE | MMIO_EXIST
| MMIO_GETTEMP) ) ) {
if( lpmmioinfo->cchBuffer != 0 && lpmmioinfo->pchBuffer != NULL ) {
DPMIGetHugeAlias( (DWORD) lpmmioinfo->pchBuffer, &alias,
lpmmioinfo->cchBuffer );
lpmmioinfo->pchBuffer = (LPVOID) alias;
}
}
rc = mmsystemmmioOpen( szFileName, lpmmioinfo, dwOpenFlags );
if( rc != NULL && alias != NULL ) {
curr = _fmalloc( sizeof( mminfo_list ) );
if( curr != NULL ) {
if( mminfoListHead == NULL ) {
mminfoListHead = mminfoListTail = curr;
} else {
mminfoListTail->next = curr;
mminfoListTail = curr;
}
curr->next = NULL;
curr->handle = rc;
curr->alias = alias;
curr->size = lpmmioinfo->cchBuffer;
}
}
return( rc );
} /* __mmioOpen */
/*
* __mmioClose - cover for mmsystem function mmioClose
*/
UINT FAR PASCAL __mmioClose( HMMIO hmmio, UINT flags )
{
UINT rc;
LPMMINFOLIST curr,prev;
if( mmsystemmmioClose == NULL ) {
mmsystemmmioClose = BackPatch_mmsystem( "mmioClose" );
if( mmsystemmmioClose == NULL ) {
return( 0 );
}
}
rc = mmsystemmmioClose( hmmio, flags );
curr = mminfoListHead;
prev = NULL;
while( curr != NULL ) {
if( curr->handle == hmmio ) {
DPMIFreeHugeAlias( curr->alias, curr->size );
if( prev == NULL ) {
mminfoListHead = curr->next;
} else {
prev->next = curr->next;
}
if( curr == mminfoListTail ) {
mminfoListTail = prev;
}
_ffree( curr );
break;
}
prev = curr;
curr = curr->next;
}
return( rc );
} /* __mmioOpen */
/*
* __mmioRename - cover for mmsystem function mmioRename
*/
UINT FAR PASCAL __mmioRename( LPCSTR szFileName, LPCSTR szNewFileName,
LPMMIOINFO lpmmioinfo, DWORD dwRenameFlags )
{
UINT rc;
if( mmsystemmmioRename == NULL ) {
mmsystemmmioRename = BackPatch_mmsystem( "mmioRename" );
if( mmsystemmmioRename == NULL ) return( 0 );
}
rc = mmsystemmmioRename( szFileName, szNewFileName, lpmmioinfo, dwRenameFlags );
return( rc );
} /* __mmioRename */
/*
* __mmioSetInfo - cover for mmsystem function mmioSetInfo
*/
UINT FAR PASCAL __mmioSetInfo( HMMIO hmmio, LPMMIOINFO lpmmioinfo, UINT uFlags )
{
UINT rc;
if( mmsystemmmioSetInfo == NULL ) {
mmsystemmmioSetInfo = BackPatch_mmsystem( "mmioSetInfo" );
if( mmsystemmmioSetInfo == NULL ) return( 0 );
}
rc = mmsystemmmioSetInfo( hmmio, lpmmioinfo, uFlags );
return( rc );
} /* __mmioSetInfo */
/*
* __mmioRead - cover for mmsystem function mmioRead
*/
LONG FAR PASCAL __mmioRead( HMMIO hmmio, HPSTR pch, LONG cch )
{
LONG rc;
DWORD alias;
if( mmsystemmmioRead == NULL ) {
mmsystemmmioRead = BackPatch_mmsystem( "mmioRead" );
if( mmsystemmmioRead == NULL ) return( 0 );
}
DPMIGetHugeAlias( (DWORD) pch, &alias, cch );
rc = mmsystemmmioRead( hmmio, (HPSTR) alias, cch );
DPMIFreeHugeAlias( alias, cch );
return( rc );
} /* __mmioRead */
/*
* __mmioWrite - cover for mmsystem function mmioWrite
*/
LONG FAR PASCAL __mmioWrite( HMMIO hmmio, HPSTR pch, LONG cch )
{
LONG rc;
DWORD alias;
if( mmsystemmmioWrite == NULL ) {
mmsystemmmioWrite = BackPatch_mmsystem( "mmioWrite" );
if( mmsystemmmioWrite == NULL ) return( 0 );
}
DPMIGetHugeAlias( (DWORD) pch, &alias, cch );
rc = mmsystemmmioWrite( hmmio, (HPSTR) alias, cch );
DPMIFreeHugeAlias( alias, cch );
return( rc );
} /* __mmioWrite */
/*
* __waveInAddBuffer - cover for mmsystem function waveInAddBuffer
*/
UINT FAR PASCAL __waveInAddBuffer( HWAVEIN hWaveIn, LPWAVEHDR lpWaveInHdr,
UINT uSize )
{
UINT rc;
LPSTR odata;
if( mmsystemwaveInAddBuffer == NULL ) {
mmsystemwaveInAddBuffer = BackPatch_mmsystem( "waveInAddBuffer" );
if( mmsystemwaveInAddBuffer == NULL ) return( 0 );
}
GetWAVEHDRAlias( &odata, lpWaveInHdr );
rc = mmsystemwaveInAddBuffer( hWaveIn, lpWaveInHdr, uSize );
ReleaseWAVEHDRAlias( odata, lpWaveInHdr );
return( rc );
} /* __waveInAddBuffer */
/*
* __waveInPrepareHeader - cover for mmsystem function waveInPrepareHeader
*/
UINT FAR PASCAL __waveInPrepareHeader( HWAVEIN hWaveIn, LPWAVEHDR lpWaveInHdr,
UINT uSize )
{
UINT rc;
LPSTR odata;
if( mmsystemwaveInPrepareHeader == NULL ) {
mmsystemwaveInPrepareHeader = BackPatch_mmsystem( "waveInPrepareHeader" );
if( mmsystemwaveInPrepareHeader == NULL ) return( 0 );
}
GetWAVEHDRAlias( &odata, lpWaveInHdr );
rc = mmsystemwaveInPrepareHeader( hWaveIn, lpWaveInHdr, uSize );
ReleaseWAVEHDRAlias( odata, lpWaveInHdr );
return( rc );
} /* __waveInPrepareHeader */
/*
* __waveInUnprepareHeader - cover for mmsystem function waveInUnprepareHeader
*/
UINT FAR PASCAL __waveInUnprepareHeader( HWAVEIN hWaveIn, LPWAVEHDR lpWaveInHdr,
UINT uSize )
{
UINT rc;
LPSTR odata;
if( mmsystemwaveInUnprepareHeader == NULL ) {
mmsystemwaveInUnprepareHeader = BackPatch_mmsystem( "waveInUnprepareHeader" );
if( mmsystemwaveInUnprepareHeader == NULL ) return( 0 );
}
GetWAVEHDRAlias( &odata, lpWaveInHdr );
rc = mmsystemwaveInUnprepareHeader( hWaveIn, lpWaveInHdr, uSize );
ReleaseWAVEHDRAlias( odata, lpWaveInHdr );
return( rc );
} /* __waveInUnprepareHeader */
/*
* __waveOutPrepareHeader - cover for mmsystem function waveOutPrepareHeader
*/
UINT FAR PASCAL __waveOutPrepareHeader( HWAVEOUT hWaveOut,
LPWAVEHDR lpWaveOutHdr, UINT uSize )
{
UINT rc;
LPSTR odata;
if( mmsystemwaveOutPrepareHeader == NULL ) {
mmsystemwaveOutPrepareHeader = BackPatch_mmsystem( "waveOutPrepareHeader" );
if( mmsystemwaveOutPrepareHeader == NULL ) return( 0 );
}
GetWAVEHDRAlias( &odata, lpWaveOutHdr );
rc = mmsystemwaveOutPrepareHeader( hWaveOut, lpWaveOutHdr, uSize );
ReleaseWAVEHDRAlias( odata, lpWaveOutHdr );
return( rc );
} /* __waveOutPrepareHeader */
/*
* __waveOutUnprepareHeader - cover for mmsystem function waveOutUnprepareHeader
*/
UINT FAR PASCAL __waveOutUnprepareHeader( HWAVEOUT hWaveOut,
LPWAVEHDR lpWaveOutHdr, UINT uSize )
{
UINT rc;
LPSTR odata;
if( mmsystemwaveOutUnprepareHeader == NULL ) {
mmsystemwaveOutUnprepareHeader = BackPatch_mmsystem( "waveOutUnprepareHeader" );
if( mmsystemwaveOutUnprepareHeader == NULL ) return( 0 );
}
GetWAVEHDRAlias( &odata, lpWaveOutHdr );
rc = mmsystemwaveOutUnprepareHeader( hWaveOut, lpWaveOutHdr, uSize );
ReleaseWAVEHDRAlias( odata, lpWaveOutHdr );
return( rc );
} /* __waveOutUnprepareHeader */
/*
* __waveOutWrite - cover for mmsystem function waveOutWrite
*/
UINT FAR PASCAL __waveOutWrite( HWAVEOUT hWaveOut, LPWAVEHDR lpWaveOutHdr,
UINT uSize )
{
UINT rc;
LPSTR odata;
if( mmsystemwaveOutWrite == NULL ) {
mmsystemwaveOutWrite = BackPatch_mmsystem( "waveOutWrite" );
if( mmsystemwaveOutWrite == NULL ) return( 0 );
}
GetWAVEHDRAlias( &odata, lpWaveOutHdr );
rc = mmsystemwaveOutWrite( hWaveOut, lpWaveOutHdr, uSize );
ReleaseWAVEHDRAlias( odata, lpWaveOutHdr );
return( rc );
} /* __waveOutWrite */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?