ReactOS 0.4.17-dev-966-gf06eace
infsupp.h File Reference
#include "spapisup.h"
Include dependency graph for infsupp.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  _INFCONTEXT
 
struct  _SPINF_EXPORTS
 

Macros

#define MAX_INF_STRING_LENGTH   1024
 
#define INF_STYLE_OLDNT   0x00000001
 
#define INF_STYLE_WIN4   0x00000002
 
#define SpInfCloseInfFile   (SpInfExports.SpInfCloseInfFile)
 
#define SpInfFindFirstLine   (SpInfExports.SpInfFindFirstLine)
 
#define SpInfFindNextLine   (SpInfExports.SpInfFindNextLine)
 
#define SpInfGetFieldCount   (SpInfExports.SpInfGetFieldCount)
 
#define SpInfGetBinaryField   (SpInfExports.SpInfGetBinaryField)
 
#define SpInfGetIntField   (SpInfExports.SpInfGetIntField)
 
#define SpInfGetMultiSzField   (SpInfExports.SpInfGetMultiSzField)
 
#define SpInfGetStringField   (SpInfExports.SpInfGetStringField)
 
#define SpInfGetField   (SpInfExports.SpInfGetField)
 
#define SpInfOpenInfFile   (SpInfExports.SpInfOpenInfFile)
 

Typedefs

typedef PVOID HINF
 
typedef struct _INFCONTEXT INFCONTEXT
 
typedef struct _INFCONTEXT * PINFCONTEXT
 
typedef VOID(WINAPI * pSpInfCloseInfFile) (IN HINF InfHandle)
 
typedef BOOL(WINAPI * pSpInfFindFirstLine) (IN HINF InfHandle, IN PCWSTR Section, IN PCWSTR Key, IN OUT PINFCONTEXT Context)
 
typedef BOOL(WINAPI * pSpInfFindNextLine) (IN PINFCONTEXT ContextIn, OUT PINFCONTEXT ContextOut)
 
typedef ULONG(WINAPI * pSpInfGetFieldCount) (IN PINFCONTEXT Context)
 
typedef BOOL(WINAPI * pSpInfGetBinaryField) (IN PINFCONTEXT Context, IN ULONG FieldIndex, OUT PUCHAR ReturnBuffer, IN ULONG ReturnBufferSize, OUT PULONG RequiredSize)
 
typedef BOOL(WINAPI * pSpInfGetIntField) (IN PINFCONTEXT Context, IN ULONG FieldIndex, OUT INT *IntegerValue)
 
typedef BOOL(WINAPI * pSpInfGetMultiSzField) (IN PINFCONTEXT Context, IN ULONG FieldIndex, OUT PWSTR ReturnBuffer, IN ULONG ReturnBufferSize, OUT PULONG RequiredSize)
 
typedef BOOL(WINAPI * pSpInfGetStringField) (IN PINFCONTEXT Context, IN ULONG FieldIndex, OUT PWSTR ReturnBuffer, IN ULONG ReturnBufferSize, OUT PULONG RequiredSize)
 
typedef PCWSTR(WINAPI * pSpInfGetField) (IN PINFCONTEXT Context, IN ULONG FieldIndex)
 
typedef HINF(WINAPI * pSpInfOpenInfFile) (IN PCWSTR FileName, IN PCWSTR InfClass, IN DWORD InfStyle, IN LCID LocaleId, OUT PUINT ErrorLine)
 
typedef struct _SPINF_EXPORTS SPINF_EXPORTS
 
typedef struct _SPINF_EXPORTS * PSPINF_EXPORTS
 

Functions

 C_ASSERT (sizeof(INFCONTEXT)==2 *sizeof(HINF)+2 *sizeof(UINT))
 
FORCEINLINE VOID INF_FreeData (IN PCWSTR InfData)
 
BOOLEAN INF_GetDataField (IN PINFCONTEXT Context, IN ULONG FieldIndex, OUT PCWSTR *Data)
 
BOOLEAN INF_GetData (IN PINFCONTEXT Context, OUT PCWSTR *Key, OUT PCWSTR *Data)
 

Variables

SPINF_EXPORTS SpInfExports
 

Macro Definition Documentation

◆ INF_STYLE_OLDNT

#define INF_STYLE_OLDNT   0x00000001

Definition at line 39 of file infsupp.h.

◆ INF_STYLE_WIN4

#define INF_STYLE_WIN4   0x00000002

Definition at line 43 of file infsupp.h.

◆ MAX_INF_STRING_LENGTH

#define MAX_INF_STRING_LENGTH   1024

Definition at line 36 of file infsupp.h.

◆ SpInfCloseInfFile

#define SpInfCloseInfFile   (SpInfExports.SpInfCloseInfFile)

Definition at line 139 of file infsupp.h.

◆ SpInfFindFirstLine

#define SpInfFindFirstLine   (SpInfExports.SpInfFindFirstLine)

Definition at line 140 of file infsupp.h.

