code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
| DWORD WINAPI waveInProc(LPVOID arg)
{
MSG msg;
/* Wait for a message sent to me by the audio driver */
while (GetMessage(&msg, 0, 0, 0) == 1)
{
/* Figure out which message was sent */
switch (msg.message)
{
/* A buffer has been filled by the driver */
case MM_WIM_DATA:
{
/* msg.lParam contains a pointer to the WAVEHDR structure for the filled buffer.
* NOTE: The WAVEHDR's dwBytesRecorded field specifies how many bytes of
* audio data are in the buffer. It may not be full, as would be the case
* if recording was stopped *while* this buffer was being filled. (ie, A
* final, partial block of audio data may be returned)
*/
if (((WAVEHDR *)msg.lParam)->dwBytesRecorded)
{
/* Let's write out this next block of data to our already open file.
NOTE: The main
* thread opened this file prior to starting recording, and stored
its handle in
* 'WaveFileHandle'
*/
if (!WriteFile(WaveFileHandle, ((WAVEHDR *)msg.lParam)->lpData,
((WAVEHDR *)msg.lParam)->dwBytesRecorded, &msg.time, 0) ||
/* Check for an error */
msg.time != ((WAVEHDR *)msg.lParam)->dwBytesRecorded) |
kan iemand mij de volgende regel uit bovenstaande code uitleggen?
if (((WAVEHDR *)msg.lParam)->dwBytesRecorded)