Zugreifen auf einen Datei-E/A-Puffer
[Das dieser Seite zugeordnete Feature Multimediadatei-E/A ist ein Legacyfeature. Es wurde vom Quellleser abgelöst. Source Reader wurde für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code nach Möglichkeit den Quellleser anstelle von Multimediadatei-E/A verwendet. Microsoft schlägt vor, dass vorhandener Code, der die Legacy-APIs verwendet, so umgeschrieben wird, dass nach Möglichkeit die neuen APIs verwendet werden.]
Im folgenden Beispiel wird direkt auf einen E/A-Puffer zugegriffen, um Daten aus einer Waveform-Audiodatei zu lesen.
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);
Wenn Sie den Zugriff auf einen Datei-E/A-Puffer abgeschlossen haben, rufen Sie die mmioSetInfo-Funktion auf, und übergeben Sie eine Adresse der MMIOINFO-Struktur , die von der mmioGetInfo-Funktion ausgefüllt wird. Wenn Sie in den Puffer geschrieben haben, legen Sie das MMIO_DIRTY-Flag im dwFlags-Element der MMIOINFO-Struktur fest, bevor Sie mmioSetInfo aufrufen. Andernfalls wird der Puffer nicht auf den Datenträger geleert.