Share via


SetupCopyOEMInfW-Funktion (setupapi.h)

[Diese Funktion ist für die Verwendung in den Betriebssystemen verfügbar, die im Abschnitt "Anforderungen" angegeben sind. Es kann in nachfolgenden Versionen geändert oder entfernt werden. SetupAPI sollte nicht mehr für die Installation von Anwendungen verwendet werden. Verwenden Sie stattdessen den Windows Installer zum Entwickeln von Anwendungsinstallationsprogrammen. SetupAPI wird weiterhin zum Installieren von Gerätetreibern verwendet.]

Die SetupCopyOEMInf-Funktion kopiert eine angegebene INF-Datei in das Verzeichnis %windir%/Inf.

Ein Aufrufer dieser Funktion muss über Administratorrechte verfügen, andernfalls schlägt die Funktion fehl.

Syntax

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
);

Parameter

[in] SourceInfFileName

Vollständiger Pfad zur INF-Quelldatei. Sie sollten eine NULL-Zeichenfolge verwenden. Dieser Pfad sollte MAX_PATH größe nicht überschreiten, einschließlich des beendenden NULL.

[in] OEMSourceMediaLocation

Quellspeicherortinformationen, die in der vorkompilierten .inf (.pnf) gespeichert werden sollen. Diese Speicherortinformationen sind spezifisch für den angegebenen Quellmedientyp. Sie sollten eine NULL-Zeichenfolge verwenden. Dieser Pfad sollte MAX_PATH größe nicht überschreiten, einschließlich des beendenden NULL.

[in] OEMSourceMediaType

Quellmedientyp, auf den durch die Standortinformationen verwiesen wird. Dieser Parameter kann einer der folgenden Werte sein.

Wert Bedeutung
SPOST_NONE
In der PNF-Datei werden keine Quellmedieninformationen gespeichert. Der Wert von OEMSourceMediaLocation wird in diesem Fall ignoriert.
SPOST_PATH
OEMSourceMediaLocation enthält einen Pfad zu den Quellmedien. Wenn sich die Medien beispielsweise auf einer Diskette befinden, kann dieser Pfad "A:\" sein. Wenn OEMSourceMediaLocationNULL ist, wird davon ausgegangen, dass der Pfad der Pfad ist, in dem sich die .inf befindet. Wenn die .inf an diesem Speicherort über eine entsprechende PNF-Datei verfügt, werden die Quellmedieninformationen der PNF-Datei an die PNF-Zieldatei übertragen.
SPOST_URL
OEMSourceMediaLocation enthält eine URL (Universal Resource Locator), die den Internetspeicherort angibt, von dem die .inf/driver-Dateien abgerufen wurden. Wenn OEMSourceMediaLocationNULL ist, wird davon ausgegangen, dass der Standardspeicherort des Codedownload-Managers verwendet wurde.

[in] CopyStyle

Gibt an, wie die INF-Datei in das VERZEICHNIS .inf kopiert wird. Die folgenden Flags können kombiniert werden.

Wert Bedeutung
SP_COPY_DELETESOURCE
Löschen Sie die Quelldatei nach erfolgreichem Kopieren.
SP_COPY_REPLACEONLY
Kopieren Sie nur, wenn diese Datei bereits im Inf-Verzeichnis vorhanden ist. Dieses Flag kann verwendet werden, um die Quellspeicherortinformationen für eine vorhandene INF-Datei zu aktualisieren.
SP_COPY_NOOVERWRITE
Kopieren Sie nur, wenn die angegebenen Dateien derzeit nicht im Inf-Verzeichnis vorhanden sind. Wenn die .inf derzeit vorhanden ist, schlägt diese API fehl, und GetLastError gibt ERROR_FILE_EXISTS zurück. In diesem Fall wird der Dateiname der vorhandenen INF-Datei im entsprechenden Feld in den Informationsausgabepuffern der ZIEL-INF-Datei platziert.
SP_COPY_OEMINF_CATALOG_ONLY
Die entsprechenden Katalogdateien der angegebenen INF-Datei werden in %windir%\Inf kopiert. Wenn dieses Flag angegeben ist, werden die Zieldateinameninformationen bei erfolgreicher Rückgabe eingegeben, wenn die angegebene INF-Datei bereits im Inf-Verzeichnis vorhanden ist.

[out, optional] DestinationInfFileName

Zeiger auf einen Puffer, um den Namen der INF-Datei zu erhalten, der ihm zum Zeitpunkt des Kopierens in das Inf-Verzeichnis zugewiesen wurde. Der Puffer sollte, sofern angegeben, in der Regel MAX_PATH lang sein. Wenn das SP_COPY_NOOVERWRITE-Flag angegeben ist und die SetupCopyOEMInf-Funktion mit einem Rückgabecode von ERROR_FILE_EXISTS fehlschlägt, enthält dieser Puffer den Namen der vorhandenen INF-Datei. Wenn das SP_COPY_OEMINF_CATALOG_ONLY-Flag angegeben ist, enthält dieser Puffer den Zieldateinamen .inf, wenn die INF-Datei bereits im Inf-Verzeichnis vorhanden ist. Andernfalls wird dieser Puffer auf die leere Zeichenfolge festgelegt. Dieser Parameter kann NULL sein.

[in] DestinationInfFileNameSize

