-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathTCab.h
More file actions
85 lines (73 loc) · 3.2 KB
/
TCab.h
File metadata and controls
85 lines (73 loc) · 3.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
/////////////////////////////////////////////////////////////////////////////
//TCab.h
/////////////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "TArchive.h"
#ifndef _TCAB_CLASS_H
#define _TCAB_CLASS_H
class TCab: public TArchive
{
private:
//zagolovok arhiva
typedef struct __CAB_ARC_HEAD
{
DWORD SIGNATURE;
DWORD HEAD_CHECKSUM;
DWORD FILE_SIZE;
DWORD FOLDERS_CHECKSUM;
DWORD OFFSET;
DWORD FILES_CHECKSUM;
BYTE VERSION_PACK;
BYTE VERSION_UNPACK;
WORD NUMBER_FOLDERS;
WORD NUMBER_FILES;
WORD FLAGS;
WORD SET_ID;
WORD VOLUME_NUM;
} CAB_ARC_HEAD;
//konec zagolovka arhiva
typedef struct __CAB_ARC_ADD
{
BYTE METHOD;
BYTE METHOD_ADD;
} CAB_ARC_ADD;
/*Zagolovok fayla v arhive
bez FILE_NAME*/
typedef struct __CAB_FILE_HEAD
{
DWORD UNP_SIZE;
DWORD OFFSET;
WORD FILE_CONTROL_ID;
WORD FDATE;
WORD FTIME;
WORD ATTR;
} CAB_FILE_HEAD;
//strukturi dlya chteniya arhiva
CAB_ARC_HEAD m_ARC_HEAD; //zagolovok arhiva
CAB_ARC_ADD m_ARC_ADD; //konec zagolovka arhiva
CAB_FILE_HEAD m_FILE_HEAD; //zagolovok fayla
char m_buffer[MAX_LEN_STR];
WORD m_NumberEntries; //vmeste faylov i papok
//vnutrennie funkcii
int AnalyzeArcHead (CAB_ARC_HEAD&); //proverka zagolovka arhiva
int AnalyzeFileHead(CAB_FILE_HEAD&, int&); //obrabotka zagolovka fayla/papki
public:
TCab(DataForArchive& dfa, LanguageMessages& langmsg, LanguageResults& langres, char* namearch = "CAB"): TArchive(dfa, langmsg, langres, namearch) {;}
~TCab() {;}
int TestFile (char*); //fayl yavlyaetsya arhivom CAB
int AnalyzeInfoOfArc(char*); //opredelit' parametri (info) arhiva
ULONGLONG GetUnpackSizeFiles () {return m_UnpackSizeFiles;} //vozvrat real'nogo razmera faylov v BYTEs
ULONGLONG GetArchiveSize () {return m_ArchiveSize;} //vozvrat razmera arhiva v BYTEs
unsigned GetNumberFiles () {return m_NumberFiles;} //vozvrat kolichestvo faylov v arhive
unsigned GetNumberFolders () {return m_NumberFolders;} //vozvrat kolichestvo papok v arhive
short GetMethodPack () {return m_MethodPack;} //vozvrat metod sjatiya | 0x00 - bez szhatiya (Stored) | 0x01 - (MSZIP (Normal)) | 0x03 - (LZX) | 0x71 - (Quantum) | 0x72 - (NONAME)
short GetMethodPackAdd () {return m_MethodPackAdd;} //vozvrat metod sjatiya | 0x0F - (:15 (Superast)) | 0x10 - (:16 (Fastest)) | 0x11 - (:17 (Fast)) | 0x12 - (:18 (Normal)) | 0x13 - (:19 (Good)) | 0x14 - (:20 (Verygood)) | 0x15 - (:21 (Best))
double GetRatioArchiveSize() {return m_RatioArchiveSize;}//sjatie ot razmera arhiva (%)
double GetPackVersion () {return m_PackVersion;} //vozvarat versiay zapakovki (X.X)
double GetUnpackVersion () {return m_UnpackVersion;} //vozvarat versiay dlya raspakovki (X.X)
unsigned GetSfxModule () {return m_SfxModule;} //razmer modulya SFX (*.exe) esli 0 to net
BOOL GetMultiArc () {return m_MultiArc;} //TRUE - arhiv mnogotomniy FALSE - net
unsigned GetVolumeNumber () {return m_VolumeNumber;} //nomer toma mnogotomnogo arhiva (0 - ?)
BOOL GetPassword () {return m_Password;} //TRUE - arhiv zashishen parolem FALSE - net
};
#endif //_TCAB_CLASS_H