Accessing a File I/O Buffer

The following example accesses an I/O buffer directly to read data from a waveform-audio file.

HMMIO hmmio;

MMIOINFO mmioinfo;

DWORD dwDataSize;

DWORD dwCount;

HPSTR hptr;

// Get information about the file I/O buffer.

if (mmioGetInfo(hmmio, &mmioinfo, 0))

{

Error("Failed to get I/O buffer info.");

.

.

.

mmioClose(hmmio, 0);

return;

}

// Read the entire file by directly reading the file I/O buffer.

// When the end of the I/O buffer is reached, advance the buffer.

for (dwCount = dwDataSize, hptr = lpData; dwCount 0; dwCount--)

{

// Check to see if the I/O buffer must be advanced.

if (mmioinfo.pchNext == mmioinfo.pchEndRead)

{

if(mmioAdvance(hmmio, &mmioinfo, MMIO_READ))

{

Error("Failed to advance buffer.");

.

.

.

mmioClose(hmmio, 0);

return;

}

}

// Get a character from the buffer.

*hptr++ = *mmioinfo.pchNext++;

}

// End direct buffer access and close the file.

mmioSetInfo(hmmio, &mmioinfo, 0);

mmioClose(hmmio, 0);

When you finish accessing a file I/O buffer, call the mmioSetInfo function, passing an address of the MMIOINFO structure filled by the mmioGetInfo function. If you wrote to the buffer, set the MMIO_DIRTY flag in the dwFlags member of the MMIOINFO structure before calling mmioSetInfo. Otherwise, the buffer will not be flushed to disk.

Software for developers
Delphi Components
.Net Components
Software for Android Developers
More information resources
MegaDetailed.Net
Unix Manual Pages
Delphi Examples
Databases for Amazon shops developers
Amazon Categories Database
Browse Nodes Database