Größe des DestinationInfFileName-Puffers in Zeichen oder null, wenn der Puffer nicht angegeben ist. Wenn DestinationInfFileName angegeben ist und diese Puffergröße kleiner als die Größe ist, die erforderlich ist, um den .inf-Zieldateinamen zurückzugeben (einschließlich des vollständigen Pfads), schlägt diese Funktion fehl. In diesem Fall gibt GetLastError ERROR_INSUFFICIENT_BUFFER zurück.

[out, optional] RequiredSize

Zeiger auf eine Variable, die die Größe (in Zeichen) empfängt, die erforderlich ist, um den Ziel-INF-Dateinamen zu speichern, einschließlich eines beendenden NULL. Wenn das flag SP_COPY_OEMINF_CATALOG_ONLY angegeben ist, erhält diese Variable nur dann eine Zeichenfolgenlänge, wenn die INF-Datei bereits im Inf-Verzeichnis vorhanden ist. Andernfalls wird diese Variable auf 0 festgelegt. Dieser Parameter kann NULL sein.

[out, optional] DestinationInfFileNameComponent

Zeiger auf eine Zeichenfolge, die bei erfolgreicher Rückgabe (oder ERROR_FILE_EXISTS) so festgelegt wird, dass sie auf den Anfang der Dateinamenkomponente des Pfads verweist, der im Parameter DestinationInfFileName gespeichert ist. Wenn das SP_COPY_OEMINF_CATALOG_ONLY-Flag angegeben ist, kann der Parameter DestinationInfFileName eine leere Zeichenfolge sein. In diesem Fall wird der Zeichenzeiger bei erfolgreicher Rückgabe auf NULL festgelegt. Dieser Parameter kann NULL sein.

Rückgabewert

Diese Funktion gibt WINSETUPAPI BOOL zurück.

Hinweise

Die SetupCopyOEMInf-Funktion kopiert eine angegebene INF-Datei in das Verzeichnis %windir%\Inf. SetupCopyOEMInf wird die Datei nicht erneut kopieren, wenn festgestellt wird, dass im Inf-Verzeichnis bereits ein binäres Image der angegebenen INF-Datei mit demselben Namen oder einem Namen des Formulars OEM*.inf vorhanden ist. Wenn SetupCopyOEMInf eine Datei kopiert, wird die kopierte Datei in OEM*.inf umbenannt. Der angegebene Name ist eindeutig und kann nicht vorhergesagt werden.

SetupCopyOEMInf verwendet das folgende Verfahren, um zu ermitteln, ob die INF-Datei bereits im Inf-Verzeichnis vorhanden ist:

Alle .inf-Dateien mit den Namen des Formulars OEM*.inf werden aufgelistet, und alle Dateien, die die gleiche Dateigröße wie die angegebene INF-Datei aufweisen, sind binär verglichen.

Das Inf-Verzeichnis wird nach dem Quelldateinamen der INF-Datei durchsucht. Wenn eine INF-Datei mit demselben Namen vorhanden ist und die gleiche Größe wie die angegebene INF-Datei aufweist, sind die beiden Dateien binär, um festzustellen, ob sie identisch sind.

Wenn die angegebene INF-Datei bereits vorhanden ist, wird eine weitere Überprüfung durchgeführt, um festzustellen, ob die angegebene INF-Datei im Abschnitt [Version] einen CatalogFile=-Eintrag enthält. Wenn dies der Fall ist, wird der primäre Dateiname der INF-Datei %windir%\Inf mit der Erweiterung ".cat" verwendet, um zu ermitteln, ob der Katalog bereits installiert ist. Wenn ein Katalog installiert ist, er aber nicht mit dem Katalog identisch ist, der der .inf-Quelle zugeordnet ist, wird dies nicht als Übereinstimmung betrachtet, und die Enumerationen werden fortgesetzt. Es ist möglich, mehrere identische INF-Dateien mit eindeutigen Katalogen im Verzeichnis %windir%\Inf zu haben. Wenn keine vorhandene Übereinstimmung gefunden wird, werden die INF- und CAT-Dateien unter einem neuen und eindeutigen Namen installiert.

OEM-INF-Dateien, die keinen CatalogFile=-Eintrag angeben, gelten in Bezug auf die Überprüfung der digitalen Signatur als ungültig.

In Fällen, in denen die INF-Datei in das Verzeichnis %windir%\Inf kopiert werden muss, werden alle Fehler bei der Überprüfung der digitalen Signatur gemeldet.

Wenn die INF- und CAT-Dateien bereits vorhanden sind, werden diese vorhandenen Dateinamen verwendet, und das Dateiersetzungsverhalten basiert auf den angegebenen CopyStyle-Flags. Das Ersetzungsverhalten bezieht sich nur auf die In der pnf gespeicherten Quellmedieninformationen. Vorhandene INF-, PNF- und CAT-Dateien werden nicht geändert.

Hinweis

Der setupapi.h-Header definiert SetupCopyOEMInf als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit nicht codierungsneutralem Code kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows XP [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows Server 2003 [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile setupapi.h
Bibliothek Setupapi.lib
DLL Setupapi.dll
APIs ext-ms-win-setupapi-classinstallers-l1-1-2 (eingeführt in Windows 10, Version 10.0.14393)

Siehe auch

Funktionen

Übersicht

SetupUninstallOEMInf