Condividi tramite


funzione mmioOpenA (mmiscapi.h)

La funzione mmioOpen apre un file per le operazioni di I/O non memorizzate nel buffer; crea un file; elimina un file; o controlla se esiste un file. Il file può essere un file standard, un file di memoria o un elemento di un sistema di archiviazione personalizzato. L'handle restituito da mmioOpen non è un handle di file standard; non usarlo con funzioni di I/O di file diverse dalle funzioni di I/O dei file multimediali.

Nota Questa funzione è deprecata. Le applicazioni devono chiamare CreateFile per creare o aprire file.
 

Sintassi

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

Parametri

pszFileName

Puntatore a un buffer contenente il nome del file. Se non viene specificata alcuna procedura di I/O per aprire il file, il nome del file determina la modalità di apertura del file, come indicato di seguito:

  • Se il nome del file non contiene un segno più (+), si presuppone che sia il nome di un file standard ( ovvero un file il cui tipo non è HMMIO).
  • Se il nome del file è del formato EXAMPLE. EXT+ABC, si presuppone che l'estensione EXT identifichi una procedura di I/O installata chiamata per eseguire operazioni di I/O nel file. Per altre informazioni, vedere mmioInstallIOProc.
  • Se il nome file è NULL e non viene specificata alcuna procedura di I/O, si presuppone che il membro adwInfo della struttura MMIOINFO sia l'handle di file standard (nonHMMIO) di un file attualmente aperto.
Il nome del file non deve contenere più di 128 caratteri, incluso il carattere NULL di terminazione.

Quando si apre un file di memoria, impostare szFilename su NULL.

pmmioinfo

Puntatore a una struttura MMIOINFO contenente parametri aggiuntivi utilizzati da mmioOpen. A meno che non si stia aprendo un file di memoria, specificando le dimensioni di un buffer per le operazioni di I/O memorizzate nel buffer o specificando una procedura di I/O disinstallata per aprire un file, questo parametro deve essere NULL. Se questo parametro non è NULL, tutti i membri inutilizzati del MMIOINFO struttura a cui fa riferimento devono essere impostati su zero, inclusi i membri riservati.

fdwOpen

Flag per l'operazione di apertura. I flag MMIO_READ, MMIO_WRITE e MMIO_READWRITE si escludono a vicenda. È necessario specificarne solo uno. I flag MMIO_COMPAT, MMIO_EXCLUSIVE, MMIO_DENYWRITE, MMIO_DENYREAD e MMIO_DENYNONE sono flag di condivisione file. Vengono definiti i valori seguenti.

Valore Significato
MMIO_ALLOCBUF Apre un file per l'I/O memorizzato nel buffer. Per allocare un buffer maggiore o inferiore alla dimensione predefinita del buffer (8K, definita come MMIO_DEFAULTBUFFER), impostare il membro cchBuffer della struttura MMIOINFO alle dimensioni desiderate del buffer. Se cchBuffer è zero, viene usata la dimensione predefinita del buffer. Se si specifica un buffer di I/O personalizzato, questo flag non deve essere usato.
MMIO_COMPAT Apre il file con la modalità di compatibilità, consentendo a qualsiasi processo in un determinato computer di aprire il file un numero qualsiasi di volte. Se il file è stato aperto con una qualsiasi delle altre modalità di condivisione, mmioOpen ha esito negativo.
MMIO_CREATE Crea un nuovo file. Se il file esiste già, viene troncato a lunghezza zero. Per i file di memoria, questo flag indica che la fine del file è inizialmente all'inizio del buffer.
MMIO_DELETE Elimina un file. Se si specifica questo flag, szFilename non deve essere NULL. Il valore restituito è TRUE (cast a HMMIO) se il file è stato eliminato correttamente o FALSE in caso contrario. Non chiamare la funzione mmioClose per un file eliminato. Se questo flag viene specificato, tutti gli altri flag aperti vengono ignorati.
MMIO_DENYNONE Apre il file senza negare l'accesso in lettura o scrittura ad altri processi al file. Se il file è stato aperto in modalità di compatibilità da qualsiasi altro processo, mmioOpen ha esito negativo.
MMIO_DENYREAD Apre il file e nega l'accesso in lettura ad altri processi al file. Se il file è stato aperto in modalità di compatibilità o per l'accesso in lettura da qualsiasi altro processo, mmioOpen ha esito negativo.
MMIO_DENYWRITE Apre il file e nega l'accesso in scrittura ad altri processi al file. Se il file è stato aperto in modalità di compatibilità o per l'accesso in scrittura da qualsiasi altro processo, mmioOpen ha esito negativo.
MMIO_EXCLUSIVE Apre il file e nega ad altri processi l'accesso in lettura e scrittura al file. Se il file è stato aperto in qualsiasi altra modalità per l'accesso in lettura o scrittura, anche dal processo corrente, mmioOpen ha esito negativo.
MMIO_EXIST Determina se il file specificato esiste e crea un nome di file completo dal percorso specificato in szFilename. Il valore restituito è true (cast a HMMIO) se la qualifica è riuscita e il file esiste o FALSE in caso contrario. Il file non viene aperto e la funzione non restituisce un handle di file di I/O multimediale valido, quindi non tentare di chiudere il file.
Nota Le applicazioni devono chiamare GetFileAttributes o GetFileAttributesEx.
 
MMIO_GETTEMP Crea un nome di file temporaneo, facoltativamente usando i parametri passati in szFilename. Ad esempio, è possibile specificare "C:F" per creare un file temporaneo che risiede nell'unità C, a partire dalla lettera "F". Il nome file risultante viene copiato nel buffer a cui punta szFilename. Il buffer deve essere sufficientemente grande da contenere almeno 128 caratteri.

