Share via


mmioOpenA-Funktion (mmiscapi.h)

Die mmioOpen-Funktion öffnet eine Datei für ungepufferte oder gepufferte E/A-Vorgänge. erstellt eine Datei; löscht eine Datei; oder überprüft, ob eine Datei vorhanden ist. Die Datei kann eine Standarddatei, eine Speicherdatei oder ein Element eines benutzerdefinierten Speichersystems sein. Das von mmioOpen zurückgegebene Handle ist kein Standarddateihandle. verwenden Sie es nicht mit anderen Datei-E/A-Funktionen als Multimediadatei-E/A-Funktionen.

Hinweis Diese Funktion ist veraltet. Anwendungen sollten CreateFile aufrufen, um Dateien zu erstellen oder zu öffnen.
 

Syntax

HMMIO mmioOpenA(
  LPSTR      pszFileName,
  LPMMIOINFO pmmioinfo,
  DWORD      fdwOpen
);

Parameter

pszFileName

Zeiger auf einen Puffer, der den Namen der Datei enthält. Wenn keine E/A-Prozedur zum Öffnen der Datei angegeben ist, bestimmt der Dateiname wie folgt, wie die Datei geöffnet wird:

  • Wenn der Dateiname kein Pluszeichen (+) enthält, wird davon ausgegangen, dass es sich um den Namen einer Standarddatei handelt (d. h. eine Datei, deren Typ nicht HMMIO ist).
  • Wenn der Dateiname das Format EXAMPLE hat. EXT+ABC, die Erweiterung EXT wird angenommen, um eine installierte E/A-Prozedur zu identifizieren, die aufgerufen wird, um E/A für die Datei auszuführen. Weitere Informationen finden Sie unter mmioInstallIOProc.
  • Wenn der Dateiname NULL ist und keine E/A-Prozedur angegeben wird, wird angenommen, dass das adwInfo-Element der MMIOINFO-Struktur das Standarddateihandle (nicht HMMIO) einer derzeit geöffneten Datei ist.
Der Dateiname darf nicht länger als 128 Zeichen sein, einschließlich des beendenden NULL-Zeichens.

Legen Sie beim Öffnen einer Speicherdatei szFilename auf NULL fest.

pmmioinfo

Zeiger auf eine MMIOINFO-Struktur mit zusätzlichen Parametern, die von mmioOpen verwendet werden. Sofern Sie keine Speicherdatei öffnen, die Größe eines Puffers für gepufferte E/A-Vorgänge oder eine deinstallierte E/A-Prozedur zum Öffnen einer Datei angeben, sollte dieser Parameter NULL sein. Wenn dieser Parameter nicht NULL ist, müssen alle nicht verwendeten Member der MMIOINFO-Struktur , auf die verwiesen wird, auf Null festgelegt werden, einschließlich der reservierten Elemente.

fdwOpen

Flags für den geöffneten Vorgang. Die flags MMIO_READ, MMIO_WRITE und MMIO_READWRITE schließen sich gegenseitig aus – es sollte nur eine angegeben werden. Die flags MMIO_COMPAT, MMIO_EXCLUSIVE, MMIO_DENYWRITE, MMIO_DENYREAD und MMIO_DENYNONE sind Dateifreigabeflags. Die folgenden Werte werden definiert.

