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 + -
显示快捷键?