Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

212 lines
5.4 KiB

/*++
Copyright (c) 1999 Microsoft Corporation
Module Name:
cablib.h
Abstract:
APIs to manipulate CAB files.
Author:
20-Oct-1999 Calin Negreanu (calinn)
Revision History:
<alias> <date> <comments>
--*/
//
// Types
//
typedef BOOL(WINAPI CABGETCABINETNAMESA)(
IN PCSTR CabPath,
IN UINT CabPathChars,
IN PCSTR CabFileName,
IN UINT CabFileNameChars,
IN PCSTR CabDiskName,
IN UINT CabDiskNameChars,
IN INT CabFileNr,
IN OUT PINT CabDiskNr
);
typedef CABGETCABINETNAMESA *PCABGETCABINETNAMESA;
typedef BOOL(WINAPI CABGETCABINETNAMESW)(
IN PCWSTR CabPath,
IN UINT CabPathChars,
IN PCWSTR CabFileName,
IN UINT CabFileNameChars,
IN PCWSTR CabDiskName,
IN UINT CabDiskNameChars,
IN INT CabFileNr,
IN OUT PINT CabDiskNr
);
typedef CABGETCABINETNAMESW *PCABGETCABINETNAMESW;
typedef BOOL(WINAPI CABNOTIFICATIONA)(
IN PCSTR FileName
);
typedef CABNOTIFICATIONA *PCABNOTIFICATIONA;
typedef BOOL(WINAPI CABNOTIFICATIONW)(
IN PCWSTR FileName
);
typedef CABNOTIFICATIONW *PCABNOTIFICATIONW;
typedef PVOID CCABHANDLE;
typedef PVOID OCABHANDLE;
//
// API
//
CCABHANDLE
CabCreateCabinetA (
IN PCSTR CabPath,
IN PCSTR CabFileFormat,
IN PCSTR CabDiskFormat,
IN LONG MaxFileSize
);
CCABHANDLE
CabCreateCabinetW (
IN PCWSTR CabPath,
IN PCWSTR CabFileFormat,
IN PCWSTR CabDiskFormat,
IN LONG MaxFileSize
);
CCABHANDLE
CabCreateCabinetExA (
IN PCABGETCABINETNAMESA CabGetCabinetNames,
IN LONG MaxFileSize
);
CCABHANDLE
CabCreateCabinetExW (
IN PCABGETCABINETNAMESW CabGetCabinetNames,
IN LONG MaxFileSize
);
BOOL
CabAddFileToCabinetA (
IN CCABHANDLE CabHandle,
IN PCSTR FileName,
IN PCSTR StoredName
);
BOOL
CabAddFileToCabinetW (
IN CCABHANDLE CabHandle,
IN PCWSTR FileName,
IN PCWSTR StoredName
);
BOOL
CabFlushAndCloseCabinetExA (
IN CCABHANDLE CabHandle,
OUT PUINT FileCount, OPTIONAL
OUT PLONGLONG FileSize, OPTIONAL
OUT PUINT CabFileCount, OPTIONAL
OUT PLONGLONG CabFileSize OPTIONAL
);
#define CabFlushAndCloseCabinetA(h) CabFlushAndCloseCabinetExA(h,NULL,NULL,NULL,NULL)
BOOL
CabFlushAndCloseCabinetExW (
IN CCABHANDLE CabHandle,
OUT PUINT FileCount, OPTIONAL
OUT PLONGLONG FileSize, OPTIONAL
OUT PUINT CabFileCount, OPTIONAL
OUT PLONGLONG CabFileSize OPTIONAL
);
#define CabFlushAndCloseCabinetW(h) CabFlushAndCloseCabinetExW(h,NULL,NULL,NULL,NULL)
OCABHANDLE
CabOpenCabinetA (
IN PCSTR FileName
);
OCABHANDLE
CabOpenCabinetW (
IN PCWSTR FileName
);
BOOL
CabExtractAllFilesExA (
IN OCABHANDLE CabHandle,
IN PCSTR ExtractPath,
IN PCABNOTIFICATIONA CabNotification OPTIONAL
);
#define CabExtractAllFilesA(h,p) CabExtractAllFilesExA(h,p,NULL)
BOOL
CabExtractAllFilesExW (
IN OCABHANDLE CabHandle,
IN PCWSTR ExtractPath,
IN PCABNOTIFICATIONW CabNotification OPTIONAL
);
#define CabExtractAllFilesW(h,p) CabExtractAllFilesExW(h,p,NULL)
BOOL
CabCloseCabinetA (
IN OCABHANDLE CabHandle
);
BOOL
CabCloseCabinetW (
IN OCABHANDLE CabHandle
);
BOOL
CabVerifyCabinet (
IN OCABHANDLE CabHandle
);
//
// Macros
//
#ifdef UNICODE
#define CABGETCABINETNAMES CABGETCABINETNAMESW
#define PCABGETCABINETNAMES PCABGETCABINETNAMESW
#define CABNOTIFICATION CABNOTIFICATIONA
#define PCABNOTIFICATION PCABNOTIFICATIONA
#define CabCreateCabinet CabCreateCabinetW
#define CabCreateCabinetEx CabCreateCabinetExW
#define CabAddFileToCabinet CabAddFileToCabinetW
#define CabFlushAndCloseCabinet CabFlushAndCloseCabinetW
#define CabFlushAndCloseCabinetEx CabFlushAndCloseCabinetExW
#define CabOpenCabinet CabOpenCabinetW
#define CabExtractAllFilesEx CabExtractAllFilesExW
#define CabExtractAllFiles CabExtractAllFilesW
#define CabCloseCabinet CabCloseCabinetW
#else
#define CABGETCABINETNAMES CABGETCABINETNAMESA
#define PCABGETCABINETNAMES PCABGETCABINETNAMESA
#define CABNOTIFICATION CABNOTIFICATIONW
#define PCABNOTIFICATION PCABNOTIFICATIONW
#define CabCreateCabinet CabCreateCabinetA
#define CabCreateCabinetEx CabCreateCabinetExA
#define CabAddFileToCabinet CabAddFileToCabinetA
#define CabFlushAndCloseCabinet CabFlushAndCloseCabinetA
#define CabFlushAndCloseCabinetEx CabFlushAndCloseCabinetExA
#define CabOpenCabinet CabOpenCabinetA
#define CabExtractAllFilesEx CabExtractAllFilesExA
#define CabExtractAllFiles CabExtractAllFilesA
#define CabCloseCabinet CabCloseCabinetA
#endif