Wert Bedeutung
MMIO_ALLOCBUF Öffnet eine Datei für gepufferte E/A. Um einen Puffer zuzuweisen, der größer oder kleiner als die Standardpuffergröße (8K, definiert als MMIO_DEFAULTBUFFER) ist, legen Sie den cchBuffer-Member der MMIOINFO-Struktur auf die gewünschte Puffergröße fest. Wenn cchBuffer null ist, wird die Standardpuffergröße verwendet. Wenn Sie Einen eigenen E/A-Puffer bereitstellen, sollte dieses Flag nicht verwendet werden.
MMIO_COMPAT Öffnet die Datei im Kompatibilitätsmodus, sodass jeder Prozess auf einem bestimmten Computer die Datei beliebig oft öffnen kann. Wenn die Datei mit einem der anderen Freigabemodi geöffnet wurde, schlägt mmioOpen fehl.
MMIO_CREATE Erstellt eine neue Datei. Wenn die Datei bereits vorhanden ist, wird sie auf die Länge null abgeschnitten. Bei Speicherdateien gibt dieses Flag an, dass sich das Ende der Datei zunächst am Anfang des Puffers befindet.
MMIO_DELETE Löscht eine Datei. Wenn dieses Flag angegeben ist, sollte szFilename nicht NULL sein. Der Rückgabewert ist TRUE (umwandlung in HMMIO), wenn die Datei erfolgreich gelöscht wurde oder andernfalls FALSE . Rufen Sie die mmioClose-Funktion nicht für eine datei auf, die gelöscht wurde. Wenn dieses Flag angegeben ist, werden alle anderen Flags ignoriert, die Dateien öffnen.
MMIO_DENYNONE Öffnet die Datei, ohne anderen Prozessen lese- oder schreibzugriff auf die Datei zu verweigern. Wenn die Datei von einem anderen Prozess im Kompatibilitätsmodus geöffnet wurde, schlägt mmioOpen fehl.
MMIO_DENYREAD Öffnet die Datei und verweigert anderen Prozessen den Lesezugriff auf die Datei. Wenn die Datei im Kompatibilitätsmodus oder für den Lesezugriff durch einen anderen Prozess geöffnet wurde, schlägt mmioOpen fehl.
MMIO_DENYWRITE Öffnet die Datei und verweigert anderen Prozessen den Schreibzugriff auf die Datei. Wenn die Datei im Kompatibilitätsmodus oder für den Schreibzugriff durch einen anderen Prozess geöffnet wurde, schlägt mmioOpen fehl.
MMIO_EXCLUSIVE Öffnet die Datei und verweigert anderen Prozessen lese- und schreibzugriff auf die Datei. Wenn die Datei in einem anderen Modus für Lese- oder Schreibzugriff geöffnet wurde, auch durch den aktuellen Prozess, schlägt mmioOpen fehl.
MMIO_EXIST Bestimmt, ob die angegebene Datei vorhanden ist, und erstellt einen vollqualifizierten Dateinamen aus dem in szFilename angegebenen Pfad. Der Rückgabewert ist TRUE (umwandlung in HMMIO), wenn die Qualifikation erfolgreich war und die Datei vorhanden ist, oder andernfalls FALSE . Die Datei wird nicht geöffnet, und die Funktion gibt kein gültiges E/A-Dateihandle für Multimediadateien zurück. Versuchen Sie also nicht, die Datei zu schließen.
Hinweis Anwendungen sollten stattdessen GetFileAttributes oder GetFileAttributesEx aufrufen.
 
MMIO_GETTEMP Erstellt einen temporären Dateinamen, optional mithilfe der parameter, die in szFilename übergeben werden. Sie können beispielsweise "C:F" angeben, um eine temporäre Datei auf Laufwerk C zu erstellen, beginnend mit dem Buchstaben "F". Der resultierende Dateiname wird in den Puffer kopiert, auf den szFilename verweist. Der Puffer muss groß genug sein, um mindestens 128 Zeichen aufzunehmen.

Wenn der temporäre Dateiname erfolgreich erstellt wurde, wird der Rückgabewert MMSYSERR_NOERROR (in HMMIO umgewandelt). Andernfalls wird der Rückgabewert andernfalls MMIOERR_FILENOTFOUND . Die Datei wird nicht geöffnet, und die Funktion gibt kein gültiges E/A-Dateihandle für Multimediadateien zurück. Versuchen Sie also nicht, die Datei zu schließen. Dieses Flag setzt alle anderen Flags außer Kraft.

Hinweis Anwendungen sollten stattdessen GetTempFileName aufrufen.
 
MMIO_PARSE Erstellt einen vollqualifizierten Dateinamen aus dem pfad, der in szFilename angegeben ist. Der vollqualifizierte Name wird in den Puffer kopiert, auf den szFilename verweist. Der Puffer muss groß genug sein, um mindestens 128 Zeichen aufzunehmen.

Wenn die Funktion erfolgreich ist, ist der Rückgabewert TRUE (in HMMIO umgewandelt). Andernfalls ist der Rückgabewert FALSE. Die Datei wird nicht geöffnet, und die Funktion gibt kein gültiges E/A-Dateihandle für Multimediadateien zurück. Versuchen Sie also nicht, die Datei zu schließen. Wenn dieses Flag angegeben ist, werden alle Flags ignoriert, die Dateien öffnen.

Hinweis Anwendungen sollten stattdessen GetFullPathName aufrufen.
 
