Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygeninfpriv.h
Go to the documentation of this file.
00001 /* 00002 * PROJECT: .inf file parser 00003 * LICENSE: GPL - See COPYING in the top level directory 00004 * PROGRAMMER: Royce Mitchell III 00005 * Eric Kohl 00006 * Ge van Geldorp <gvg@reactos.org> 00007 */ 00008 00009 #pragma once 00010 00011 #ifndef FIELD_OFFSET 00012 #define FIELD_OFFSET(t,f) ((ptrdiff_t)&(((t*)0)->f)) 00013 #endif 00014 00015 #define INF_STATUS_INSUFFICIENT_RESOURCES ((INFSTATUS)0xC000009A) 00016 #define INF_STATUS_BAD_SECTION_NAME_LINE ((INFSTATUS)0xC0700001) 00017 #define INF_STATUS_SECTION_NAME_TOO_LONG ((INFSTATUS)0xC0700002) 00018 #define INF_STATUS_WRONG_INF_STYLE ((INFSTATUS)0xC0700003) 00019 #define INF_STATUS_NOT_ENOUGH_MEMORY ((INFSTATUS)0xC0700004) 00020 00021 typedef struct _INFCACHEFIELD 00022 { 00023 struct _INFCACHEFIELD *Next; 00024 struct _INFCACHEFIELD *Prev; 00025 00026 TCHAR Data[1]; 00027 } INFCACHEFIELD, *PINFCACHEFIELD; 00028 00029 typedef struct _INFCACHELINE 00030 { 00031 struct _INFCACHELINE *Next; 00032 struct _INFCACHELINE *Prev; 00033 00034 LONG FieldCount; 00035 00036 PTSTR Key; 00037 00038 PINFCACHEFIELD FirstField; 00039 PINFCACHEFIELD LastField; 00040 00041 } INFCACHELINE, *PINFCACHELINE; 00042 00043 typedef struct _INFCACHESECTION 00044 { 00045 struct _INFCACHESECTION *Next; 00046 struct _INFCACHESECTION *Prev; 00047 00048 PINFCACHELINE FirstLine; 00049 PINFCACHELINE LastLine; 00050 00051 LONG LineCount; 00052 00053 TCHAR Name[1]; 00054 } INFCACHESECTION, *PINFCACHESECTION; 00055 00056 typedef struct _INFCACHE 00057 { 00058 PINFCACHESECTION FirstSection; 00059 PINFCACHESECTION LastSection; 00060 00061 PINFCACHESECTION StringsSection; 00062 } INFCACHE, *PINFCACHE; 00063 00064 typedef struct _INFCONTEXT 00065 { 00066 PINFCACHE Inf; 00067 PINFCACHESECTION Section; 00068 PINFCACHELINE Line; 00069 } INFCONTEXT; 00070 00071 typedef int INFSTATUS; 00072 00073 /* FUNCTIONS ****************************************************************/ 00074 00075 extern INFSTATUS InfpParseBuffer(PINFCACHE file, 00076 const CHAR *buffer, 00077 const CHAR *end, 00078 PULONG error_line); 00079 extern PINFCACHESECTION InfpFreeSection(PINFCACHESECTION Section); 00080 extern PINFCACHESECTION InfpAddSection(PINFCACHE Cache, 00081 PCTSTR Name); 00082 extern PINFCACHELINE InfpAddLine(PINFCACHESECTION Section); 00083 extern PVOID InfpAddKeyToLine(PINFCACHELINE Line, 00084 PCTSTR Key); 00085 extern PVOID InfpAddFieldToLine(PINFCACHELINE Line, 00086 PCTSTR Data); 00087 extern PINFCACHELINE InfpFindKeyLine(PINFCACHESECTION Section, 00088 PCTSTR Key); 00089 extern PINFCACHESECTION InfpFindSection(PINFCACHE Cache, 00090 PCTSTR Section); 00091 00092 extern INFSTATUS InfpBuildFileBuffer(PINFCACHE InfHandle, 00093 PCHAR *Buffer, 00094 PULONG BufferSize); 00095 00096 extern INFSTATUS InfpFindFirstLine(PINFCACHE InfHandle, 00097 PCTSTR Section, 00098 PCTSTR Key, 00099 PINFCONTEXT *Context); 00100 extern INFSTATUS InfpFindNextLine(PINFCONTEXT ContextIn, 00101 PINFCONTEXT ContextOut); 00102 extern INFSTATUS InfpFindFirstMatchLine(PINFCONTEXT ContextIn, 00103 PCTSTR Key, 00104 PINFCONTEXT ContextOut); 00105 extern INFSTATUS InfpFindNextMatchLine(PINFCONTEXT ContextIn, 00106 PCTSTR Key, 00107 PINFCONTEXT ContextOut); 00108 extern LONG InfpGetLineCount(HINF InfHandle, 00109 PCTSTR Section); 00110 extern LONG InfpGetFieldCount(PINFCONTEXT Context); 00111 extern INFSTATUS InfpGetBinaryField(PINFCONTEXT Context, 00112 ULONG FieldIndex, 00113 PUCHAR ReturnBuffer, 00114 ULONG ReturnBufferSize, 00115 PULONG RequiredSize); 00116 extern INFSTATUS InfpGetIntField(PINFCONTEXT Context, 00117 ULONG FieldIndex, 00118 INT* IntegerValue); 00119 extern INFSTATUS InfpGetMultiSzField(PINFCONTEXT Context, 00120 ULONG FieldIndex, 00121 PTSTR ReturnBuffer, 00122 ULONG ReturnBufferSize, 00123 PULONG RequiredSize); 00124 extern INFSTATUS InfpGetStringField(PINFCONTEXT Context, 00125 ULONG FieldIndex, 00126 PTSTR ReturnBuffer, 00127 ULONG ReturnBufferSize, 00128 PULONG RequiredSize); 00129 extern INFSTATUS InfpGetData(PINFCONTEXT Context, 00130 PTCHAR *Key, 00131 PTCHAR *Data); 00132 extern INFSTATUS InfpGetDataField(PINFCONTEXT Context, 00133 ULONG FieldIndex, 00134 PTCHAR *Data); 00135 00136 extern INFSTATUS InfpFindOrAddSection(PINFCACHE Cache, 00137 PCTSTR Section, 00138 PINFCONTEXT *Context); 00139 extern INFSTATUS InfpAddLineWithKey(PINFCONTEXT Context, PCTSTR Key); 00140 extern INFSTATUS InfpAddField(PINFCONTEXT Context, PCTSTR Data); 00141 00142 extern VOID InfpFreeContext(PINFCONTEXT Context); 00143 00144 /* EOF */ Generated on Fri May 25 2012 04:34:45 for ReactOS by
1.7.6.1
|