Benutzerdefinierte Dienste
Multimedia-Datei-E/A-Dienste verwenden E/A-Verfahren, um die physischen Eingaben und Ausgaben zu verarbeiten, die mit dem Lesen und Schreiben in verschiedene Arten von Speichersystemen verbunden sind, z. B. Dateiarchivierungssysteme und Datenbankspeichersysteme. Vordefinierte E/A-Prozeduren sind für die Standarddateisysteme und für Speicherdateien vorhanden. Sie können jedoch mithilfe der mmioInstallIOProc-Funktion eine benutzerdefinierte E/A-Prozedur für den Zugriff auf ein eindeutiges Speichersystem verwenden.
Verwenden Sie die mmioOpen-Funktion, um eine Datei mithilfe einer benutzerdefinierten E/A-Prozedur zu öffnen. Fügen Sie ein Pluszeichen (+) oder die CFSEPCHAR-Konstante in den Dateinamen ein, um den Namen der physischen Datei vom Namen des Elements der Datei zu trennen, das Sie öffnen möchten. Im folgenden Beispiel wird ein Dateielement mit dem Namen "element" aus einer Datei namens FILENAME geöffnet. ARC:
mmioOpen("filename.arc+element", NULL, MMIO_READ);
Wenn der Datei-E/A-Manager auf ein Pluszeichen in einem Dateinamen stößt, wird die Dateinamenerweiterung untersucht, um zu bestimmen, welche E/A-Prozedur der Datei zugeordnet werden soll. Im vorherigen Beispiel hat der Datei-E/A-Manager versucht, die dem zugeordnete E/A-Prozedur zu verwenden. ARC-Dateinamenerweiterung; Diese E/A-Prozedur wäre mit mmioInstallIOProc installiert worden. Wenn keine E/A-Prozedur installiert ist, gibt mmioOpen einen Fehler zurück.
E/A-Prozeduren müssen auf die folgenden Meldungen reagieren:
- MMIOM _ CLOSE
- MMIOM _ OPEN
- MMIOM _ READ
- MMIOM _ WRITE
- MMIOM _ SEEK
- _MMIOM-UMBENENNUNG
- MMIOM _ WRITEFLUSH
Sie können auch benutzerdefinierte Nachrichten erstellen und mithilfe der mmioSendMessage-Funktion an Ihre E/A-Prozedur senden. Wenn Sie eigene Nachrichten definieren, stellen Sie sicher, dass sie bei oder über dem Wert definiert sind, der von der MMIOM _ USER-Konstante definiert wird.
Zusätzlich zur Verarbeitung von Nachrichten muss eine E/A-Prozedur das lDiskOffset-Element der MMIOINFO-Struktur verwalten (auf das durch den lpmmioinfo-Parameter der mmioOpen-Funktion verwiesen wird). Das lDiskOffset-Mitglied muss immer den Dateioffset zu dem Speicherort enthalten, auf den die nächste _ MMIOM READ- oder MMIOM _ WRITE-Nachricht zugreifen wird. Der Offset wird in Bytes angegeben und ist relativ zum Anfang der Datei. Die E/A-Prozedur kann das adwInfo-Element verwenden, um alle erforderlichen Zustandsinformationen zu verwalten. Die E/A-Prozedur sollte keine anderen Member in der MMIOINFO-Struktur ändern.