Freigeben über


mmioOpenA-Funktion (mmiscapi.h)

Die mmioOpen-Funktion öffnet eine Datei für ungepufferte oder gepufferte E/A; 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 sie nicht mit anderen Datei-E/A-Funktionen als Multimediadateien-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

Zeigen Sie 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 die Datei geöffnet wird, wie folgt:

  • Wenn der Dateiname kein Pluszeichen (+) enthält, wird davon ausgegangen, dass er der Name einer Standarddatei ist (d. h. eine Datei, deren Typ nicht HMMIO).
  • Wenn der Dateiname des Formulars EXAMPLE ist. EXT+ABC, die Erweiterung EXT wird angenommen, um eine installierte E/A-Prozedur zu identifizieren, die zum Ausführen von E/A in der Datei aufgerufen wird. Weitere Informationen finden Sie unter mmioInstallIOProc.
  • Wenn der Dateiname NULL- ist und keine E/A-Prozedur angegeben wird, wird das adwInfo Mitglied der MMIOINFO--Struktur als Standarddateihandle (nichtHMMIO) einer aktuell geöffneten Datei angenommen.
Der Dateiname darf nicht länger als 128 Zeichen sein, einschließlich des endenden NULL-Zeichens.

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

pmmioinfo

Zeiger auf eine MMIOINFO Struktur mit zusätzlichen Parametern, die von mmioOpenverwendet werden. Wenn Sie keine Speicherdatei öffnen, die Größe eines Puffers für gepufferte E/A angeben 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 Null festgelegt werden, einschließlich der reservierten Member.

fdwOpen

Flags für den geöffneten Vorgang. Die kennzeichen 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 Dateifreigabekennzeichnungen. Die folgenden Werte sind 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 ist (8K, definiert als MMIO_DEFAULTBUFFER), 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 Ihren 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 null Länge abgeschnitten. Bei Speicherdateien gibt dieses Flag an, dass das Ende der Datei anfangs am Anfang des Puffers liegt.
MMIO_DELETE Löscht eine Datei. Wenn dieses Flag angegeben ist, sollte szFilename nicht NULL-sein. Der Rückgabewert ist TRUE (in HMMIO-umwandeln), 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, die dateien öffnen, ignoriert.
MMIO_DENYNONE Öffnet die Datei, ohne anderen Prozessen Lese- oder Schreibzugriff auf die Datei zu verweigern. Wenn die Datei durch einen anderen Prozess im Kompatibilitätsmodus geöffnet wurde, schlägt mmioOpen fehl.
MMIO_DENYREAD Öffnet die Datei und verweigert anderen Prozessen 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 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 im 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 Pfad, der in szFilenameangegeben ist. Der Rückgabewert ist TRUE (in HMMIO-umwandeln), wenn die Qualifikation erfolgreich war und die Datei vorhanden ist oder FALSE andernfalls vorhanden ist. Die Datei wird nicht geöffnet, und die Funktion gibt kein gültiges E/A-Dateihandle für Multimediadateien zurück. Versuchen Sie daher nicht, die Datei zu schließen.
Note Applications should call GetFileAttributes or GetFileAttributesEx instead.
 
MMIO_GETTEMP Erstellt einen temporären Dateinamen, optional mithilfe der parameter, die in szFilename übergeben werden. Beispielsweise können Sie "C:F" angeben, um eine temporäre Datei zu erstellen, die sich auf Laufwerk C befindet, beginnend mit dem Buchstaben "F". Der resultierende Dateiname wird in den Puffer kopiert, auf den szFilenameverweist. Der Puffer muss groß genug sein, um mindestens 128 Zeichen lang zu halten.

Wenn der temporäre Dateiname erfolgreich erstellt wurde, wird der Rückgabewert MMSYSERR_NOERROR (in HMMIO-). Andernfalls wird der Rückgabewert 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 daher nicht, die Datei zu schließen. Dieses Kennzeichen setzt alle anderen Flags außer Kraft.

Hinweis Anwendungen stattdessen GetTempFileName aufrufen sollten.
 
MMIO_PARSE Erstellt einen vollqualifizierten Dateinamen aus dem Pfad, der in szFilenameangegeben ist. Der vollqualifizierte Name wird in den Puffer kopiert, auf den szFilenameverweist. Der Puffer muss groß genug sein, um mindestens 128 Zeichen lang zu halten.

