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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
|
// FTSIFACE.h -- DLL interface for FTSrch.dll
#ifndef __FTSIFACE_H__
#define __FTSIFACE_H__
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
typedef HANDLE HINDEX;
typedef HANDLE HSEARCHER;
typedef HANDLE HCOMPRESSOR;
typedef HANDLE HHILITER;
typedef INT ERRORCODE;
typedef struct { int base; int limit; } HILITE;
#define NO_TITLE UINT(-1) // ERRORCODE values
#define NOT_INDEXER UINT(-2)
#define NOT_SEARCHER UINT(-3)
#define NOT_COMPRESSOR UINT(-4)
#define CANNOT_SAVE UINT(-5)
#define OUT_OF_MEMORY UINT(-6)
#define CANNOT_OPEN UINT(-7)
#define CANNOT_LOAD UINT(-8)
#define INVALID_INDEX UINT(-9)
#define ALREADY_WEIGHED UINT(-10)
#define NO_TEXT_SCANNED UINT(-11)
#define ALIGNMENT_ERROR UINT(-12)
#define INVALID_PHRASE_TABLE UINT(-13)
#define INVALID_LCID UINT(-14)
#define NO_INDICES_LOADED UINT(-15)
#define INDEX_LOADED_ALREADY UINT(-16)
#define GROUP_LOADED_ALREADY UINT(-17)
#define DIALOG_ALREADY_ACTIVE UINT(-18)
#define EMPTY_PHRASE_TABLE UINT(-19)
#define OUT_OF_DISK UINT(-20)
#define DISK_READ_ERROR UINT(-21)
#define DISK_WRITE_ERROR UINT(-22)
#define SEARCH_ABORTED UINT(-23)
#define UNKNOWN_EXCEPTION UINT(-24)
#define SYSTEM_ERROR UINT(-25)
#define NOT_HILITER UINT(-26)
#define INVALID_CHARSET UINT(-27)
#define INVALID_SOURCE_NAME UINT(-28)
#define INVALID_TIMESTAMP UINT(-29)
#define ERR_NO_DISK_SPACE 0xE0000001 // Values reported by GetLastError
#define ERR_DISK_CREATE_ERROR 0xE0000002 // when an explicit error result
#define ERR_DISK_OPEN_ERROR 0xE0000003 // isn't available.
#define ERR_DISK_READ_ERROR 0xE0000004
#define ERR_DISK_WRITE_ERROR 0xE0000005
#define ERR_SYSTEM_ERROR 0xE0000006
#define ERR_ABORT_SEARCH 0xE0000007
#define ERR_INVALID_TIMESTAMP 0xE0000008
#define ERR_INVALID_SOURCE_NAME 0xE0000009
#define ERR_FILE_MAP_FAILED 0xE000000A
#define ERR_INVALID_FILE_TYPE 0xE000000B
#define ERR_DAMAGED_FILE 0xE000000C
#define ERR_FUTURE_VERSION 0xE000000D
// -------------- Index Construction Interface ---------------------------
#define TOPIC_SEARCH 0x00000001 // Options for NewIndex
#define PHRASE_SEARCH 0x00000002
#define PHRASE_FEEDBACK 0x00000004
#define VECTOR_SEARCH 0x00000008
#define WINHELP_INDEX 0x00000010
#define USE_VA_ADDR 0x00000020
#define USE_QWORD_JUMP 0x00000040
#define USE_DEFAULT UINT(-1) // Surrogate for default charset or default lcid
HINDEX APIENTRY NewIndex(const PBYTE pbSourceName,
UINT uiTime1, UINT uiTime2,
UINT iCharsetDefault, UINT lcidDefault, UINT fdwOptions
);
ERRORCODE APIENTRY ScanTopicTitle(HINDEX hinx, PBYTE pbTitle, UINT cbTitle,
UINT iTopic, HANDLE hTopic, UINT iCharset, UINT lcid
);
ERRORCODE APIENTRY ScanTopicText (HINDEX hinx, PBYTE pbText, UINT cbText, UINT iCharset, UINT lcid);
ERRORCODE APIENTRY SaveIndex (HINDEX hinx, PSZ pszFileName);
ERRORCODE APIENTRY DeleteIndex (HINDEX hinx);
typedef void (__stdcall *ANIMATOR)(void);
ERRORCODE APIENTRY RegisterAnimator(ANIMATOR pAnimator, HWND hwndAnimator);
// ----------------- Querying the Validity of an Index File --------------
BOOL APIENTRY IsValidIndex(PSZ pszFileName, UINT dwOptions);
void APIENTRY SetDirectoryLocator(HWND hwndLocator);
// ----------------- Searcher Interface ----------------------------------
HSEARCHER APIENTRY NewSearcher();
INT APIENTRY OpenIndex(HSEARCHER hsrch, PSZ pszIndexFileName, // returns iIndex for index file
PBYTE pbSourceName, PUINT pcbSourceNameLimit, // or -ErrorCode
PUINT pTime1, PUINT pTime2
);
ERRORCODE APIENTRY DiscardIndex (HSEARCHER hsrch, INT iIndex);
ERRORCODE APIENTRY QueryOptions (HSEARCHER hsrch, INT iIndex, PUINT pfdwOptions);
ERRORCODE APIENTRY SaveGroup (HSEARCHER hsrch, PSZ pszFileName);
ERRORCODE APIENTRY LoadGroup (HSEARCHER hsrch, PSZ pszFileName);
HWND APIENTRY OpenDialog (HSEARCHER hsrch, HWND hwndParent);
ERRORCODE APIENTRY DeleteSearcher(HSEARCHER hsrch);
// Messages for talking to WinHelp
#define MSG_FTS_JUMP_HASH (WM_USER + 32) // wParam = index, lParam = HashValue
#define MSG_FTS_JUMP_VA (WM_USER + 33) // wParam = index, lParam = VirtualAddress
#define MSG_FTS_GET_TITLE (WM_USER + 34) // wParam = index, lParam = &pszTitle
#define MSG_FTS_JUMP_QWORD (WM_USER + 35) // wParam = index, lParam = address of QWordAddress structure
#define MSG_REINDEX_REQUEST (WM_USER + 36) // wParam = unused,lParam = unused
#define MSG_FTS_WHERE_IS_IT (WM_USER + 37) // wParam = fStartEnumeration, lParam = &pszFile
#define MSG_GET_DEFFONT (WM_USER + 45) // return default font handle
typedef struct _QWordAddress
{
UINT iSerial;
HANDLE hTopic;
} QWordAddress, *PQWordAddress;
// ------------------- Phrase Compression Interface ----------------------
HCOMPRESSOR APIENTRY NewCompressor(UINT iCharsetDefault);
ERRORCODE APIENTRY ScanText(HCOMPRESSOR hcmp, PBYTE pbText, UINT cbText, UINT iCharset);
ERRORCODE APIENTRY GetPhraseTable(HCOMPRESSOR hcmp, PUINT pcPhrases, PBYTE *ppbImages, PUINT pcbImages,
PBYTE *ppacbImageCompressed, PUINT pcbCompressed
);
ERRORCODE APIENTRY SetPhraseTable(HCOMPRESSOR hcmp, PBYTE pbImages, UINT cbImages,
PBYTE pacbImageCompressed, UINT cbCompressed
);
INT APIENTRY CompressText (HCOMPRESSOR hcmp, PBYTE pbText, UINT cbText, PBYTE *ppbCompressed, UINT iCharset);
INT APIENTRY DecompressText(HCOMPRESSOR hcmp, PBYTE pbCompressed, UINT cbCompressed, PBYTE pbText );
ERRORCODE APIENTRY DeleteCompressor(HCOMPRESSOR hcmp);
//----------------------- Hiliting Interface ------------------------------
HHILITER APIENTRY NewHiliter(HSEARCHER hSearch);
ERRORCODE APIENTRY DeleteHiliter(HHILITER hhil);
ERRORCODE APIENTRY ScanDisplayText(HHILITER hhil, PBYTE pbText, int cbText,
UINT iCharset, LCID lcid);
ERRORCODE APIENTRY ClearDisplayText(HHILITER hhil);
int APIENTRY CountHilites(HHILITER hhil, int base, int limit);
int APIENTRY QueryHilites(HHILITER hhil, int base, int limit,
int cHilites, HILITE* paHilites);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif // __FTSIFACE_H__
|