◆ SpInfFindNextLine

#define SpInfFindNextLine   (SpInfExports.SpInfFindNextLine)

Definition at line 141 of file infsupp.h.

◆ SpInfGetBinaryField

#define SpInfGetBinaryField   (SpInfExports.SpInfGetBinaryField)

Definition at line 143 of file infsupp.h.

◆ SpInfGetField

#define SpInfGetField   (SpInfExports.SpInfGetField)

Definition at line 147 of file infsupp.h.

◆ SpInfGetFieldCount

#define SpInfGetFieldCount   (SpInfExports.SpInfGetFieldCount)

Definition at line 142 of file infsupp.h.

◆ SpInfGetIntField

#define SpInfGetIntField   (SpInfExports.SpInfGetIntField)

Definition at line 144 of file infsupp.h.

◆ SpInfGetMultiSzField

#define SpInfGetMultiSzField   (SpInfExports.SpInfGetMultiSzField)

Definition at line 145 of file infsupp.h.

◆ SpInfGetStringField

#define SpInfGetStringField   (SpInfExports.SpInfGetStringField)

Definition at line 146 of file infsupp.h.

◆ SpInfOpenInfFile

#define SpInfOpenInfFile   (SpInfExports.SpInfOpenInfFile)

Definition at line 148 of file infsupp.h.

Typedef Documentation

◆ HINF

typedef PVOID HINF

Definition at line 21 of file infsupp.h.

◆ INFCONTEXT

◆ PINFCONTEXT

◆ PSPINF_EXPORTS

◆ pSpInfCloseInfFile

typedef VOID(WINAPI * pSpInfCloseInfFile) (IN HINF InfHandle)

Definition at line 50 of file infsupp.h.

◆ pSpInfFindFirstLine

typedef BOOL(WINAPI * pSpInfFindFirstLine) (IN HINF InfHandle, IN PCWSTR Section, IN PCWSTR Key, IN OUT PINFCONTEXT Context)

Definition at line 55 of file infsupp.h.

◆ pSpInfFindNextLine

typedef BOOL(WINAPI * pSpInfFindNextLine) (IN PINFCONTEXT ContextIn, OUT PINFCONTEXT ContextOut)

Definition at line 63 of file infsupp.h.

◆ pSpInfGetBinaryField

typedef BOOL(WINAPI * pSpInfGetBinaryField) (IN PINFCONTEXT Context, IN ULONG FieldIndex, OUT PUCHAR ReturnBuffer, IN ULONG ReturnBufferSize, OUT PULONG RequiredSize)

Definition at line 74 of file infsupp.h.

◆ pSpInfGetField

typedef PCWSTR(WINAPI * pSpInfGetField) (IN PINFCONTEXT Context, IN ULONG FieldIndex)

Definition at line 108 of file infsupp.h.

◆ pSpInfGetFieldCount

typedef ULONG(WINAPI * pSpInfGetFieldCount) (IN PINFCONTEXT Context)

Definition at line 69 of file infsupp.h.

◆ pSpInfGetIntField

typedef BOOL(WINAPI * pSpInfGetIntField) (IN PINFCONTEXT Context, IN ULONG FieldIndex, OUT INT *IntegerValue)

Definition at line 83 of file infsupp.h.

◆ pSpInfGetMultiSzField

typedef BOOL(WINAPI * pSpInfGetMultiSzField) (IN PINFCONTEXT Context, IN ULONG FieldIndex, OUT PWSTR ReturnBuffer, IN ULONG ReturnBufferSize, OUT PULONG RequiredSize)

Definition at line 90 of file infsupp.h.

◆ pSpInfGetStringField

typedef BOOL(WINAPI * pSpInfGetStringField) (IN PINFCONTEXT Context, IN ULONG FieldIndex, OUT PWSTR ReturnBuffer, IN ULONG ReturnBufferSize, OUT PULONG RequiredSize)

Definition at line 99 of file infsupp.h.

◆ pSpInfOpenInfFile

typedef HINF(WINAPI * pSpInfOpenInfFile) (IN PCWSTR FileName, IN PCWSTR InfClass, IN DWORD InfStyle, IN LCID LocaleId, OUT PUINT ErrorLine)

Definition at line 115 of file infsupp.h.

◆ SPINF_EXPORTS

Function Documentation

◆ C_ASSERT()

C_ASSERT ( sizeof(INFCONTEXT)  = =2 *sizeof(HINF)+2 *sizeof(UINT))

◆ INF_FreeData()

FORCEINLINE VOID INF_FreeData ( IN PCWSTR  InfData)

Definition at line 154 of file infsupp.h.

156{
157#if 0
158 if (InfData)
159 RtlFreeHeap(ProcessHeap, 0, InfData);
160#else
161 UNREFERENCED_PARAMETER(InfData);
162#endif
163}
HANDLE ProcessHeap
Definition: servman.c:15
BOOLEAN NTAPI RtlFreeHeap(IN PVOID HeapHandle, IN ULONG Flags, IN PVOID HeapBase)
Definition: heap.c:634
#define UNREFERENCED_PARAMETER(P)
Definition: ntbasedef.h:329

