Condividi tramite


Funzione SetupCopyOEMInfA (setupapi.h)

[Questa funzione è disponibile per l'uso nei sistemi operativi indicati nella sezione Requisiti. È possibile che in versioni successive sia stata modificata o non sia più disponibile. SetupAPI non deve più essere usato per l'installazione di applicazioni. Usare invece Windows Installer per lo sviluppo di programmi di installazione di 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.

Per un chiamante di questa funzione sono necessari privilegi amministrativi, in caso contrario la funzione ha esito negativo.

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, incluso il valore NULL di terminazione.

[in] OEMSourceMediaLocation

Informazioni sulla posizione di origine da archiviare nell'oggetto .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, incluso il valore NULL di terminazione.

[in] OEMSourceMediaType

Tipo di supporto di origine a cui fanno riferimento le informazioni sulla posizione. Questo parametro può essere uno dei valori seguenti.

Valore Significato
SPOST_NONE
Nessuna informazione multimediale di origine viene archiviata nel file pnf. Il valore di OEMSourceMediaLocation viene ignorato in questo caso.
SPOST_PATH
OEMSourceMediaLocation contiene un percorso del supporto di origine. Ad esempio, se il supporto è su un floppy, questo percorso potrebbe essere "A:\". Se OEMSourceMediaLocation è NULL, si presuppone che il percorso sia il percorso in cui si trova .inf. Se .inf ha un valore pnf corrispondente in tale percorso, le informazioni sui supporti di origine del file pnf vengono trasferite al file pnf di destinazione.
SPOST_URL
OEMSourceMediaLocation contiene un URL (Universal Resource Locator) che specifica il percorso Internet da cui sono stati recuperati i file con estensione inf/driver. Se OEMSourceMediaLocation è NULL, si presuppone che sia stato usato il percorso di Gestione download codice predefinito.

[in] CopyStyle

Specifica il modo in cui il file inf viene copiato nella directory inf. È possibile combinare i flag seguenti.

Valore Significato
SP_COPY_DELETESOURCE
Eliminare il file di origine nella copia riuscita.
SP_COPY_REPLACEONLY
Copiare solo se il file esiste già nella directory Inf. Questo flag può essere usato per aggiornare le informazioni sulla posizione di origine per un oggetto .inf esistente.
SP_COPY_NOOVERWRITE
Copiare solo se i file specificati non esistono nella directory Inf. Se l'oggetto inf esiste attualmente, questa API ha esito negativo e GetLastError restituisce ERROR_FILE_EXISTS. In questo caso, il nome del file con estensione inf esistente viene inserito nel campo appropriato nei buffer di output delle informazioni del file .inf di destinazione.
SP_COPY_OEMINF_CATALOG_ONLY
I file di catalogo corrispondenti di .inf specificati viene copiato in %windir%\Inf. Se questo flag viene specificato, le informazioni sul nome file di destinazione vengono immesse al termine della restituzione se il file con estensione inf specificato esiste già nella directory Inf.

[out, optional] DestinationInfFileName

Puntatore a un buffer per ricevere il nome del file inf assegnato al file al momento della copia nella directory Inf. Il buffer, se specificato, deve in genere essere MAX_PATH in 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 è impostato sulla stringa vuota. Questo parametro può essere NULL.

[in] DestinationInfFileNameSize

Dimensioni del buffer DestinationInfFileName , in caratteri o zero se il buffer non è specificato. Se destinationInfFileName è specificato e questa dimensione del buffer è minore delle dimensioni necessarie per restituire il nome file inf di destinazione (incluso il percorso completo), questa funzione ha esito negativo. 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, incluso un valore NULL terminante. Se viene specificato il flag SP_COPY_OEMINF_CATALOG_ONLY, questa variabile riceve una lunghezza 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 al termine della restituzione (o ERROR_FILE_EXISTS) per puntare all'inizio del componente del 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 a caratteri è impostato su NULL al termine della restituzione riuscita. Questo parametro può essere NULL.

Valore restituito

Questa funzione restituisce WINSETUPAPI BOOL.

Commenti

La funzione SetupCopyOEMInf copia un file inf specificato nella directory %windir%\Inf. SetupCopyOEMInf non copia il file se rileva che esiste già un'immagine binaria del file con estensione inf specificata nella directory Inf con lo stesso nome o un nome del form OEM*.inf. Quando SetupCopyOEMInf copia un file, rinomina il file copiato in OEM*.inf. Il nome specificato è univoco e non può essere stimato.

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 modulo OEM*.inf vengono enumerati e tutti i file con le stesse dimensioni del file con estensione inf specificati vengono confrontati.

La directory Inf viene cercata per il nome file di origine del file inf. Se esiste un file con estensione inf dello stesso nome ed è la stessa dimensione 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à un ulteriore controllo viene eseguito per determinare se il file con estensione inf specificato contiene una voce CatalogFile= nella relativa sezione [Version]. In caso contrario, viene usato il file con estensione inf %windir%\Inf primary nome file con estensione ".cat" per determinare se il catalogo è già installato. Se è installato un catalogo, ma non è uguale al catalogo associato all'origine inf, non viene considerato una corrispondenza e un'enumerazione. È possibile avere più file 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 OEM con estensione inf che non specificano una voce CatalogFile= sono considerati non validi rispetto alla verifica della firma digitale.

Nei casi in cui il file 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 file esistenti vengono usati e il comportamento di sostituzione del file è basato sui flag CopyStyle specificati. Il comportamento di sostituzione fa riferimento solo alle informazioni sui supporti di origine archiviate in .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 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 XP [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
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)

Vedi anche

Funzioni

Panoramica

SetupUninstallOEMInf