SetupGetFileCompressionInfoA-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 SetupGetFileCompressionInfo-Funktion untersucht eine physische Datei, um festzustellen, ob sie komprimiert ist, und ruft den vollständigen Pfad, die Größe und die Größe der unkomprimierten Zieldatei ab.
Beachten Sie, dass diese Funktion veraltet ist und durch SetupGetFileCompressionInfoEx ersetzt wurde. Verwenden Sie nicht SetupGetFileCompressionInfo, sondern immer SetupGetFileCompressionInfoEx.
Syntax
WINSETUPAPI DWORD SetupGetFileCompressionInfoA(
[in] PCSTR SourceFileName,
[in, out] PSTR *ActualSourceFileName,
[in, out] PDWORD SourceFileSize,
[in, out] PDWORD TargetFileSize,
[in, out] PUINT CompressionType
);
Parameter
[in] SourceFileName
Dateiname der Datei, über die Informationen erforderlich sind. Wenn die Datei auf dem Quellmedium nicht genau wie benannt gefunden wird, wird nach der Datei mit bis zu zwei alternativen Namen "compressed-form" gesucht. Wenn die Datei beispielsweise F:\x86\cmd.exe ist und nicht gefunden wird, wird nach F:\mpis\cmd.ex_ gesucht, und wenn diese nicht gefunden wird, wird eine Suche nach F:\x86\cmd.ex$ durchgeführt. Sie sollten eine NULL-Zeichenfolge verwenden.
[in, out] ActualSourceFileName
Zeiger auf eine Variable, die den vollständigen Pfad der Datei empfängt, die gefunden werden konnte. Der Aufrufer kann den Zeiger mit einem Aufruf von LocalFree freigeben. Der Pfad ist nur gültig, wenn die Funktion NO_ERROR zurückgibt. Beachten Sie, dass, wenn die Version von SetupAPI.dll kleiner als 5.0.2195 ist, der Aufrufer die exportierte Funktion MyFree aus SetupAPI verwenden muss, um den von dieser Funktion zugewiesenen Arbeitsspeicher freizugeben, anstatt LocalFree zu verwenden. Weitere Informationen finden Sie im Abschnitt mit den Hinweisen.
[in, out] SourceFileSize
Zeiger auf eine Variable, in der diese Funktion die Größe der Datei in ihrer aktuellen Form zurückgibt, die die aktuelle Größe der Datei namens ActualSourceFileName ist. Die Größe wird durch Untersuchen der Quelldatei bestimmt. es wird nicht aus einer INF-Datei abgerufen. Die Quelldateigröße ist nur gültig, wenn die Funktion NO_ERROR zurückgibt.
[in, out] TargetFileSize
Zeiger auf eine Variable, in der diese Funktion die Größe zurückgibt, die die Datei belegt, wenn sie entkomprimiert oder kopiert wird. Wenn die Datei nicht komprimiert ist, ist dieser Wert mit SourceFileSize identisch. Die Größe wird durch die Untersuchung der Datei bestimmt. es wird nicht aus einer INF-Datei abgerufen. Die Zieldateigröße ist nur gültig, wenn die Funktion NO_ERROR zurückgibt.
[in, out] CompressionType
Zeiger auf eine Variable, in der diese Funktion einen Wert zurückgibt, der den Für ActualSourceFileName verwendeten Komprimierungstyp angibt. Der Komprimierungstyp ist nur gültig, wenn die Funktion NO_ERROR zurückgibt. Der Wert kann eines der folgenden Flags sein.
FILE_COMPRESSION_NONE
Die Quelldatei wird nicht mit einem erkannten Komprimierungsalgorithmus komprimiert.
FILE_COMPRESSION_WINLZA
Die Quelldatei wird mit LZ-Komprimierung komprimiert.
FILE_COMPRESSION_MSZIP
Die Quelldatei wird mit der MSZIP-Komprimierung komprimiert.
Rückgabewert
Die Funktion gibt einen Systemfehlercode zurück, der das Ergebnis der Dateisuche angibt. Der Fehlercode kann einer der folgenden Werte sein.
Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf.
Hinweise
Verwenden Sie nicht SetupGetFileCompressionInfo, sondern immer SetupGetFileCompressionInfoEx.
Da SetupGetFileCompressionInfo die Komprimierung durch Verweisen auf die physische Datei bestimmt, sollte Ihre Setupanwendung sicherstellen, dass die Datei vorhanden ist, bevor SetupGetFileCompressionInfo aufgerufen wird.
Beachten Sie, dass, wenn die Version von SetupAPI.dll kleiner als 5.0.2195 ist, der Aufrufer die exportierte Funktion MyFree aus SetupAPI verwenden muss, um den von dieser Funktion zugewiesenen Arbeitsspeicher freizugeben, anstatt LocalFree zu verwenden. Wenn der Aufruf von LocalFree eine Zugriffsverletzung verursacht, sollten Sie das Problem mithilfe von MyFree beheben.
Im Folgenden finden Sie ein Beispiel zum Abrufen der MyFree-Funktion aus dem SetupAPI.dll:
typedef VOID (WINAPI* MYFREEFUNC)(LPVOID lpBuff);
MYFREEFUNC MyFree;
HMODULE hDll=NULL;
hDll = GetModuleHandle("SETUPAPI.DLL");
MyFree = (MYFREEFUNC)GetProcAddress(hDll, "MyFree");
...
other code here to prepare file queue
...
PTSTR lpActualSourceFileName;
SetupGetFileCompressionInfo(...,&lpActualSourceFileName,...,...,...);
...
MyFree(lpActualSourceFileName);
Hinweis
Der setupapi.h-Header definiert SetupGetFileCompressionInfo 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 |