Wenn die Funktion erfolgreich ist, ist der Rückgabewert TRUE (in HMMIO-). 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 daher nicht, die Datei zu schließen. Wenn dieses Flag angegeben ist, werden alle Flags, die dateien öffnen, ignoriert.

Note Applications should call GetFullPathName instead.
 
MMIO_READ Öffnet die Datei nur zum Lesen. Dies ist die Standardeinstellung, wenn MMIO_WRITE und MMIO_READWRITE nicht angegeben sind.
MMIO_READWRITE Öffnet die Datei zum Lesen und Schreiben.
MMIO_WRITE Öffnet die Datei nur zum Schreiben.

Rückgabewert

Nichts

Bemerkungen

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

  • Wenn Sie anfordern möchten, dass eine Datei mit einer installierten E/A-Prozedur geöffnet wird, legen Sie fccIOProc auf den vierstelligen Code der E/A-Prozedur fest, und legen Sie pIOProc- auf NULL-fest.
  • Wenn Sie anfordern möchten, dass eine Datei mit einer deinstallierten E/A-Prozedur geöffnet wird, legen Sie IOProc- auf die E/A-Prozedur fest, und legen Sie fccIOProc- auf NULL-fest.
  • Um anzufordern, dass mmioOpen bestimmen, welche E/A-Prozedur verwendet werden soll, um die Datei basierend auf dem Dateinamen in szFilenamezu öffnen, legen Sie fccIOProc und pIOProc auf NULL-fest. Dies ist das Standardverhalten, wenn keine MMIOINFO- Struktur angegeben ist.
  • Um eine Speicherdatei mit einem intern zugewiesenen und verwalteten Puffer zu öffnen, legen Sie pchBuffer- auf NULL-fest, fccIOProc auf FOURCC_MEM, cchBuffer auf die Anfangsgröße des Puffers und adwInfo auf die inkrementelle Erweiterungsgröße des Puffers. Diese Speicherdatei wird bei Bedarf automatisch in Schritten der Anzahl der in adwInfo angegebenen Byte erweitert. Geben Sie das MMIO_CREATE Flag für den dwOpenFlags Parameter an, um das Ende der Datei anfangs als Anfang des Puffers festzulegen.
  • Um eine Speicherdatei mit einem vom Anwendung bereitgestellten Puffer zu öffnen, legen Sie pchBuffer fest, auf den Speicherpuffer zu zeigen, fccIOProc auf FOURCC_MEM, cchBuffer auf die Größe des Puffers, und adwInfo auf die inkrementelle Erweiterungsgröße des Puffers. Die Erweiterungsgröße in adwInfo- sollte nur dann nichtzero sein, wenn pchBuffer- ein Zeiger ist, der durch Aufrufen der GlobalAlloc und GlobalLock--Funktionen abgerufen wird; in diesem Fall wird die GlobalReAlloc-Funktion aufgerufen, um den Puffer zu erweitern. Wenn pchBuffer auf ein lokales oder globales Array oder einen Speicherblock im lokalen Heap zeigt, muss adwInfo- null sein. Geben Sie das MMIO_CREATE Flag für den dwOpenFlags Parameter an, um das Ende der Datei anfangs als Anfang des Puffers festzulegen. Andernfalls wird der gesamte Speicherblock als lesbar betrachtet.
  • Um ein aktuell geöffnetes Standarddateihandle (d. h. ein Dateihandle, das nicht über den HMMIO- Typ verfügt) mit E/A-Diensten für Multimediadateien zu verwenden, legen Sie fccIOProc- auf FOURCC_DOS fest, pchBuffer, um NULL-und adwInfo- auf das Standarddateihandle zu . Offsets innerhalb der Datei beziehen sich relativ zum Anfang der Datei und beziehen sich nicht auf die Position in der Standarddatei, mmioOpen aufgerufen wird; 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 Datei zu schließen, die mit mmioOpengeöffnet wird. Geöffnete Dateien werden nicht automatisch geschlossen, wenn eine Anwendung beendet wird.

Anmerkung

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 Code, der nicht codierungsneutral ist, 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
mindestens unterstützte Client- Windows 2000 Professional [nur Desktop-Apps]
mindestens unterstützte Server- Windows 2000 Server [nur Desktop-Apps]
Zielplattform- Fenster
Header- mmiscapi.h (einschließen Mmiscapi.h, Windows.h)
Library Winmm.lib
DLL- Winmm.dll