funzione mmioOpenA (mmiscapi.h)
La funzione mmioOpen
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 (non HMMIO ) di un file attualmente aperto.
Quando si apre un file di memoria, impostare szFilename su NULL.
pmmioinfo
Puntatore a una struttura MMIOINFO
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 |
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 |
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
- 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 sepchBuffer è un puntatore ottenuto chiamando le funzioni GlobalAlloc e GlobalLock ; in questo caso, la funzioneGlobalReAlloc 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.
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 |