Freigeben über


SetupCopyOEMInfW-Funktion (setupapi.h)

[Diese Funktion steht für die Verwendung in den im Abschnitt "Anforderungen" angegebenen Betriebssystemen zur Verfügung. Sie kann in nachfolgenden Versionen geändert oder nicht verfügbar sein. 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 für die Installation von Gerätetreibern verwendet.]

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

Ein Aufrufer dieser Funktion ist erforderlich, verfügt über Administratorrechte, 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 Quell-INF-Datei. Sie sollten eine mit Null beendete Zeichenfolge verwenden. Dieser Pfad sollte MAX_PATH größe nicht überschreiten, einschließlich des endenden NULL-.

[in] OEMSourceMediaLocation

Quellspeicherortinformationen, die in der vorkompilierten INF (.pnf) gespeichert werden sollen. Diese Standortinformationen sind spezifisch für den angegebenen Quellmedientyp. Sie sollten eine mit Null beendete Zeichenfolge verwenden. Dieser Pfad sollte MAX_PATH größe nicht überschreiten, einschließlich des endenden 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 OEMSourceMediaLocation- wird in diesem Fall ignoriert.
SPOST_PATH
OEMSourceMediaLocation- einen Pfad zu den Quellmedien enthält. Wenn sich z. B. das Medium auf einer Diskette befindet, kann dieser Pfad "A:\" sein. Wenn OEMSourceMediaLocation-NULL-ist, wird der Pfad als Pfad angenommen, in dem sich die INF-Datei befindet. Wenn die INF-Datei an diesem Speicherort über eine entsprechende PNF-Datei verfügt, werden die Quellmedieninformationen der PNF-Datei an die Ziel-PNF-Datei übertragen.
SPOST_URL
OEMSourceMediaLocation- enthält einen universellen Ressourcenlocator (URL), der den Internetspeicherort angibt, von dem die INF-/Treiberdateien abgerufen wurden. Wenn OEMSourceMediaLocation-NULL-ist, wird davon ausgegangen, dass der standardmäßige Codedownload-Manager-Speicherort verwendet wurde.

[in] CopyStyle

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

Wert Bedeutung
SP_COPY_DELETESOURCE
Quelldatei bei erfolgreicher Kopie löschen.
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 zu aktualisieren.
SP_COPY_NOOVERWRITE
Kopieren Sie nur, wenn die angegebenen Dateien derzeit nicht im Inf-Verzeichnis vorhanden sind. Wenn die INF zurzeit 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 in das entsprechende Feld in den Informationsausgabepuffern der Inf-Zieldatei eingefügt.
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

Zeigen Sie auf einen Puffer, um den ihm zugewiesenen INF-Dateinamen zu dem Zeitpunkt zu empfangen, zu dem er in das Inf-Verzeichnis kopiert wurde. Wenn angegeben, sollte der Puffer 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 Inf-Zieldateinamen, 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 Puffer, in Zeichen oder Null, wenn der Puffer nicht angegeben ist. Wenn DestinationInfFileName angegeben ist und diese Puffergröße kleiner als die zum Zurückgeben des INF-Zieldateinamens (einschließlich vollständiger Pfad) erforderliche Größe ist, schlägt diese Funktion fehl. In diesem Fall gibt GetLastError ERROR_INSUFFICIENT_BUFFER zurück.

[out, optional] RequiredSize

Zeiger auf eine Variable, die die zum Speichern des INF-Zieldateinamens erforderliche Größe (in Zeichen) erhält, einschließlich eines endenden NULL-. Wenn das flag SP_COPY_OEMINF_CATALOG_ONLY angegeben ist, empfängt diese Variable nur dann eine Zeichenfolgenlänge, wenn die INF-Datei bereits im Inf-Verzeichnis vorhanden ist. Andernfalls wird diese Variable auf Null festgelegt. Dieser Parameter kann NULL-sein.

[out, optional] DestinationInfFileNameComponent

Zeigen Sie auf eine Zeichenfolge, die bei erfolgreicher Rückgabe (oder ERROR_FILE_EXISTS) festgelegt ist, um auf den Anfang der Dateinamenkomponente des Pfads zu zeigen, der im DestinationInfFileName Parameter 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.

Bemerkungen

Die SetupCopyOEMInf-Funktion kopiert eine angegebene INF-Datei in das Verzeichnis %windir%\Inf. SetupCopyOEMInf die Datei nicht erneut kopieren, wenn gefunden wird, dass bereits ein binäres Bild der angegebenen INF-Datei im Inf-Verzeichnis 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 Namen des Formulars OEM*.inf werden aufgezählt, und alle Dateien mit derselben Dateigröße wie die angegebene INF-Datei 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 dieselbe Größe wie die der angegebenen INF-Datei aufweist, werden die beiden Dateien binär verglichen, 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 einen CatalogFile=-Eintrag im Abschnitt [Version] enthält. Wenn dies der Fall ist, wird die inf-Datei %windir%\Inf primärer Dateiname mit der Erweiterung ".cat" verwendet, um zu ermitteln, ob der Katalog bereits installiert ist. Wenn ein Katalog installiert ist, aber nicht mit dem Katalog identisch ist, der der Quell-INF zugeordnet ist, wird dies nicht als Übereinstimmung betrachtet, und Enumerationen werden fortgesetzt. Es ist möglich, mehrere identische INF-Dateien mit eindeutigen Katalogen in %windir%\Inf-Verzeichnis enthalten zu haben. Wenn eine vorhandene Übereinstimmung nicht gefunden wird, werden die INF- und CAT-Dateien unter einem neuen und eindeutigen Namen installiert.

OEM-INF-Dateien, die keinen CatalogFile=-Eintrag angeben, werden in Bezug auf die Überprüfung digitaler Signaturen als ungültig angesehen.

In Fällen, in denen die INF-Datei in das Verzeichnis %windir%\Inf kopiert werden muss, werden alle Überprüfungsfehler bei digitalen Signaturen 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-Datei gespeicherten Quellmedieninformationen. Vorhandene INF-, PNF- und CAT-Dateien werden nicht geändert.

Anmerkung

Der Header setupapi.h 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 Code, der nicht codierungsneutral ist, 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
mindestens unterstützte Client- Windows XP [nur Desktop-Apps]
mindestens unterstützte Server- Windows Server 2003 [Nur Desktop-Apps]
Zielplattform- Fenster
Header- setupapi.h
Library Setupapi.lib
DLL- Setupapi.dll
API-Satz ext-ms-win-setupapi-classinstallers-l1-1-2 (eingeführt in Windows 10, Version 10.0.14393)

Siehe auch

Funktionen

Übersicht

SetupUninstallOEMInf-