SetupCopyOEMInfA, fonction (setupapi.h)
[Cette fonction peut être utilisée dans les systèmes d’exploitation indiqués dans la section Configuration requise. Il sera 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 les 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 doit disposer de privilèges d’administration, sinon la fonction échoue.
Syntaxe
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
);
Paramètres
[in] SourceInfFileName
Chemin d’accès complet au 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 en taille, y compris la valeur NULL de fin.
[in] OEMSourceMediaLocation
Informations d’emplacement source à stocker dans le fichier .inf (.pnf) précompilé. 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 en taille, y compris la valeur NULL de fin.
[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 comment le fichier .inf est copié dans le répertoire .inf. Les indicateurs suivants peuvent être combinés.
Valeur | Signification |
---|---|
|
Supprimez le fichier source en cas de 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 fichier .inf existant. |
|
Copiez uniquement si les fichiers spécifiés n’existent pas actuellement dans le répertoire Inf. Si le fichier .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 du 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 qui lui est attribué 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 de 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 valeur NULL de fin. 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 en cas de 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ères est défini sur NULL en cas de retour réussi. Ce paramètre peut être NULL.
Valeur retournée
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 constate qu’une image binaire du fichier .inf spécifié existe déjà dans le répertoire Inf avec le même nom ou un nom de la forme 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 des noms de la forme 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. S’il existe un fichier .inf du même nom et que sa taille est identique à celle du fichier .inf spécifié, les deux fichiers sont binaires par rapport à pour déterminer s’ils sont identiques.
Si le fichier .inf spécifié existe déjà, une autre case activée 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 nom de fichier principal %windir%\Inf du fichier .inf avec une extension « .cat » est utilisé pour déterminer si le catalogue est déjà installé. Si un catalogue est installé, mais qu’il n’est pas identique au catalogue associé au fichier .inf source, cela 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 le répertoire %windir%\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 la signature numérique.
Dans les cas où le fichier .inf doit être copié dans le répertoire %windir%\Inf, tous 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 référence uniquement aux informations de média source stockées dans le fichier .pnf. Les fichiers .inf, .pnf et .cat existants ne sont pas modifiés.
Notes
L’en-tête setupapi.h définit SetupCopyOEMInf comme 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. La combinaison 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.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows XP [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2003 [applications de bureau uniquement] |
Plateforme cible | Windows |
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) |