/*++ Copyright (c) 1999 Microsoft Corporation Module Name: cablib.h Abstract: Set of APIs to enumerate a file system using Win32 APIs. Author: 20-Oct-1999 Ovidiu Temereanca (ovidiut) - File creation. Revision History: --*/ // // 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 CABGETTEMPFILEA)( OUT PSTR Buffer, IN UINT BufferTchars ); typedef CABGETTEMPFILEA *PCABGETTEMPFILEA; typedef BOOL(WINAPI CABGETTEMPFILEW)( OUT PWSTR Buffer, IN UINT BufferTchars ); typedef CABGETTEMPFILEW *PCABGETTEMPFILEW; 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 CabCreateCabinetByIndexA ( IN PCSTR CabPath, IN PCSTR CabFileFormat, IN PCSTR CabDiskFormat, IN PCABGETTEMPFILEA CabGetTempFile, // OPTIONAL IN LONG MaxFileSize, IN INT InitialIndex ); #define CabCreateCabinetA(p,f,d,t,s) CabCreateCabinetByIndexA(p,f,d,t,s,1) CCABHANDLE CabCreateCabinetByIndexW ( IN PCWSTR CabPath, IN PCWSTR CabFileFormat, IN PCWSTR CabDiskFormat, IN PCABGETTEMPFILEW CabGetTempFile, // OPTIONAL IN LONG MaxFileSize, IN INT InitialIndex ); #define CabCreateCabinetW(p,f,d,t,s) CabCreateCabinetByIndexW(p,f,d,t,s,1) 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 ); // // Macros // #ifdef UNICODE #define CABGETCABINETNAMES CABGETCABINETNAMESW #define PCABGETCABINETNAMES PCABGETCABINETNAMESW #define CABNOTIFICATION CABNOTIFICATIONW #define PCABNOTIFICATION PCABNOTIFICATIONW #define CABGETTEMPFILE CABGETTEMPFILEW #define PCABGETTEMPFILE PCABGETTEMPFILEW #define CabCreateCabinet CabCreateCabinetW #define CabCreateCabinetByIndex CabCreateCabinetByIndexW #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 CABNOTIFICATIONA #define PCABNOTIFICATION PCABNOTIFICATIONA #define CABGETTEMPFILE CABGETTEMPFILEA #define PCABGETTEMPFILE PCABGETTEMPFILEA #define CabCreateCabinet CabCreateCabinetA #define CabCreateCabinetByIndex CabCreateCabinetByIndexA #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