Funzione mmioOpenW (mmiscapi.h)
La funzione mmioOpen apre un file per I/O non memorizzati 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 I/O dei file multimediali.
Sintassi
HMMIO mmioOpenW(
LPWSTR 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 che viene chiamata per eseguire operazioni di I/O nel file. Per altre informazioni, vedere mmioInstallIOProc.
- Se il nome del 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 (non HMMIO) di un file attualmente aperto.
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 della struttura MMIOINFO 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 le operazioni di I/O memorizzate 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 sulla dimensione del buffer desiderata. Se cchBuffer è zero, viene utilizzata 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 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 questo flag viene specificato, 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 ad altri processi l'accesso in lettura o scrittura 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 ad altri processi l'accesso in lettura 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 ad altri processi l'accesso in scrittura al file. Se il file è stato aperto in modalità 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 ha avuto esito positivo 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 file multimediale valido, pertanto non tentare di chiudere il file.
Nota Le applicazioni devono invece chiamare GetFileAttributes o GetFileAttributesEx .
|
MMIO_GETTEMP |
Crea un nome 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 del file risultante viene copiato nel buffer a cui punta szFilename. Il buffer deve essere sufficientemente grande da contenere almeno 128 caratteri.
Se il nome del 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 file multimediale valido, pertanto 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 è 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 file multimediale valido, pertanto 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 in sola 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 per la sola 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 I/O e impostare fccIOProc su NULL.
- Per richiedere a mmioOpen di determinare la procedura di I/O da utilizzare per aprire il file in base al nome file contenuto in szFilename, impostare fccIOProc e pIOProc su NULL. Si tratta del comportamento predefinito se non viene specificata alcuna struttura MMIOINFO .
- Per aprire un file di memoria usando un buffer allocato e gestito internamente, impostare pchBuffer su NULL, fccIOProc su FOURCC_MEM, cchBuffer sulle dimensioni iniziali del buffer e adwInfo sulle dimensioni di espansione incrementali del buffer. Questo file di memoria verrà espanso automaticamente in incrementi del numero di byte specificato in adwInfo , se 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 per puntare al buffer di memoria, fccIOProc su FOURCC_MEM, cchBuffer alle dimensioni del buffer e adwInfo alle dimensioni incrementali del buffer. Le dimensioni di espansione in adwInfo devono essere non 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 HMMIO , con servizi di I/O multimediali, impostare fccIOProc su FOURCC_DOS, pchBuffer su NULL e adwInfo per l'handle 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 in cui viene chiamato mmioOpen ; l'offset di I/O multimediale iniziale sarà lo stesso dell'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 MMIO_FHOPEN a mmioClose.
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 preprocessore UNICODE. La combinazione dell'utilizzo dell'alias di codifica neutrale con il codice che non è neutrale dalla codifica può causare errori di corrispondenza che causano errori di compilazione o runtime. Per altre informazioni, vedere Convenzioni per i prototipi di funzione.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows 2000 Professional [solo app desktop] |
Server minimo supportato | Windows 2000 Server [solo app desktop] |
Piattaforma di destinazione | Windows |
Intestazione | mmiscapi.h (includono Mmiscapi.h, Windows.h) |
Libreria | Winmm.lib |
DLL | Winmm.dll |