MMIO_READ Öffnet eine Datei nur zum Lesen. Dies ist die Standardeinstellung, wenn MMIO_WRITE und MMIO_READWRITE nicht angegeben werden.
MMIO_READWRITE Öffnet die Datei zum Lesen und Schreiben.
MMIO_WRITE Öffnet die Datei nur zum Schreiben.

Rückgabewert

Keine

Bemerkungen

Wenn lpmmioinfo auf eine MMIOINFO-Struktur verweist, initialisieren Sie die Member der Struktur wie folgt. Alle nicht verwendeten Member müssen auf Null festgelegt werden, einschließlich reservierter Member.

  • Um das Öffnen einer Datei mit einer installierten E/A-Prozedur anzufordern, legen Sie fccIOProc auf den vierstelligen Code der E/A-Prozedur fest, und legen Sie pIOProc auf NULL fest.
  • Um das Öffnen einer Datei mit einer deinstallierten E/A-Prozedur anzufordern, legen Sie IOProc so fest, dass auf die E/A-Prozedur verweist, und legen Sie fccIOProc auf NULL fest.
  • Legen Sie fccIOProc und pIOProc auf NULLfest, ummmioOpen anzufordern, welche E/A-Prozedur zum Öffnen der Datei verwendet werden soll. Dies ist das Standardverhalten, wenn keine MMIOINFO-Struktur angegeben wird.
  • Um eine Speicherdatei mit einem intern zugeordneten und verwalteten Puffer zu öffnen, legen Sie pchBuffer auf NULL, fccIOProc auf FOURCC_MEM, cchBuffer auf die Anfangsgröße des Puffers und adwInfo auf die inkrementelle Erweiterungsgröße des Puffers fest. Diese Speicherdatei wird bei Bedarf automatisch in Inkrementen der in adwInfo angegebenen Anzahl von Bytes erweitert. Geben Sie das MMIO_CREATE-Flag für den dwOpenFlags-Parameter an, um zunächst das Ende der Datei auf den Anfang des Puffers festzulegen.
  • Um eine Speicherdatei mit einem von der Anwendung bereitgestellten Puffer zu öffnen, legen Sie pchBuffer so fest, dass er auf den Speicherpuffer, fccIOProc auf FOURCC_MEM, cchBuffer auf die Größe des Puffers und adwInfo auf die inkrementelle Erweiterungsgröße des Puffers zeigt. Die Erweiterungsgröße in adwInfo sollte nur dann nonzero sein, wenn pchBuffer ein Zeiger ist, der durch Aufrufen der Funktionen GlobalAlloc und GlobalLock abgerufen wird. in diesem Fall wird die GlobalReAlloc-Funktion aufgerufen, um den Puffer zu erweitern. Anders ausgedrückt: Wenn pchBuffer auf ein lokales oder globales Array oder einen Speicherblock im lokalen Heap zeigt, muss adwInfo 0 sein. Geben Sie das MMIO_CREATE-Flag für den dwOpenFlags-Parameter an, um zunächst das Ende der Datei auf den Anfang des Puffers festzulegen. Andernfalls gilt der gesamte Speicherblock als lesbar.
  • Um ein derzeit geöffnetes Standarddateihandle (d. h. ein Dateihandle ohne den HMMIO-Typ ) mit Multimediadatei-E/A-Diensten zu verwenden, legen Sie fccIOProc auf FOURCC_DOS, pchBuffer auf NULL und adwInfo auf das Standarddateihandle fest. Offsets in der Datei sind relativ zum Anfang der Datei und beziehen sich nicht auf die Position in der Standarddatei zum Zeitpunkt des Aufrufs von mmioOpen . Der anfängliche E/A-Offset der Multimediadatei entspricht dem Offset in der Standarddatei, wenn mmioOpen aufgerufen wird. Um das E/A-Dateihandle der Multimediadatei zu schließen, ohne das Standarddateihandle zu schließen, übergeben Sie das MMIO_FHOPEN-Flag an mmioClose.
Sie müssen mmioClose aufrufen, um eine mit mmioOpen geöffnete Datei zu schließen. Offene Dateien werden nicht automatisch geschlossen, wenn eine Anwendung beendet wird.

Hinweis

Der mmiscapi.h-Header definiert mmioOpen als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit nicht codierungsneutralem Code kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile mmiscapi.h (einschließlich Mmiscapi.h, Windows.h)
Bibliothek Winmm.lib
DLL Winmm.dll