WinAPI:waveOutWrite-出力装置にデータブロックを送信

1210 ワード

ヒント:データバッファをwaveOutWriteに渡す前に、waveOutPrepareHeaderを使用してバッファを準備する必要があります.
waveOutPause関数を呼び出すデバイスを一時停止すると、初めてデバイスにデータブロックが送信されたときに再生が開始する.


//  :

waveOutWrite(

  hWaveOut: HWAVEOUT;     {    }

  lpWaveOutHdr: PWaveHdr; {TWaveHdr      }

  uSize: UINT             {TWaveHdr     }

): MMRESULT;              {     0;         :}



MMSYSERR_INVALHANDLE = 5;  {      }

MMSYSERR_HANDLEBUSY  = 12; {          }

WAVERR_UNPREPARED    = 34; {      }



//TWaveHdr   wavehdr_tag       

wavehdr_tag = record

  lpData: PChar;          {         }

  dwBufferLength: DWORD;  {          }

  dwBytesRecorded: DWORD; {       ,           }

  dwUser: DWORD;          {     32   }

  dwFlags: DWORD;         {     }

  dwLoops: DWORD;         {      ,         }

  lpNext: PWaveHdr;       {  }

  reserved: DWORD;        {  }

end;



//TWaveHdr    dwFlags     :

WHDR_DONE      = $00000001; {         ,       }

WHDR_PREPARED  = $00000002; {waveInPrepareHeader   waveOutPrepareHeader         }

WHDR_BEGINLOOP = $00000004; {              ,      }

WHDR_ENDLOOP   = $00000008; {               ,      }

WHDR_INQUEUE   = $00000010; { reserved for driver }


 
   
// :