Se il nome file temporaneo è stato creato correttamente, il valore restituito viene MMSYSERR_NOERROR (cast a HMMIO). In caso contrario, il valore restituito è MMIOERR_FILENOTFOUND in caso contrario. Il file non viene aperto e la funzione non restituisce un handle di file di I/O multimediale valido, quindi non tentare di chiudere il file. Questo flag esegue l'override di tutti gli altri flag.

Nota Le applicazioni devono invece chiamare GetTempFileName.
 
MMIO_PARSE Crea un nome di file completo dal percorso specificato in szFilename. Il nome completo viene copiato nel buffer a cui punta szFilename. Il buffer deve essere sufficientemente grande da contenere almeno 128 caratteri.

Se la funzione ha esito positivo, il valore restituito viene true (cast a HMMIO). In caso contrario, il valore restituito è FALSE. Il file non viene aperto e la funzione non restituisce un handle di file di I/O multimediale valido, quindi non tentare di chiudere il file. Se questo flag viene specificato, tutti i flag aperti vengono ignorati.

Nota Le applicazioni devono invece chiamare GetFullPathName.
 
MMIO_READ Apre il file solo per la lettura. Si tratta dell'impostazione predefinita se non vengono specificati MMIO_WRITE e MMIO_READWRITE.
MMIO_READWRITE Apre il file per la lettura e la scrittura.
MMIO_WRITE Apre il file solo per la scrittura.

Valore restituito

Nessuno

Osservazioni

Se lpmmioinfo punta a una struttura MMIOINFO , inizializzare i membri della struttura come indicato di seguito. Tutti i membri inutilizzati devono essere impostati su zero, inclusi i membri riservati.

  • Per richiedere l'apertura di un file con una procedura di I/O installata, impostare fccIOProc sul codice a quattro caratteri della procedura di I/O e impostare pIOProc su NULL.
  • Per richiedere l'apertura di un file con una procedura di I/O disinstallata, impostare IOProc in modo che punti alla routine di I/O e impostare fccIOProc su NULL.
  • Per richiedere che mmioOpen determinare quale routine di I/O utilizzare per aprire il file in base al nome file contenuto in szFilename, impostare fccIOProc e pIOProc su NULL. Questo è il comportamento predefinito se non viene specificata alcuna struttura MMIOINFO .
  • Per aprire un file di memoria usando un buffer gestito e allocato internamente, impostare pchBuffer su NULL, fccIOProc su FOURCC_MEM, cchBuffer alle dimensioni iniziali del buffer e adwInfo alle dimensioni di espansione incrementali del buffer. Questo file di memoria verrà espanso automaticamente in incrementi del numero di byte specificato in adwInfo quando necessario. Specificare il flag MMIO_CREATE per il parametro dwOpenFlags per impostare inizialmente la fine del file come inizio del buffer.
  • Per aprire un file di memoria usando un buffer fornito dall'applicazione, impostare pchBuffer in modo che punti al buffer di memoria, fccIOProc su FOURCC_MEM, cchBuffer alle dimensioni del buffer e adwInfo alle dimensioni di espansione incrementale del buffer. Le dimensioni di espansione in adwInfo devono essere diverse da zero solo se pchBuffer è un puntatore ottenuto chiamando le funzioni GlobalAlloc e GlobalLock; in questo caso, la funzione GlobalReAlloc verrà chiamata per espandere il buffer. In altre parole, se pchBuffer punta a una matrice locale o globale o a un blocco di memoria nell'heap locale, adwInfo deve essere zero. Specificare il flag MMIO_CREATE per il parametro dwOpenFlags per impostare inizialmente la fine del file come inizio del buffer. In caso contrario, l'intero blocco di memoria viene considerato leggibile.
  • Per usare un handle di file standard attualmente aperto (ovvero un handle di file che non ha il tipo di HMMIO) con servizi di I/O di file multimediali, impostare fccIOProc su FOURCC_DOS, pchBuffer su NULLe adwInfo all'handle di file standard. Gli offset all'interno del file saranno relativi all'inizio del file e non sono correlati alla posizione nel file standard al momento della chiamata mmioOpen; l'offset di I/O iniziale del file multimediale sarà uguale all'offset nel file standard quando viene chiamato mmioOpen. Per chiudere l'handle di file di I/O multimediale senza chiudere l'handle di file standard, passare il flag di MMIO_FHOPEN a mmioClose.
È necessario chiamare mmioClose per chiudere un file aperto usando mmioOpen. I file aperti non vengono chiusi automaticamente quando un'applicazione viene chiusa.

Nota

L'intestazione mmiscapi.h definisce mmioOpen come alias che seleziona automaticamente la versione ANSI o Unicode di questa funzione in base alla definizione della costante del preprocessore UNICODE. La combinazione dell'utilizzo dell'alias indipendente dalla codifica con il codice non indipendente dalla codifica può causare mancate corrispondenze che generano errori di compilazione o di runtime. Per altre informazioni, vedere convenzioni di per i prototipi di funzioni.

Fabbisogno

Requisito Valore
client minimo supportato Windows 2000 Professional [solo app desktop]
server minimo supportato Windows 2000 Server [solo app desktop]
piattaforma di destinazione Finestre
intestazione mmiscapi.h (include Mmiscapi.h, Windows.h)
libreria Winmm.lib
dll Winmm.dll