Funzione SetupCopyOEMInfA (setupapi.h)
[Questa funzione è disponibile per l'uso nei sistemi operativi indicati nella sezione Requisiti. Potrebbe essere modificato o non disponibile nelle versioni successive. SetupAPI non deve più essere usata per l'installazione di applicazioni. Usare invece Windows Installer per lo sviluppo di programmi di installazione delle applicazioni. SetupAPI continua a essere usato per l'installazione dei driver di dispositivo.
La funzione SetupCopyOEMInf copia un file inf specificato nella directory %windir%/Inf.
Un chiamante di questa funzione è necessario disporre di privilegi amministrativi; in caso contrario, la funzione non riesce.
Sintassi
WINSETUPAPI BOOL SetupCopyOEMInfA(
[in] PCSTR SourceInfFileName,
[in] PCSTR OEMSourceMediaLocation,
[in] DWORD OEMSourceMediaType,
[in] DWORD CopyStyle,
[out, optional] PSTR DestinationInfFileName,
[in] DWORD DestinationInfFileNameSize,
[out, optional] PDWORD RequiredSize,
[out, optional] PSTR *DestinationInfFileNameComponent
);
Parametri
[in] SourceInfFileName
Percorso completo del file con estensione inf di origine. È consigliabile usare una stringa con terminazione Null. Questo percorso non deve superare MAX_PATH dimensioni, inclusa la terminazione NULL.
[in] OEMSourceMediaLocation
Informazioni sulla posizione di origine da archiviare nel file con estensione inf precompilato (.pnf). Queste informazioni sulla posizione sono specifiche del tipo di supporto di origine specificato. È consigliabile usare una stringa con terminazione Null. Questo percorso non deve superare MAX_PATH dimensioni, inclusa la terminazione NULL.
[in] OEMSourceMediaType
Tipo di supporto di origine a cui fanno riferimento le informazioni sulla posizione. Questo parametro può essere uno dei valori seguenti.
[in] CopyStyle
Specifica il modo in cui il file inf viene copiato nella directory inf. È possibile combinare i flag seguenti.
Valore | Significato |
---|---|
|
Eliminare il file di origine alla corretta copia. |
|
Copiare solo se il file esiste già nella directory Inf. Questo flag può essere usato per aggiornare le informazioni sul percorso di origine per un inf esistente. |
|
Copiare solo se i file specificati non esistono attualmente nella directory Inf. Se il file inf esiste attualmente, questa API ha esito negativo e GetLastError restituisce ERROR_FILE_EXISTS. In questo caso, il nome file del file inf esistente viene inserito nel campo appropriato nei buffer di output delle informazioni del file con estensione inf di destinazione. |
|
I file di catalogo corrispondenti del file con estensione inf specificati sono copiati in %windir%\Inf. Se questo flag viene specificato, le informazioni sul nome file di destinazione vengono immesse al termine della restituzione se il file inf specificato esiste già nella directory Inf. |
[out, optional] DestinationInfFileName
Puntatore a un buffer per ricevere il nome del file inf assegnato al buffer al momento della copia nella directory Inf. Il buffer, se specificato, deve in genere essere MAX_PATH lunghezza. Se viene specificato il flag SP_COPY_NOOVERWRITE e la funzione SetupCopyOEMInf ha esito negativo con un codice restituito di ERROR_FILE_EXISTS, questo buffer contiene il nome del file inf esistente. Se viene specificato il flag SP_COPY_OEMINF_CATALOG_ONLY, questo buffer contiene il nome file inf di destinazione se il file inf è già presente nella directory Inf. In caso contrario, questo buffer viene impostato sulla stringa vuota. Questo parametro può essere NULL.
[in] DestinationInfFileNameSize
Dimensioni della DestinationInfFileName buffer, in caratteri o zero se il buffer non è specificato. Se viene specificato DestinationInfFileName e questa dimensione del buffer è inferiore alla dimensione necessaria per restituire il nome file inf di destinazione (incluso il percorso completo), questa funzione non riesce. In questo caso getLastError restituisce ERROR_INSUFFICIENT_BUFFER.
[out, optional] RequiredSize
Puntatore a una variabile che riceve le dimensioni (in caratteri) necessarie per archiviare il nome del file inf di destinazione, inclusa una terminazione NULL. Se viene specificato il flag SP_COPY_OEMINF_CATALOG_ONLY, questa variabile riceve una lunghezza di stringa solo se il file inf esiste già nella directory Inf. In caso contrario, questa variabile è impostata su zero. Questo parametro può essere NULL.
[out, optional] DestinationInfFileNameComponent
Puntatore a una stringa impostata in caso di esito positivo restituito (o ERROR_FILE_EXISTS) in modo che punti all'inizio del componente nome file del percorso archiviato nel parametro DestinationInfFileName. Se viene specificato il flag SP_COPY_OEMINF_CATALOG_ONLY, il parametro DestinationInfFileName può essere una stringa vuota. In questo caso, il puntatore di caratteri è impostato su NULL al completamento della restituzione. Questo parametro può essere NULL.
Valore restituito
Questa funzione restituisce WINSETUPAPI BOOL.
Osservazioni
La funzione setupCopyOEMInf
SetupCopyOEMInf usa la procedura seguente per determinare se il file inf esiste già nella directory Inf:
Tutti i file con estensione inf con nomi del formato OEM*.inf vengono enumerati e tutti i file con le stesse dimensioni del file con estensione inf specificati vengono confrontati in formato binario.
Viene eseguita la ricerca del nome file di origine del file inf nella directory Inf. Se esiste un file inf con lo stesso nome e ha le stesse dimensioni del file con estensione inf specificato, i due file sono binari rispetto a determinare se sono identici.
Se il file con estensione inf specificato esiste già, viene eseguito un ulteriore controllo per determinare se il file con estensione inf specificato contiene una voce CatalogFile= nella relativa sezione [Version]. In caso affermativo, il file con estensione inf %windir%\Inf nome file primario con estensione ".cat" viene usato per determinare se il catalogo è già installato. Se è installato un catalogo, ma non corrisponde al catalogo associato all'origine inf, non viene considerato una corrispondenza e le enumerazioni continuano. È possibile avere più file con estensione inf identici con cataloghi univoci contenuti nella directory %windir%\Inf. Se non viene trovata una corrispondenza esistente, i file con estensione inf e cat vengono installati con un nome nuovo e univoco.
I file CON ESTENSIONE INF OEM che non specificano una voce CatalogFile= sono considerati non validi per quanto riguarda la verifica della firma digitale.
Nei casi in cui il file con estensione inf deve essere copiato nella directory %windir%\Inf, vengono segnalati eventuali errori di verifica della firma digitale.
Se i file con estensione inf e cat esistono già, questi nomi file esistenti vengono usati e il comportamento di sostituzione del file si basa sui flag CopyStyle specificati. Il comportamento di sostituzione si riferisce solo alle informazioni sui supporti di origine archiviate nel file con estensione pnf. I file con estensione inf, pnf e cat esistenti non vengono modificati.
Nota
L'intestazione setupapi.h definisce SetupCopyOEMInf 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 XP [solo app desktop] |
server minimo supportato | Windows Server 2003 [solo app desktop] |
piattaforma di destinazione | Finestre |
intestazione |
setupapi.h |
libreria |
Setupapi.lib |
dll | Setupapi.dll |
set di API | ext-ms-win-setupapi-classinstallers-l1-1-2 (introdotto in Windows 10, versione 10.0.14393) |