2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS Setup Library
4 * FILE: base/setup/lib/infsupp.h
5 * PURPOSE: Interfacing with Setup* API .INF Files support functions
6 * PROGRAMMERS: Hermes Belusca-Maito (hermes.belusca@sfr.fr)
13 // FIXME: Temporary measure until all the users of this header
14 // (usetup...) use or define SetupAPI-conforming APIs.
15 #if defined(_SETUPAPI_H_) || defined(_INC_SETUPAPI)
22 typedef struct _INFCONTEXT
28 } INFCONTEXT
, *PINFCONTEXT
;
32 /* Lower the MAX_INF_STRING_LENGTH value in order to avoid too much stack usage */
33 #undef MAX_INF_STRING_LENGTH
34 #define MAX_INF_STRING_LENGTH 1024 // Still larger than in infcommon.h
36 #ifndef INF_STYLE_OLDNT
37 #define INF_STYLE_OLDNT 0x00000001
40 #ifndef INF_STYLE_WIN4
41 #define INF_STYLE_WIN4 0x00000002
46 typedef struct _INFCONTEXT
52 } INFCONTEXT
, *PINFCONTEXT
;
55 C_ASSERT(sizeof(INFCONTEXT
) == 2 * sizeof(HINF
) + 2 * sizeof(UINT
));
58 // #define SetupCloseInfFile InfCloseFile
60 (WINAPI
* pSpInfCloseInfFile
)(
63 extern pSpInfCloseInfFile SpInfCloseInfFile
;
65 // #define SetupFindFirstLineW InfpFindFirstLineW
67 (WINAPI
* pSpInfFindFirstLine
)(
71 IN OUT PINFCONTEXT Context
);
73 extern pSpInfFindFirstLine SpInfFindFirstLine
;
75 // #define SetupFindNextLine InfFindNextLine
77 (WINAPI
* pSpInfFindNextLine
)(
78 IN PINFCONTEXT ContextIn
,
79 OUT PINFCONTEXT ContextOut
);
81 extern pSpInfFindNextLine SpInfFindNextLine
;
83 // #define SetupGetFieldCount InfGetFieldCount
85 (WINAPI
* pSpInfGetFieldCount
)(
86 IN PINFCONTEXT Context
);
88 extern pSpInfGetFieldCount SpInfGetFieldCount
;
90 // #define SetupGetBinaryField InfGetBinaryField
92 (WINAPI
* pSpInfGetBinaryField
)(
93 IN PINFCONTEXT Context
,
95 OUT PUCHAR ReturnBuffer
,
96 IN ULONG ReturnBufferSize
,
97 OUT PULONG RequiredSize
);
99 extern pSpInfGetBinaryField SpInfGetBinaryField
;
101 // #define SetupGetIntField InfGetIntField
103 (WINAPI
* pSpInfGetIntField
)(
104 IN PINFCONTEXT Context
,
106 OUT INT
*IntegerValue
); // PINT
108 extern pSpInfGetIntField SpInfGetIntField
;
110 // #define SetupGetMultiSzFieldW InfGetMultiSzField
112 (WINAPI
* pSpInfGetMultiSzField
)(
113 IN PINFCONTEXT Context
,
115 OUT PWSTR ReturnBuffer
,
116 IN ULONG ReturnBufferSize
,
117 OUT PULONG RequiredSize
);
119 extern pSpInfGetMultiSzField SpInfGetMultiSzField
;
121 // #define SetupGetStringFieldW InfGetStringField
123 (WINAPI
* pSpInfGetStringField
)(
124 IN PINFCONTEXT Context
,
126 OUT PWSTR ReturnBuffer
,
127 IN ULONG ReturnBufferSize
,
128 OUT PULONG RequiredSize
);
130 extern pSpInfGetStringField SpInfGetStringField
;
132 // #define pSetupGetField
134 (WINAPI
* pSpInfGetField
)(
135 IN PINFCONTEXT Context
,
136 IN ULONG FieldIndex
);
138 extern pSpInfGetField SpInfGetField
;
140 /* A version of SetupOpenInfFileW with support for a user-provided LCID */
141 // #define SetupOpenInfFileExW InfpOpenInfFileW
143 (WINAPI
* pSpInfOpenInfFile
)(
148 OUT PUINT ErrorLine
);
150 extern pSpInfOpenInfFile SpInfOpenInfFile
;
153 /* HELPER FUNCTIONS **********************************************************/
162 RtlFreeHeap(ProcessHeap
, 0, InfData
);
164 UNREFERENCED_PARAMETER(InfData
);
170 IN PINFCONTEXT Context
,
176 IN PINFCONTEXT Context
,