23#define CAB_STATUS_SUCCESS 0x00000000
24#define CAB_STATUS_FAILURE 0x00000001
25#define CAB_STATUS_NOMEMORY 0x00000002
26#define CAB_STATUS_CANNOT_OPEN 0x00000003
27#define CAB_STATUS_CANNOT_CREATE 0x00000004
28#define CAB_STATUS_CANNOT_READ 0x00000005
29#define CAB_STATUS_CANNOT_WRITE 0x00000006
30#define CAB_STATUS_FILE_EXISTS 0x00000007
31#define CAB_STATUS_INVALID_CAB 0x00000008
32#define CAB_STATUS_NOFILE 0x00000009
33#define CAB_STATUS_UNSUPPCOMP 0x0000000A
41#define CS_SUCCESS 0x0000
42#define CS_NOMEMORY 0x0001
43#define CS_BADSTREAM 0x0002
46#define CAB_CODEC_RAW 0x00
47#define CAB_CODEC_LZX 0x01
48#define CAB_CODEC_MSZIP 0x02
PRTL_UNICODE_STRING_BUFFER Path
ULONG CabinetOpen(IN OUT PCABINET_CONTEXT CabinetContext)
struct _CAB_CODEC * PCAB_CODEC
PCWSTR CabinetGetDestinationPath(IN PCABINET_CONTEXT CabinetContext)
VOID(* PCABINET_DISK_CHANGE)(IN struct _CABINET_CONTEXT *CabinetContext, IN PCWSTR CabinetName, IN PCWSTR DiskLabel)
ULONG CabinetFindFirst(IN PCABINET_CONTEXT CabinetContext, IN PCWSTR FileName, IN OUT PCAB_SEARCH Search)
struct _CAB_SEARCH * PCAB_SEARCH
VOID CabinetClose(IN OUT PCABINET_CONTEXT CabinetContext)
struct _CFHEADER * PCFHEADER
ULONG CabinetFindNext(IN PCABINET_CONTEXT CabinetContext, IN OUT PCAB_SEARCH Search)
VOID(* PCABINET_EXTRACT)(IN struct _CABINET_CONTEXT *CabinetContext, IN PCFFILE File, IN PCWSTR FileName)
struct _CAB_SEARCH CAB_SEARCH
PCWSTR CabinetGetCabinetName(IN PCABINET_CONTEXT CabinetContext)
struct _CABINET_CONTEXT CABINET_CONTEXT
VOID CabinetSelectCodec(IN PCABINET_CONTEXT CabinetContext, IN ULONG Id)
PVOID CabinetGetCabinetReservedArea(IN PCABINET_CONTEXT CabinetContext, OUT PULONG Size)
ULONG CabinetExtractFile(IN PCABINET_CONTEXT CabinetContext, IN PCAB_SEARCH Search)
BOOL(* PCABINET_OVERWRITE)(IN struct _CABINET_CONTEXT *CabinetContext, IN PCFFILE File, IN PCWSTR FileName)
struct _CFFOLDER * PCFFOLDER
VOID CabinetSetEventHandlers(IN PCABINET_CONTEXT CabinetContext, IN PCABINET_OVERWRITE Overwrite, IN PCABINET_EXTRACT Extract, IN PCABINET_DISK_CHANGE DiskChange, IN PCABINET_CREATE_FILE CreateFile)
VOID CabinetInitialize(IN OUT PCABINET_CONTEXT CabinetContext)
VOID CabinetCleanup(IN OUT PCABINET_CONTEXT CabinetContext)
VOID CabinetSetCabinetName(IN PCABINET_CONTEXT CabinetContext, IN PCWSTR FileName)
VOID CabinetSetDestinationPath(IN PCABINET_CONTEXT CabinetContext, IN PCWSTR DestinationPath)
struct _CABINET_CONTEXT * PCABINET_CONTEXT
PVOID(* PCABINET_CREATE_FILE)(IN struct _CABINET_CONTEXT *CabinetContext, IN ULONG FileSize)
ULONG CabinetFindNextFileSequential(IN PCABINET_CONTEXT CabinetContext, IN PCWSTR FileName, IN OUT PCAB_SEARCH Search)
static BOOL CabinetNormalizePath(PWCHAR Path, ULONG Length)
HRESULT WINAPI Extract(SESSION *dest, LPCSTR szCabName)
struct _FileName FileName
_Must_inspect_result_ _Out_ PLARGE_INTEGER FileSize
_In_ ULONG _In_ ULONG _In_ ULONG Length
PCABINET_OVERWRITE OverwriteHandler
PVOID CabinetReservedArea
PCABINET_DISK_CHANGE DiskChangeHandler
PCABINET_EXTRACT ExtractHandler
PCABINET_CREATE_FILE CreateFileHandler
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size