Benutzerdefinierte Dienste

[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.]

Multimedia-Datei-E/A-Dienste verwenden E/A-Prozeduren, um die physische Eingabe und Ausgabe zu verarbeiten, die mit dem Lesen und Schreiben in verschiedene Arten von Speichersystemen wie z. B. Dateiarchivsysteme und Datenbankspeichersysteme verbunden sind. Für standardbasierte Dateisysteme und Speicherdateien sind vordefinierte E/A-Prozeduren vorhanden. Sie können jedoch mithilfe der mmioInstallIOProc-Funktion eine benutzerdefinierte E/A-Prozedur für den Zugriff auf ein eindeutiges Speichersystem bereitstellen.

Um eine Datei mithilfe einer benutzerdefinierten E/A-Prozedur zu öffnen, verwenden Sie die MmioOpen-Funktion . 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, die Sie öffnen möchten. Im folgenden Beispiel wird ein Dateielement namens "element" aus einer Datei namens FILENAME geöffnet. ARC:

mmioOpen("filename.arc+element", NULL, MMIO_READ); 

Wenn der Datei-E/A-Manager in einem Dateinamen auf ein Pluszeichen stößt, überprüft er die Dateinamenerweiterung, um zu bestimmen, welche E/A-Prozedur der Datei zugeordnet werden soll. Im vorherigen Beispiel hat der Datei-E/A-Manager versucht, die E/A-Prozedur zu verwenden, die dem zugeordnet ist. ARC-Dateierweiterung; Diese E/A-Prozedur wäre mithilfe von 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:

Sie können auch benutzerdefinierte Nachrichten erstellen und an Ihre E/A-Prozedur senden, indem Sie die mmioSendMessage-Funktion verwenden. Wenn Sie Ihre eigenen Nachrichten definieren, stellen Sie sicher, dass sie mit oder über dem wert definiert sind, der durch die MMIOM_USER-Konstante definiert wird.

Zusätzlich zur Verarbeitung von Nachrichten muss eine E/A-Prozedur den lDiskOffset-Member der MMIOINFO-Struktur beibehalten (auf den der lpmmioinfo-Parameter der mmioOpen-Funktion verweist). Das lDiskOffset-Element 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.