WAVEHDR


typedef struct wavehdr_tag {
    LPSTR  lpData;
    DWORD  dwBufferLength;
    DWORD  dwBytesRecorded;
    DWORD  dwUser;
    DWORD  dwFlags;
    DWORD  dwLoops;
    struct wavehdr_tag far *  lpNext;
    DWORD  reserved;
} WAVEHDR;

The WAVEHDR structure defines the header used to identify a waveform data buffer.

lpData

Specifies a far pointer to the waveform data buffer.

dwBufferLength

Specifies the length of the data buffer.

dwBytesRecorded

When the header is used in input, this specifies how much data is in the buffer.

dwUser

Specifies 32 bits of user data.

dwFlags

Specifies flags giving information about the data buffer.

WHDR_DONE

Set by the device driver to indicate that it is finished with the data buffer and is returning it to the application.

WHDR_BEGINLOOP

Specifies that this buffer is the first buffer in a loop. This flag is only used with output data buffers.

WHDR_ENDLOOP

Specifies that this buffer is the last buffer in a loop. This flag is only used with output data buffers.

WHDR_PREPARED

Set by the device driver to indicate that the data buffer has been prepared with waveInPrepareHeader or waveOutPrepareHeader.

WHDR_INQUEUE

Set by the device driver to indicate that the data buffer is queued for playback.


dwLoops

Specifies the number of times to play the loop. This parameter is used only with output data buffers.

lpNext

Is reserved for use by the device driver to point to the next WAVEHDR structure in the queue.

reserved

Is reserved for use by the device driver. This field can be used to store a pointer to a structure containing information about the client.

Use the WHDR_BEGINLOOP and WHDR_ENDLOOP flags in the dwFlags field to specify the beginning and ending data blocks for looping. To loop on a single block, specify both flags for the same block. Use the dwLoops field in the WAVEHDR structure for the first block in the loop to specify the number of times to play the loop.