[USETUP] Moving around some code.
[reactos.git] / base / setup / usetup / inffile.h
1 /*
2 * ReactOS kernel
3 * Copyright (C) 2002 ReactOS Team
4 *
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 2 of the License, or
8 * (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 *
15 * You should have received a copy of the GNU General Public License along
16 * with this program; if not, write to the Free Software Foundation, Inc.,
17 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
18 */
19 /*
20 * COPYRIGHT: See COPYING in the top level directory
21 * PROJECT: ReactOS text-mode setup
22 * FILE: base/setup/usetup/inffile.h
23 * PURPOSE: .inf files support functions
24 * PROGRAMMER: Hervé Poussineau
25 */
26
27 #pragma once
28
29 #include <infcommon.h>
30
31 extern VOID InfSetHeap(PVOID Heap);
32 extern VOID InfCloseFile(HINF InfHandle);
33 extern BOOLEAN InfFindNextLine(PINFCONTEXT ContextIn,
34 PINFCONTEXT ContextOut);
35 extern BOOLEAN InfGetBinaryField(PINFCONTEXT Context,
36 ULONG FieldIndex,
37 PUCHAR ReturnBuffer,
38 ULONG ReturnBufferSize,
39 PULONG RequiredSize);
40 extern BOOLEAN InfGetMultiSzField(PINFCONTEXT Context,
41 ULONG FieldIndex,
42 PWSTR ReturnBuffer,
43 ULONG ReturnBufferSize,
44 PULONG RequiredSize);
45 extern BOOLEAN InfGetStringField(PINFCONTEXT Context,
46 ULONG FieldIndex,
47 PWSTR ReturnBuffer,
48 ULONG ReturnBufferSize,
49 PULONG RequiredSize);
50
51 #define SetupCloseInfFile InfCloseFile
52 #define SetupFindNextLine InfFindNextLine
53 #define SetupGetBinaryField InfGetBinaryField
54 #define SetupGetMultiSzFieldW InfGetMultiSzField
55 #define SetupGetStringFieldW InfGetStringField
56
57
58 #define SetupFindFirstLineW InfpFindFirstLineW
59 #define SetupGetFieldCount InfGetFieldCount
60 #define SetupGetIntField InfGetIntField
61
62 // SetupOpenInfFileW with support for a user-provided LCID
63 #define SetupOpenInfFileExW InfpOpenInfFileW
64
65 #define INF_STYLE_WIN4 0x00000002
66
67 /* FIXME: this structure is the one used in inflib, not in setupapi
68 * Delete it once we don't use inflib anymore */
69 typedef struct _INFCONTEXT
70 {
71 HINF Inf;
72 HINF CurrentInf;
73 UINT Section;
74 UINT Line;
75 } INFCONTEXT;
76 C_ASSERT(sizeof(INFCONTEXT) == 2 * sizeof(PVOID) + 2 * sizeof(UINT));
77
78 BOOL
79 WINAPI
80 InfpFindFirstLineW(
81 IN HINF InfHandle,
82 IN PCWSTR Section,
83 IN PCWSTR Key,
84 IN OUT PINFCONTEXT Context);
85
86 HINF
87 WINAPI
88 InfpOpenInfFileW(
89 IN PCWSTR FileName,
90 IN PCWSTR InfClass,
91 IN DWORD InfStyle,
92 IN LCID LocaleId,
93 OUT PUINT ErrorLine);
94
95 BOOLEAN
96 INF_GetData(
97 IN PINFCONTEXT Context,
98 OUT PWCHAR *Key,
99 OUT PWCHAR *Data);
100
101 BOOLEAN
102 INF_GetDataField(
103 IN PINFCONTEXT Context,
104 IN ULONG FieldIndex,
105 OUT PWCHAR *Data);
106
107 HINF WINAPI
108 INF_OpenBufferedFileA(
109 IN PSTR FileBuffer,
110 IN ULONG FileSize,
111 IN PCSTR InfClass,
112 IN DWORD InfStyle,
113 IN LCID LocaleId,
114 OUT PUINT ErrorLine);
115
116 /* EOF */