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.
[in] CopyStyle
Gibt an, wie die INF-Datei in das INF-Verzeichnis kopiert wird. Die folgenden Flags können kombiniert werden.
Wert | Bedeutung |
---|---|
|
Quelldatei bei erfolgreicher Kopie löschen. |
|
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. |
|
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. |
|
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) |