ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

infpriv.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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.