Freigeben über


SetupGetFileCompressionInfoA-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 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 nicht komprimierten Zieldatei ab.

Beachten Sie, dass diese Funktion veraltet ist und durch SetupGetFileCompressionInfoExersetzt wurde. Verwenden Sie nicht SetupGetFileCompressionInfo, sondern verwenden Sie stattdessen 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, zu der Informationen erforderlich sind. Wenn die Datei auf den Quellmedien nicht genau wie benannt gefunden wird, wird die Datei mit bis zu zwei alternativen Namen des komprimierten Formulars durchsucht. Wenn die Datei z. B. F:\x86\cmd.exe ist und sie nicht gefunden wird, wird F:\mpis\cmd.ex_ gesucht, und wenn dies nicht gefunden wird, wird eine Suche nach F:\x86\cmd.ex$durchgeführt. Sie sollten eine mit Null beendete Zeichenfolge verwenden.

[in, out] ActualSourceFileName

Zeigen Sie auf eine Variable, die den vollständigen Pfad der Datei empfängt, die sie finden konnte. Der Anrufer kann den Zeiger mit einem Aufruf von LocalFreefreigeben. Der Pfad ist nur gültig, wenn die Funktion NO_ERROR zurückgibt. Wenn die Version von SetupAPI.dll kleiner als 5.0.2195 ist, muss der Aufrufer die exportierte Funktion MyFree von SetupAPI verwenden, um den von dieser Funktion zugewiesenen Speicher freizugeben, anstatt LocalFreezu verwenden. Weitere Informationen finden Sie im Abschnitt "Hinweise".

[in, out] SourceFileSize

Zeiger auf eine Variable, in der diese Funktion die Größe der Datei in der aktuellen Form zurückgibt, die die aktuelle Größe der Datei ist, die von ActualSourceFileNamebenannt ist. Die Größe wird durch Untersuchen der Quelldatei bestimmt; sie 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 einnimmt, wenn sie nicht komprimiert oder kopiert wird. Wenn die Datei nicht komprimiert ist, ist dieser Wert mit SourceFileSizeidentisch. Die Größe wird durch Untersuchen der Datei bestimmt; sie 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 Typ der Komprimierung angibt, die für ActualSourceFileNameverwendet wird. 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 der LZ-Komprimierung komprimiert.

FILE_COMPRESSION_MSZIP

Die Quelldatei wird mit 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:

Rufen Sie GetLastErrorauf, um erweiterte Fehlerinformationen zu erhalten.

Bemerkungen

Verwenden Sie nicht SetupGetFileCompressionInfo, sondern verwenden Sie stattdessen immer SetupGetFileCompressionInfoEx.

Da SetupGetFileCompressionInfo die Komprimierung durch Verweisen auf die physische Datei bestimmt, sollte Ihre Setupanwendung sicherstellen, dass die Datei vorhanden ist, bevor sie SetupGetFileCompressionInfoaufruft.

Wenn die Version von SetupAPI.dll kleiner als 5.0.2195 ist, muss der Aufrufer die exportierte Funktion MyFree von SetupAPI verwenden, um den von dieser Funktion zugewiesenen Speicher freizugeben, anstatt LocalFreezu verwenden. Wenn der Aufruf von LocalFree eine Zugriffsverletzung verursacht, sollten Sie das Problem mithilfe von MyFreelösen.

Im Folgenden sehen Sie ein Beispiel zum Abrufen der funktion MyFree 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); 

Anmerkung

Der header setupapi.h 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 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

Siehe auch

Funktionen

Übersicht

SetupDecompressOrCopyFile-