40#define MAX_FIELD_LENGTH 512
45 'S',
'O',
'F',
'T',
'W',
'A',
'R',
'E',
'\\',
46 'M',
'i',
'c',
'r',
'o',
's',
'o',
'f',
't',
'\\',
47 'A',
'c',
't',
'i',
'v',
'e',
' ',
'S',
'e',
't',
'u',
'p',
'\\',
48 'I',
'n',
's',
't',
'a',
'l',
'l',
'e',
'd',
' ',
49 'C',
'o',
'm',
'p',
'o',
'n',
'e',
'n',
't',
's',0
76 static const WCHAR hklm[] = {
'H',
'K',
'L',
'M',0};
77 static const WCHAR hkcu[] = {
'H',
'K',
'C',
'U',0};
118 static const WCHAR source_dir[] = {
'S',
'o',
'u',
'r',
'c',
'e',
'D',
'i',
'r',0};
120 static const WCHAR custDestW[] = {
121 'C',
'u',
's',
't',
'o',
'm',
'D',
'e',
's',
't',
'i',
'n',
'a',
't',
'i',
'o',
'n',0
157 while (*
value ==
' ')
175 FIXME(
"Need to support changing paths - default will be used\n");
201 TRACE(
"(%p)\n", hInf);
293 FIXME(
"(VOID): stub\n");
313 FIXME(
"(%d): stub\n", dwRebootCheck);
331 if (!pszInfFilename || !phInf)
369 if (!pszInfFilename || !phInf)
395 if (!pszINF || !pszSec)
483 LPWSTR cmdline_copy, cmdline_ptr;
495 cmdline_ptr = cmdline_copy;
499 if (!ocx_filename || !*ocx_filename)
528 TRACE(
"(%p)\n", pPerUser);
562 static const WCHAR stub_path[] = {
'S',
't',
'u',
'b',
'P',
'a',
't',
'h',0};
563 static const WCHAR version[] = {
'V',
'e',
'r',
's',
'i',
'o',
'n',0};
564 static const WCHAR locale[] = {
'L',
'o',
'c',
'a',
'l',
'e',0};
565 static const WCHAR compid[] = {
'C',
'o',
'm',
'p',
'o',
'n',
'e',
'n',
't',
'I',
'D',0};
566 static const WCHAR isinstalled[] = {
'I',
's',
'I',
'n',
's',
't',
'a',
'l',
'l',
'e',
'd',0};
568 TRACE(
"(%p)\n", pPerUser);
570 if (!pPerUser || !*pPerUser->
szGUID)
640 TRACE(
"(%s, %s, %s, %s, %p, %d, %p, %p)\n",
643 pszBuffer, dwBufferSize,pdwRequiredSize,
pvReserved);
645 if (!pszInfFilename || !pszTranslateSection ||
646 !pszTranslateKey || !pdwRequiredSize)
670 if (dwBufferSize >= *pdwRequiredSize)
717 TRACE(
"(%s, %s, %s, %s, %p, %d, %p, %p)\n",
720 pszBuffer, dwBufferSize,pdwRequiredSize,
pvReserved);
722 if (!pszInfFilename || !pszTranslateSection ||
723 !pszTranslateKey || !pdwRequiredSize)
733 pszBuffer, dwBufferSize, pdwRequiredSize))
735 if (dwBufferSize < *pdwRequiredSize)
760 TRACE(
"(%p, %s, %s, %s, %p, %d, %p, %p)\n", hInf,
debugstr_a(pszInfFilename),
762 pszBuffer, dwBufferSize, pdwRequiredSize,
pvReserved);
764 if (!pszInfFilename || !pszTranslateSection ||
765 !pszTranslateKey || !pdwRequiredSize)
787 if (dwBufferSize >= *pdwRequiredSize)
840 TRACE(
"(%p, %s, %s, %s, %p, %d, %p, %p)\n", hInf,
debugstr_w(pszInfFilename),
842 pszBuffer, dwBufferSize, pdwRequiredSize,
pvReserved);
844 if (!hInf || !pszInfFilename || !pszTranslateSection || !pszTranslateKey)
848 pszBuffer, dwBufferSize, pdwRequiredSize))
850 if (dwBufferSize < *pdwRequiredSize)
914 static const WCHAR real_stub_path[] = {
915 'R',
'e',
'a',
'l',
'S',
't',
'u',
'b',
'P',
'a',
't',
'h',0
920 if (!pszParms || !*pszParms)
LPWSTR get_parameter(LPWSTR *params, WCHAR separator, BOOL quoted) DECLSPEC_HIDDEN
HRESULT launch_exe(LPCWSTR cmd, LPCWSTR dir, HANDLE *phEXE) DECLSPEC_HIDDEN
static const WCHAR infW[]
#define WINE_DEFAULT_DEBUG_CHANNEL(t)
#define RegCloseKey(hKey)
#define ERROR_INSUFFICIENT_BUFFER
BOOL WINAPI SetupSetDirectoryIdW(HINF hinf, DWORD id, PCWSTR dir)
LONG WINAPI RegCreateKeyExW(_In_ HKEY hKey, _In_ LPCWSTR lpSubKey, _In_ DWORD Reserved, _In_opt_ LPWSTR lpClass, _In_ DWORD dwOptions, _In_ REGSAM samDesired, _In_opt_ LPSECURITY_ATTRIBUTES lpSecurityAttributes, _Out_ PHKEY phkResult, _Out_opt_ LPDWORD lpdwDisposition)
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
LONG WINAPI RegOpenKeyW(HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult)
LONG WINAPI RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
BOOL WINAPI GetTokenInformation(HANDLE TokenHandle, TOKEN_INFORMATION_CLASS TokenInformationClass, LPVOID TokenInformation, DWORD TokenInformationLength, PDWORD ReturnLength)
BOOL WINAPI OpenProcessToken(HANDLE ProcessHandle, DWORD DesiredAccess, PHANDLE TokenHandle)
BOOL WINAPI AllocateAndInitializeSid(PSID_IDENTIFIER_AUTHORITY pIdentifierAuthority, BYTE nSubAuthorityCount, DWORD nSubAuthority0, DWORD nSubAuthority1, DWORD nSubAuthority2, DWORD nSubAuthority3, DWORD nSubAuthority4, DWORD nSubAuthority5, DWORD nSubAuthority6, DWORD nSubAuthority7, PSID *pSid)
PVOID WINAPI FreeSid(PSID pSid)
BOOL WINAPI EqualSid(PSID pSid1, PSID pSid2)
HRESULT WINAPI CloseINFEngine(HINF hInf)
HRESULT WINAPI TranslateInfStringA(LPCSTR pszInfFilename, LPCSTR pszInstallSection, LPCSTR pszTranslateSection, LPCSTR pszTranslateKey, LPSTR pszBuffer, DWORD dwBufferSize, PDWORD pdwRequiredSize, PVOID pvReserved)
HRESULT WINAPI RegisterOCX(HWND hWnd, HINSTANCE hInst, LPCSTR cmdline, INT show)
HRESULT do_ocx_reg(HMODULE hocx, BOOL do_reg, const WCHAR *flags, const WCHAR *param)
HRESULT WINAPI SetPerUserSecValuesA(PERUSERSECTIONA *pPerUser)
HRESULT WINAPI RebootCheckOnInstallA(HWND hWnd, LPCSTR pszINF, LPCSTR pszSec, DWORD dwReserved)
HRESULT WINAPI TranslateInfStringW(LPCWSTR pszInfFilename, LPCWSTR pszInstallSection, LPCWSTR pszTranslateSection, LPCWSTR pszTranslateKey, LPWSTR pszBuffer, DWORD dwBufferSize, PDWORD pdwRequiredSize, PVOID pvReserved)
HRESULT(WINAPI * DLLREGISTER)(void)
BOOL WINAPI NeedReboot(DWORD dwRebootCheck)
void set_ldids(HINF hInf, LPCWSTR pszInstallSection, LPCWSTR pszWorkingDir)
HRESULT WINAPI TranslateInfStringExW(HINF hInf, LPCWSTR pszInfFilename, LPCWSTR pszTranslateSection, LPCWSTR pszTranslateKey, LPWSTR pszBuffer, DWORD dwBufferSize, PDWORD pdwRequiredSize, PVOID pvReserved)
HRESULT WINAPI RebootCheckOnInstallW(HWND hWnd, LPCWSTR pszINF, LPCWSTR pszSec, DWORD dwReserved)
HRESULT WINAPI TranslateInfStringExA(HINF hInf, LPCSTR pszInfFilename, LPCSTR pszTranslateSection, LPCSTR pszTranslateKey, LPSTR pszBuffer, DWORD dwBufferSize, PDWORD pdwRequiredSize, PVOID pvReserved)
HRESULT WINAPI UserInstStubWrapperW(HWND hWnd, HINSTANCE hInstance, LPWSTR pszParms, INT nShow)
static const WCHAR setup_key[]
HRESULT WINAPI UserUnInstStubWrapperA(HWND hWnd, HINSTANCE hInstance, LPSTR pszParms, INT nShow)
HRESULT WINAPI OpenINFEngineA(LPCSTR pszInfFilename, LPCSTR pszInstallSection, DWORD dwFlags, HINF *phInf, PVOID pvReserved)
HRESULT WINAPI OpenINFEngineW(LPCWSTR pszInfFilename, LPCWSTR pszInstallSection, DWORD dwFlags, HINF *phInf, PVOID pvReserved)
HRESULT WINAPI UserUnInstStubWrapperW(HWND hWnd, HINSTANCE hInstance, LPWSTR pszParms, INT nShow)
static void get_dest_dir(HINF hInf, PCWSTR pszSection, PWSTR pszBuffer, DWORD dwSize)
HRESULT WINAPI UserInstStubWrapperA(HWND hWnd, HINSTANCE hInstance, LPSTR pszParms, INT nShow)
HRESULT WINAPI SetPerUserSecValuesW(PERUSERSECTIONW *pPerUser)
static void strip_quotes(WCHAR *buffer, DWORD *size)
DWORD WINAPI NeedRebootInit(VOID)
BOOL WINAPI IsNTAdmin(DWORD reserved, LPDWORD pReserved)
#define GetProcAddress(x, y)
#define INVALID_HANDLE_VALUE
#define GetCurrentProcess()
#define HeapFree(x, y, z)
#define WideCharToMultiByte
#define MultiByteToWideChar
static const WCHAR version[]
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryExW(LPCWSTR lpLibFileName, HANDLE hFile, DWORD dwFlags)
int WINAPI lstrcmpW(LPCWSTR str1, LPCWSTR str2)
int WINAPI lstrcmpiW(LPCWSTR str1, LPCWSTR str2)
HINF WINAPI SetupOpenInfFileW(PCWSTR name, PCWSTR class, DWORD style, UINT *error)
BOOL WINAPI SetupGetLineTextW(PINFCONTEXT context, HINF hinf, PCWSTR section_name, PCWSTR key_name, PWSTR buffer, DWORD size, PDWORD required)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
_Check_return_ long __cdecl wcstol(_In_z_ const wchar_t *_Str, _Out_opt_ _Deref_post_z_ wchar_t **_EndPtr, _In_ int _Radix)
#define memmove(s1, s2, n)
#define ERROR_FILE_NOT_FOUND
PSDBQUERYRESULT_VISTA PVOID DWORD * dwSize
static const WCHAR filenameW[]
static LPCSTR DWORD void * pvReserved
_In_ HANDLE _In_ DWORD _In_ DWORD _Inout_opt_ LPOVERLAPPED _In_opt_ LPTRANSMIT_FILE_BUFFERS _In_ DWORD dwReserved
NTSYSAPI BOOLEAN NTAPI RtlCreateUnicodeStringFromAsciiz(_Out_ PUNICODE_STRING Destination, _In_ PCSZ Source)
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
WCHAR szStub[MAX_PATH *4]
SID_AND_ATTRIBUTES Groups[ANYSIZE_ARRAY]
BOOL WINAPI SetupGetStringFieldW(IN PINFCONTEXT Context, IN ULONG FieldIndex, OUT PWSTR ReturnBuffer, IN ULONG ReturnBufferSize, OUT PULONG RequiredSize)
BOOL WINAPI SetupFindFirstLineW(IN HINF InfHandle, IN PCWSTR Section, IN PCWSTR Key, IN OUT PINFCONTEXT Context)
BOOL WINAPI SetupFindNextLine(IN PINFCONTEXT ContextIn, OUT PINFCONTEXT ContextOut)
VOID WINAPI SetupCloseInfFile(IN HINF InfHandle)
DWORD WINAPI GetLastError(void)
#define LOAD_WITH_ALTERED_SEARCH_PATH
_In_ PCCERT_CONTEXT _In_ DWORD dwFlags
#define E_NOT_SUFFICIENT_BUFFER
#define SPAPI_E_LINE_NOT_FOUND
#define HRESULT_FROM_WIN32(x)
#define HKEY_LOCAL_MACHINE
#define HKEY_CURRENT_USER
#define SECURITY_BUILTIN_DOMAIN_RID
#define SECURITY_NT_AUTHORITY
#define DOMAIN_ALIAS_RID_ADMINS