SetupCopyOEMInfW, fonction (setupapi.h)
[Cette fonction est disponible pour une utilisation dans les systèmes d’exploitation indiqués dans la section Configuration requise. Il peut être modifié ou indisponible dans les versions ultérieures. SetupAPI ne doit plus être utilisé pour installer des applications. Utilisez plutôt Windows Installer pour développer des programmes d’installation d’applications. SetupAPI continue d’être utilisé pour installer des pilotes de périphérique.]
La fonction SetupCopyOEMInf copie un fichier .inf spécifié dans le répertoire %windir%/Inf.
Un appelant de cette fonction est requis avec des privilèges d’administration, sinon la fonction échoue.
Syntaxe
WINSETUPAPI BOOL SetupCopyOEMInfW(
[in] PCWSTR SourceInfFileName,
[in] PCWSTR OEMSourceMediaLocation,
[in] DWORD OEMSourceMediaType,
[in] DWORD CopyStyle,
[out, optional] PWSTR DestinationInfFileName,
[in] DWORD DestinationInfFileNameSize,
[out, optional] PDWORD RequiredSize,
[out, optional] PWSTR *DestinationInfFileNameComponent
);
Paramètres
[in] SourceInfFileName
Chemin complet du fichier .inf source. Vous devez utiliser une chaîne terminée par null. Ce chemin d’accès ne doit pas dépasser MAX_PATH de taille, y compris la fin NULL.
[in] OEMSourceMediaLocation
Informations d’emplacement source à stocker dans le fichier .inf précompilé (.pnf). Ces informations d’emplacement sont spécifiques au type de média source spécifié. Vous devez utiliser une chaîne terminée par null. Ce chemin d’accès ne doit pas dépasser MAX_PATH de taille, y compris la fin NULL.
[in] OEMSourceMediaType
Type de média source référencé par les informations d’emplacement. Ce paramètre peut être l’une des valeurs suivantes.
[in] CopyStyle
Spécifie la façon dont le fichier .inf est copié dans le répertoire .inf. Les indicateurs suivants peuvent être combinés.
Valeur | Signification |
---|---|
|
Supprimez le fichier source lors de la copie réussie. |
|
Copiez uniquement si ce fichier existe déjà dans le répertoire Inf. Cet indicateur peut être utilisé pour mettre à jour les informations d’emplacement source d’un .inf existant. |
|
Copiez uniquement si les fichiers spécifiés n’existent pas actuellement dans le répertoire Inf. Si .inf existe actuellement, cette API échoue et GetLastError retourne ERROR_FILE_EXISTS. Dans ce cas, le nom de fichier .inf existant est placé dans le champ approprié dans les mémoires tampons de sortie d’informations du fichier .inf de destination. |
|
Les fichiers catalogue correspondants du fichier .inf spécifiés sont copiés dans %windir%\Inf. Si cet indicateur est spécifié, les informations de nom de fichier de destination sont entrées lors d’un retour réussi si le fichier .inf spécifié existe déjà dans le répertoire Inf. |
[out, optional] DestinationInfFileName
Pointeur vers une mémoire tampon pour recevoir le nom de fichier .inf affecté à celui-ci au moment où il a été copié dans le répertoire Inf. La mémoire tampon, si elle est spécifiée, doit généralement être MAX_PATH longueur. Si l’indicateur SP_COPY_NOOVERWRITE est spécifié et que la fonction SetupCopyOEMInf échoue avec un code de retour de ERROR_FILE_EXISTS, cette mémoire tampon contient le nom du fichier .inf existant. Si l’indicateur SP_COPY_OEMINF_CATALOG_ONLY est spécifié, cette mémoire tampon contient le nom de fichier .inf de destination si le fichier .inf est déjà présent dans le répertoire Inf. Sinon, cette mémoire tampon est définie sur la chaîne vide. Ce paramètre peut être NULL.
[in] DestinationInfFileNameSize
Taille de la mémoire tampon DestinationInfFileName, en caractères ou zéro si la mémoire tampon n’est pas spécifiée. Si DestinationInfFileName est spécifié et que cette taille de mémoire tampon est inférieure à la taille requise pour retourner le nom de fichier .inf de destination (y compris le chemin complet), cette fonction échoue. Dans ce cas, GetLastError retourne ERROR_INSUFFICIENT_BUFFER.
[out, optional] RequiredSize
Pointeur vers une variable qui reçoit la taille (en caractères) requise pour stocker le nom de fichier .inf de destination, y compris une fin NULL. Si l’indicateur SP_COPY_OEMINF_CATALOG_ONLY est spécifié, cette variable reçoit une longueur de chaîne uniquement si le fichier .inf existe déjà dans le répertoire Inf. Sinon, cette variable est définie sur zéro. Ce paramètre peut être NULL.
[out, optional] DestinationInfFileNameComponent
Pointeur vers une chaîne définie lors d’un retour réussi (ou ERROR_FILE_EXISTS) pour pointer vers le début du composant de nom de fichier du chemin d’accès stocké dans le paramètre DestinationInfFileName. Si l’indicateur SP_COPY_OEMINF_CATALOG_ONLY est spécifié, le paramètre DestinationInfFileName peut être une chaîne vide. Dans ce cas, le pointeur de caractère est défini sur NULL lors d’un retour réussi. Ce paramètre peut être NULL.
Valeur de retour
Cette fonction retourne WINSETUPAPI BOOL.
Remarques
La fonction SetupCopyOEMInf copie un fichier .inf spécifié dans le répertoire %windir%\Inf. SetupCopyOEMInf ne recopie pas le fichier s’il trouve qu’une image binaire du fichier .inf spécifié existe déjà dans le répertoire Inf portant le même nom ou un nom du formulaire OEM*.inf. Lorsque SetupCopyOEMInf copie un fichier, il renomme le fichier copié en OEM*.inf. Le nom fourni est unique et ne peut pas être prédit.
SetupCopyOEMInf utilise la procédure suivante pour déterminer si le fichier .inf existe déjà dans le répertoire Inf :
Tous les fichiers .inf avec les noms du formulaire OEM*.inf sont énumérés et tous les fichiers qui ont la même taille de fichier que le fichier .inf spécifié sont comparés binaires.
Le répertoire Inf est recherché pour le nom de fichier source du fichier .inf. Si un fichier .inf du même nom existe et est de la même taille que celui du fichier .inf spécifié, les deux fichiers sont binaires comparés pour déterminer s’ils sont identiques.
Si le fichier .inf spécifié existe déjà, une vérification supplémentaire est effectuée pour déterminer si le fichier .inf spécifié contient une entrée CatalogFile= dans sa section [Version]. Si c’est le cas, le fichier .inf %windir%\Inf primary filename with a .cat" extension est utilisé pour déterminer si le catalogue est déjà installé. S’il existe un catalogue installé, mais qu’il n’est pas identique au catalogue associé à la source .inf, il n’est pas considéré comme une correspondance et les énumérations continuent. Il est possible d’avoir plusieurs fichiers .inf identiques avec des catalogues uniques contenus dans %windir%répertoire \Inf. Si une correspondance existante est introuvable, les fichiers .inf et .cat sont installés sous un nouveau nom unique.
Les fichiers .inf OEM qui ne spécifient pas d’entrée CatalogFile= sont considérés comme non valides en ce qui concerne la vérification de signature numérique.
Dans les cas où le fichier .inf doit être copié dans le répertoire %windir%\Inf, les échecs de vérification de signature numérique sont signalés.
Si les fichiers .inf et .cat existent déjà, ces noms de fichiers existants sont utilisés et le comportement de remplacement de fichier est basé sur les indicateurs CopyStyle spécifiés. Le comportement de remplacement fait uniquement référence aux informations multimédias sources stockées dans le fichier .pnf. Les fichiers .inf, .pnf et .cat existants ne sont pas modifiés.
Note
L’en-tête setupapi.h définit SetupCopyOEMInf en tant qu’alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. Le mélange de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.
Exigences
Exigence | Valeur |
---|---|
client minimum pris en charge | Windows XP [applications de bureau uniquement] |
serveur minimum pris en charge | Windows Server 2003 [applications de bureau uniquement] |
plateforme cible | Windows |
d’en-tête | setupapi.h |
bibliothèque | Setupapi.lib |
DLL | Setupapi.dll |
ensemble d’API | ext-ms-win-setupapi-classinstallers-l1-1-2 (introduit dans Windows 10, version 10.0.14393) |