24 {
'S',
'o',
'u',
'r',
'c',
'e',
'D',
'i',
's',
'k',
's',
'N',
'a',
'm',
'e',
's',0};
26 {
'S',
'o',
'u',
'r',
'c',
'e',
'D',
'i',
's',
'k',
's',
'F',
'i',
'l',
'e',
's',0};
37 if (required) *required = total_size;
42 if (
size < total_size)
60 static const WCHAR infW[] = {
'\\',
'i',
'n',
'f',
'\\',0};
61 static const WCHAR system32W[] = {
'\\',
's',
'y',
's',
't',
'e',
'm',
'3',
'2',
'\\',0};
253 TRACE(
"(%p, %u, %p, %d, %p) Stub!\n", InfInformation, InfIndex,
263 FIXME(
"Appended INF files are not handled\n");
297 TRACE(
"%p, %p, %s, %p, %p, 0x%08x, %p\n", hinf,
context,
debugstr_a(
filename), source_id,
313 if (required_size) *required_size =
size;
384 TRACE(
"%p, %p, %s, %p, %p, 0x%08x, %p\n", hinf,
context,
debugstr_w(
filename), source_id,
392 *source_id =
strtolW( source_id_str, &
end, 10 );
393 if (
end == source_id_str || *
end)
403 if (required_size) *required_size = 1;
428 TRACE(
"%p, %d, %d, %p, %d, %p\n", hinf, source_id,
info,
buffer,
buffer_size,
441 if (required_size) *required_size =
size;
469 WCHAR source_id_str[11];
470 static const WCHAR fmt[] = {
'%',
'd',0};
473 TRACE(
"%p, %d, %d, %p, %d, %p\n", hinf, source_id,
info,
buffer,
buffer_size,
491 WARN(
"unknown info level: %d\n",
info);
498 if (required_size) *required_size = 1;
523 TRACE(
"%p, %p, %s, %p, 0x%08x, %p\n", hinf,
context,
debugstr_a(
section),
buffer,
539 if (required_size) *required_size =
size;
566 static const WCHAR destination_dirs[] =
567 {
'D',
'e',
's',
't',
'i',
'n',
'a',
't',
'i',
'o',
'n',
'D',
'i',
'r',
's',0};
568 static const WCHAR default_dest_dir[] =
569 {
'D',
'e',
'f',
'a',
'u',
'l',
't',
'D',
'e',
's',
't',
'D',
'i',
'r',0};
576 TRACE(
"%p, %p, %s, %p, 0x%08x, %p\n", hinf,
context,
debugstr_w(
section),
buffer,
591 if (required_size) *required_size =
size;
619 TRACE(
"(%p, %d, %p, %p)\n", InfInformation, InfIndex,
620 AlternativePlatformInfo, OriginalFileInfo);
622 if (OriginalFileInfo->
cbSize !=
sizeof(*OriginalFileInfo))
624 WARN(
"incorrect OriginalFileInfo->cbSize of %d\n", OriginalFileInfo->
cbSize);
629 OriginalFileInfoW.
cbSize =
sizeof(OriginalFileInfoW);
631 AlternativePlatformInfo, &OriginalFileInfoW);
654 static const WCHAR wszVersion[] = {
'V',
'e',
'r',
's',
'i',
'o',
'n',0 };
655 static const WCHAR wszCatalogFile[] = {
'C',
'a',
't',
'a',
'l',
'o',
'g',
'F',
'i',
'l',
'e',0 };
657 FIXME(
"(%p, %d, %p, %p): semi-stub\n", InfInformation, InfIndex,
658 AlternativePlatformInfo, OriginalFileInfo);
660 if (OriginalFileInfo->
cbSize !=
sizeof(*OriginalFileInfo))
662 WARN(
"incorrect OriginalFileInfo->cbSize of %d\n", OriginalFileInfo->
cbSize);
688 inf_name =
strrchrW(inf_path,
'\\');
689 if (inf_name) inf_name++;
690 else inf_name = inf_path;
#define ERROR_INVALID_PARAMETER
BOOL WINAPI SetupFindFirstLineW(IN HINF InfHandle, IN PCWSTR Section, IN PCWSTR Key, IN OUT PINFCONTEXT Context)
static LPWSTR get_source_id(HINF hinf, PINFCONTEXT context, PCWSTR filename)
BOOL WINAPI SetupDiGetActualSectionToInstallW(HINF InfHandle, PCWSTR InfSectionName, PWSTR InfSectionWithExt, DWORD InfSectionWithExtSize, PDWORD RequiredSize, PWSTR *Extension)
static BOOL fill_inf_info(HINF inf, PSP_INF_INFORMATION buffer, DWORD size, DWORD *required)
#define INFINFO_INF_SPEC_IS_HINF
const WCHAR * PARSER_get_inf_filename(HINF hinf)
BOOL WINAPI SetupGetSourceFileLocationA(HINF hinf, PINFCONTEXT context, PCSTR filename, PUINT source_id, PSTR buffer, DWORD buffer_size, PDWORD required_size)
WINE_UNICODE_INLINE unsigned int strlenW(const WCHAR *str)
#define WideCharToMultiByte
#define INFINFO_INF_NAME_IS_ABSOLUTE
BOOL WINAPI SetupGetInfInformationA(LPCVOID InfSpec, DWORD SearchControl, PSP_INF_INFORMATION ReturnBuffer, DWORD ReturnBufferSize, PDWORD RequiredSize)
BOOL WINAPI SetupQueryInfOriginalFileInformationA(PSP_INF_INFORMATION InfInformation, UINT InfIndex, PSP_ALTPLATFORM_INFO AlternativePlatformInfo, PSP_ORIGINAL_FILE_INFO_A OriginalFileInfo)
BOOL WINAPI SetupGetSourceInfoW(HINF hinf, UINT source_id, UINT info, PWSTR buffer, DWORD buffer_size, LPDWORD required_size)
BOOL WINAPI SetupGetTargetPathA(HINF hinf, PINFCONTEXT context, PCSTR section, PSTR buffer, DWORD buffer_size, PDWORD required_size)
#define ERROR_INVALID_HANDLE
#define ERROR_NOT_ENOUGH_MEMORY
#define INVALID_HANDLE_VALUE
_In_ DWORD _In_ DWORD ReturnBufferSize
WCHAR * PARSER_get_dest_dir(INFCONTEXT *context)
BOOL WINAPI SetupQueryInfFileInformationW(PSP_INF_INFORMATION InfInformation, UINT InfIndex, PWSTR ReturnBuffer, DWORD ReturnBufferSize, PDWORD RequiredSize)
HINF WINAPI SetupOpenInfFileW(PCWSTR name, PCWSTR class, DWORD style, UINT *error)
CHAR OriginalCatalogName[MAX_PATH]
WCHAR OriginalInfName[MAX_PATH]
BOOL WINAPI SetupGetSourceFileLocationW(HINF hinf, PINFCONTEXT context, PCWSTR filename, PUINT source_id, PWSTR buffer, DWORD buffer_size, PDWORD required_size)
#define INFINFO_REVERSE_DEFAULT_SEARCH
VOID WINAPI SetupCloseInfFile(IN HINF InfHandle)
UINT WINAPI GetWindowsDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
static const WCHAR source_disks_names[]
#define ERROR_INVALID_USER_BUFFER
static const WCHAR filenameW[]
static const WCHAR source_disks_files[]
static void buffer_size(GLcontext *ctx, GLuint *width, GLuint *height)
#define INFINFO_DEFAULT_SEARCH
#define ERROR_FILE_NOT_FOUND
_Inout_ PRTL_BUFFER _In_ SIZE_T RequiredSize
#define INFINFO_INF_PATH_LIST_SEARCH
#define SRCINFO_DESCRIPTION
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
static const WCHAR infW[]
BOOL WINAPI SetupQueryInfOriginalFileInformationW(PSP_INF_INFORMATION InfInformation, UINT InfIndex, PSP_ALTPLATFORM_INFO AlternativePlatformInfo, PSP_ORIGINAL_FILE_INFO_W OriginalFileInfo)
WCHAR OriginalCatalogName[MAX_PATH]
BOOL WINAPI SetupGetInfInformationW(LPCVOID InfSpec, DWORD SearchControl, PSP_INF_INFORMATION ReturnBuffer, DWORD ReturnBufferSize, PDWORD RequiredSize)
BOOL WINAPI SetupGetSourceInfoA(HINF hinf, UINT source_id, UINT info, PSTR buffer, DWORD buffer_size, LPDWORD required_size)
CHAR OriginalInfName[MAX_PATH]
WINE_UNICODE_INLINE WCHAR * strrchrW(const WCHAR *str, WCHAR ch)
BOOL WINAPI SetupQueryInfFileInformationA(PSP_INF_INFORMATION InfInformation, UINT InfIndex, PSTR ReturnBuffer, DWORD ReturnBufferSize, PDWORD RequiredSize)
WINE_UNICODE_INLINE WCHAR * strcpyW(WCHAR *dst, const WCHAR *src)
BOOL WINAPI SetupGetTargetPathW(HINF hinf, PINFCONTEXT context, PCWSTR section, PWSTR buffer, DWORD buffer_size, PDWORD required_size)
#define FIELD_OFFSET(t, f)
UINT WINAPI GetSystemDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
#define MultiByteToWideChar
static HINF search_for_inf(LPCVOID InfSpec, DWORD SearchControl)
LPWSTR WINAPI lstrcatW(LPWSTR lpString1, LPCWSTR lpString2)
#define HeapFree(x, y, z)
static WCHAR * strdupAtoW(const char *str)
#define ERROR_INSUFFICIENT_BUFFER
BOOL WINAPI SetupGetLineTextW(PINFCONTEXT context, HINF hinf, PCWSTR section_name, PCWSTR key_name, PWSTR buffer, DWORD size, PDWORD required)
BOOL WINAPI SetupGetStringFieldW(IN PINFCONTEXT Context, IN ULONG FieldIndex, OUT PWSTR ReturnBuffer, IN ULONG ReturnBufferSize, OUT PULONG RequiredSize)