2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: .inf file parser
4 * FILE: lib/inflib/infcache.h
5 * PURPOSE: INF file parser that caches contents of INF file in memory
6 * PROGRAMMER: Royce Mitchell III
8 * Ge van Geldorp <gvg@reactos.org>
11 #ifndef INFPRIV_H_INCLUDED
12 #define INFPRIV_H_INCLUDED
15 #define INF_STATUS_INSUFFICIENT_RESOURCES (0xC000009A)
16 #define INF_STATUS_BAD_SECTION_NAME_LINE (0xC0700001)
17 #define INF_STATUS_SECTION_NAME_TOO_LONG (0xC0700002)
18 #define INF_STATUS_WRONG_INF_STYLE (0xC0700003)
19 #define INF_STATUS_NOT_ENOUGH_MEMORY (0xC0700004)
21 typedef struct _INFCONTEXT
28 typedef struct _INFCACHEFIELD
30 struct _INFCACHEFIELD
*Next
;
31 struct _INFCACHEFIELD
*Prev
;
34 } INFCACHEFIELD
, *PINFCACHEFIELD
;
36 typedef struct _INFCACHELINE
38 struct _INFCACHELINE
*Next
;
39 struct _INFCACHELINE
*Prev
;
45 PINFCACHEFIELD FirstField
;
46 PINFCACHEFIELD LastField
;
48 } INFCACHELINE
, *PINFCACHELINE
;
50 typedef struct _INFCACHESECTION
52 struct _INFCACHESECTION
*Next
;
53 struct _INFCACHESECTION
*Prev
;
55 PINFCACHELINE FirstLine
;
56 PINFCACHELINE LastLine
;
61 } INFCACHESECTION
, *PINFCACHESECTION
;
63 typedef struct _INFCACHE
65 PINFCACHESECTION FirstSection
;
66 PINFCACHESECTION LastSection
;
68 PINFCACHESECTION StringsSection
;
69 } INFCACHE
, *PINFCACHE
;
71 typedef long INFSTATUS
;
73 /* FUNCTIONS ****************************************************************/
75 extern INFSTATUS
InfpParseBuffer(PINFCACHE file
,
79 extern PINFCACHESECTION
InfpCacheFreeSection(PINFCACHESECTION Section
);
80 extern PINFCACHELINE
InfpCacheFindKeyLine(PINFCACHESECTION Section
,
83 extern INFSTATUS
InfpFindFirstLine(HINF InfHandle
,
86 PINFCONTEXT
*Context
);
87 extern INFSTATUS
InfpFindNextLine(PINFCONTEXT ContextIn
,
88 PINFCONTEXT ContextOut
);
89 extern INFSTATUS
InfpFindFirstMatchLine(PINFCONTEXT ContextIn
,
91 PINFCONTEXT ContextOut
);
92 extern INFSTATUS
InfpFindNextMatchLine(PINFCONTEXT ContextIn
,
94 PINFCONTEXT ContextOut
);
95 extern LONG
InfpGetLineCount(HINF InfHandle
,
97 extern LONG
InfpGetFieldCount(PINFCONTEXT Context
);
98 extern INFSTATUS
InfpGetBinaryField(PINFCONTEXT Context
,
101 ULONG ReturnBufferSize
,
102 PULONG RequiredSize
);
103 extern INFSTATUS
InfpGetIntField(PINFCONTEXT Context
,
106 extern INFSTATUS
InfpGetMultiSzField(PINFCONTEXT Context
,
109 ULONG ReturnBufferSize
,
110 PULONG RequiredSize
);
111 extern INFSTATUS
InfpGetStringField(PINFCONTEXT Context
,
114 ULONG ReturnBufferSize
,
115 PULONG RequiredSize
);
116 extern INFSTATUS
InfpGetData(PINFCONTEXT Context
,
119 extern INFSTATUS
InfpGetDataField(PINFCONTEXT Context
,
122 extern VOID
InfpFreeContext(PINFCONTEXT Context
);
124 #endif /* INFPRIV_H_INCLUDED */