Referenced by AddComputerTypeEntries(), AddEntriesFromInfSection(), AddSectionToCopyQueue(), AddSectionToCopyQueueCab(), CheckUnattendedSetup(), CompareInfFirstLineString(), CreateDisplayDriverList(), GetSourceFileAndTargetLocation(), INF_GetData(), InstallDriver(), LoadSetupInf(), PrepareCopyInfFile(), PrepareFileCopy(), and UpdateRegistry().

◆ INF_GetData()

BOOLEAN INF_GetData ( IN PINFCONTEXT  Context,
OUT PCWSTR *  Key,
OUT PCWSTR *  Data 
)

Definition at line 77 of file infsupp.c.

81{
83 PCWSTR InfData[2] = {NULL, NULL};
84
85 if (Key)
86 *Key = NULL;
87
88 if (Data)
89 *Data = NULL;
90
91 /*
92 * Verify that the INF file has only one value field, in addition to its key name.
93 * Note that SpInfGetFieldCount() does not count the key name as a field.
94 */
96 {
97 DPRINT1("SpInfGetFieldCount != 1\n");
98 return FALSE;
99 }
100
101 if (Key)
102 {
103 Success = INF_GetDataField(Context, 0, &InfData[0]);
104 if (!Success)
105 return FALSE;
106 }
107
108 if (Data)
109 {
110 Success = INF_GetDataField(Context, 1, &InfData[1]);
111 if (!Success)
112 {
113 INF_FreeData(InfData[0]);
114 return FALSE;
115 }
116 }
117
118 if (Key)
119 *Key = InfData[0];
120
121 if (Data)
122 *Data = InfData[1];
123
124 return TRUE;
125}
#define DPRINT1
Definition: precomp.h:8
#define NULL
Definition: types.h:112
#define TRUE
Definition: types.h:120
#define FALSE
Definition: types.h:117
@ Success
Definition: eventcreate.c:712
unsigned int BOOL
Definition: ntddk_ex.h:94
#define SpInfGetFieldCount
Definition: infsupp.h:142
FORCEINLINE VOID INF_FreeData(IN PCWSTR InfData)
Definition: infsupp.h:154
BOOLEAN INF_GetDataField(IN PINFCONTEXT Context, IN ULONG FieldIndex, OUT PCWSTR *Data)
Definition: infsupp.c:29
_In_ PVOID Context
Definition: storport.h:2269
const uint16_t * PCWSTR
Definition: typedefs.h:57

Referenced by AddSectionToCopyQueueCab(), CheckUnattendedSetup(), CompareInfFirstLineString(), CreateKeyboardLayoutList(), CreateLanguageList(), LoadSetupInf(), LookupDirectoryById(), PrepareCopyInfFile(), and PrepareFileCopy().

◆ INF_GetDataField()

BOOLEAN INF_GetDataField ( IN PINFCONTEXT  Context,
IN ULONG  FieldIndex,
OUT PCWSTR *  Data 
)

Definition at line 29 of file infsupp.c.

33{
34#if 0
35
37 PWCHAR InfData;
39
40 *Data = NULL;
41
44 NULL,
45 0,
46 &dwSize);
47 if (!Success)
48 return FALSE;
49
50 InfData = RtlAllocateHeap(ProcessHeap, 0, dwSize * sizeof(WCHAR));
51 if (!InfData)
52 return FALSE;
53
56 InfData,
57 dwSize,
58 NULL);
59 if (!Success)
60 {
61 RtlFreeHeap(ProcessHeap, 0, InfData);
62 return FALSE;
63 }
64
65 *Data = InfData;
66 return TRUE;
67
68#else
69
71 return !!*Data;
72
73#endif
74}
PVOID NTAPI RtlAllocateHeap(IN PVOID HeapHandle, IN ULONG Flags, IN SIZE_T Size)
Definition: heap.c:616
unsigned long DWORD
Definition: ntddk_ex.h:95
#define SpInfGetField
Definition: infsupp.h:147
#define SpInfGetStringField
Definition: infsupp.h:146
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
Definition: env.c:56
short WCHAR
Definition: pedump.c:58
_In_ DWORD FieldIndex
Definition: setupapi.h:1943
uint16_t * PWCHAR
Definition: typedefs.h:56

Referenced by AddComputerTypeEntries(), AddEntriesFromInfSection(), AddSectionToCopyQueue(), AddSectionToCopyQueueCab(), CreateDisplayDriverList(), GetSourceFileAndTargetLocation(), INF_GetData(), InstallDriver(), ProcessDisplayRegistry(), and UpdateRegistry().

Variable Documentation

◆ SpInfExports

SPINF_EXPORTS SpInfExports
extern

Definition at line 24 of file infsupp.c.

Referenced by _tWinMain(), InitializeSetup(), and SetupStartPage().