29 static const WCHAR GroupOrderListKey[] = {
'S',
'Y',
'S',
'T',
'E',
'M',
'\\',
'C',
'u',
'r',
'r',
'e',
'n',
't',
'C',
'o',
'n',
't',
'r',
'o',
'l',
'S',
'e',
't',
'\\',
'C',
'o',
'n',
't',
'r',
'o',
'l',
'\\',
'G',
'r',
'o',
'u',
'p',
'O',
'r',
'd',
'e',
'r',
'L',
'i',
's',
't',0};
32 static const WCHAR OemFileSpecification[] = {
'o',
'e',
'm',
'%',
'l',
'u',
'.',
'i',
'n',
'f',0};
36 static const WCHAR DependenciesKey[] = {
'D',
'e',
'p',
'e',
'n',
'd',
'e',
'n',
'c',
'i',
'e',
's',0};
37 static const WCHAR DescriptionKey[] = {
'D',
'e',
's',
'c',
'r',
'i',
'p',
't',
'i',
'o',
'n',0};
38 static const WCHAR DisplayNameKey[] = {
'D',
'i',
's',
'p',
'l',
'a',
'y',
'N',
'a',
'm',
'e',0};
39 static const WCHAR ErrorControlKey[] = {
'E',
'r',
'r',
'o',
'r',
'C',
'o',
'n',
't',
'r',
'o',
'l',0};
40 static const WCHAR LoadOrderGroupKey[] = {
'L',
'o',
'a',
'd',
'O',
'r',
'd',
'e',
'r',
'G',
'r',
'o',
'u',
'p',0};
42 static const WCHAR ServiceBinaryKey[] = {
'S',
'e',
'r',
'v',
'i',
'c',
'e',
'B',
'i',
'n',
'a',
'r',
'y',0};
43 static const WCHAR ServiceTypeKey[] = {
'S',
'e',
'r',
'v',
'i',
'c',
'e',
'T',
'y',
'p',
'e',0};
50 static const WCHAR WorkingDir[] = {
'W',
'o',
'r',
'k',
'i',
'n',
'g',
'D',
'i',
'r',0};
55 static const WCHAR DisplayResource[] = {
'D',
'i',
's',
'p',
'l',
'a',
'y',
'R',
'e',
's',
'o',
'u',
'r',
'c',
'e',0};
106 static const WCHAR AddService[] = {
'A',
'd',
'd',
'S',
'e',
'r',
'v',
'i',
'c',
'e',0};
115 static const WCHAR UpdateInis[] = {
'U',
'p',
'd',
'a',
't',
'e',
'I',
'n',
'i',
's',0};
117 static const WCHAR UpdateIniFields[] = {
'U',
'p',
'd',
'a',
't',
'e',
'I',
'n',
'i',
'F',
'i',
'e',
'l',
'd',
's',0};
118 static const WCHAR RegisterDlls[] = {
'R',
'e',
'g',
'i',
's',
't',
'e',
'r',
'D',
'l',
'l',
's',0};
119 static const WCHAR UnregisterDlls[] = {
'U',
'n',
'r',
'e',
'g',
'i',
's',
't',
'e',
'r',
'D',
'l',
'l',
's',0};
120 static const WCHAR ProfileItems[] = {
'P',
'r',
'o',
'f',
'i',
'l',
'e',
'I',
't',
'e',
'm',
's',0};
125 static const WCHAR WineFakeDlls[] = {
'W',
'i',
'n',
'e',
'F',
'a',
'k',
'e',
'D',
'l',
'l',
's',0};
203 static const WCHAR HKCR[] = {
'H',
'K',
'C',
'R',0};
204 static const WCHAR HKCU[] = {
'H',
'K',
'C',
'U',0};
205 static const WCHAR HKLM[] = {
'H',
'K',
'L',
'M',0};
206 static const WCHAR HKU[] = {
'H',
'K',
'U',0};
207 static const WCHAR HKR[] = {
'H',
'K',
'R',0};
315 if ((
flags & FLG_DELREG_MULTI_SZ_DELSTRING) == FLG_DELREG_MULTI_SZ_DELSTRING)
425 LPWSTR security_key, security_descriptor;
452 if (!security_descriptor)
460 MyFree( security_descriptor );
500 sd ? &security_attributes :
NULL, &hkey,
NULL ))
576 static const WCHAR format[] = {
'"',
'%',
's',
'"',
' ',
'%',
's',0};
577 static const WCHAR default_args[] = {
'/',
'R',
'e',
'g',
'S',
'e',
'r',
'v',
'e',
'r',0};
607 #endif // __WINESRC__ 611 const char *entry_point =
info->unregister ?
"DllUnregisterServer" :
"DllRegisterServer";
644 TRACE(
"calling DllInstall(%d,%s) in %s\n",
693 if (
p ==
path ||
p[-1] !=
'\\') *
p++ =
'\\';
743 if (
p ==
path ||
p[-1] !=
'\\') *
p++ =
'\\';
758 #endif // __WINESRC__ 840 DWORD dwRequired = 0;
848 dwRequired +=
wcslen(Dir) + 1;
850 dwRequired +=
wcslen(SubDirPart) + 1;
852 dwRequired +=
wcslen(NamePart);
895 INT LinkAttributes = 0;
906 INT DisplayResId = 0;
918 TRACE(
"hInf %p, SectionName %s, Arg %p\n",
950 if (!
Concatenate(FileDirId, FileSubDir, NamePart, &FullFileName))
996 if (!
Concatenate(DirId, SubDirPart, NamePart, &FullIconName))
1000 SubDirPart = NamePart =
NULL;
1036 TRACE(
"Display %s, %d\n", DisplayName, DisplayResId);
1046 if (!pCoCreateInstance)
1049 if (!pCoUninitialize)
1053 hr = pCoInitialize(
NULL);
1062 hr = pCoCreateInstance(&CLSID_ShellLink,
NULL, CLSCTX_INPROC_SERVER, &IID_IShellLinkW, (
LPVOID*)&psl);
1066 hr = IShellLinkW_SetPath(psl, FullFileName);
1068 hr = IShellLinkW_SetArguments(psl,
L"");
1070 hr = IShellLinkW_SetWorkingDirectory(psl, FullWorkingDir);
1072 hr = IShellLinkW_SetIconLocation(psl, FullIconName, IconIdx);
1074 FIXME(
"Need to store hotkey %s in shell link\n",
debugstr_w(lpHotKey));
1076 hr = IShellLinkW_SetDescription(psl, lpInfoTip);
1078 FIXME(
"Need to store display name %s, %d in shell link\n",
debugstr_w(DisplayName), DisplayResId);
1085 ((LinkSubDir !=
NULL) ?
wcslen(LinkSubDir) : 0) +
1093 FIXME(
"Need to handle FLG_PROFITEM_DELETE and FLG_PROFITEM_GROUP\n");
1105 if (FullLinkName[
wcslen(FullLinkName) - 1] !=
'\\')
1109 wcscat(FullLinkName, LinkSubDir);
1110 if (FullLinkName[
wcslen(FullLinkName) - 1] !=
'\\')
1115 wcscat(FullLinkName, LinkName);
1118 hr = IPersistFile_Save(ppf, FullLinkName,
TRUE);
1123 IPersistFile_Release(ppf);
1126 IShellLinkW_Release(psl);
1174 WCHAR static_buffer[200];
1190 WARN(
"callback failed for %s %s err %d\n",
1248 info.layout = hlayout;
1278 &
ctx, devinfo, devinfo_data );
1318 ERR(
"Unknown info type %u\n",
info->type);
1336 needs_info.
type = 0;
1353 BOOL use_custom_queue;
1367 if (!use_custom_queue)
1397 if (
flags & SPINST_REGISTERCALLBACKAWARE)
1410 #endif // __WINESRC__ 1417 if (
flags & SPINST_REGISTERCALLBACKAWARE)
1431 info.default_root = key_root;
1449 if (
flags & SPINST_COPYINF)
1470 DWORD SectionNameLength;
1481 while (*
s ==
' ')
s++;
1486 while (*
s ==
' ')
s++;
1491 FIXME(
"default path of the installation not changed\n");
1506 WARN(
"SetupDiGetActualSectionToInstallW() failed (Error %u)\n",
GetLastError());
1537 WARN(
"SetupInstallServicesFromInfSectionW() failed (Error %u)\n",
GetLastError());
1542 bRebootRequired =
TRUE;
1554 SHTDN_REASON_MINOR_INSTALLATION | SHTDN_REASON_FLAG_PLANNED);
1562 if (bRebootRequired)
1565 SHTDN_REASON_MINOR_INSTALLATION | SHTDN_REASON_FLAG_PLANNED);
1570 if (bRebootRequired)
1585 #ifdef CORE_11689_IS_FIXED 1741 DWORD RosDirLength, ServiceLength, Win32Length;
1744 RosDirLength =
strlenW(ReactOSDir);
1745 ServiceLength =
strlenW(*ServiceBinary);
1752 if (ServiceLength < RosDirLength)
1755 if (!
wcsnicmp(*ServiceBinary, ReactOSDir, RosDirLength))
1758 MoveMemory(*ServiceBinary, *ServiceBinary + RosDirLength + 1,
1759 (ServiceLength - RosDirLength) *
sizeof(
WCHAR));
1764 Win32Length = (ServiceLength - RosDirLength) *
sizeof(
WCHAR)
1765 -
sizeof(
L'\\') +
sizeof(
L"%SystemRoot%\\");
1785 SC_HANDLE hService =
NULL;
1801 INT ServiceType, StartType, ErrorControl;
1845 if (!LoadOrderGroup || !*LoadOrderGroup)
1862 if (hService ==
NULL)
1875 useTag ? &tagId :
NULL,
1879 if (hService ==
NULL)
1899 tagId = ServiceConfig->
dwTagId;
1909 useTag ? &tagId :
NULL,
1937 lpLoadOrderGroup = LoadOrderGroup;
1944 &hGroupOrderListKey);
1994 GroupOrder[1] = tagId;
2054 if (hService !=
NULL)
2056 if (hGroupOrderListKey !=
NULL)
2083 TRACE(
"%p, %s, 0x%lx, %p, %p, %p, %p\n", hinf,
debugstr_w(sectionname),
2112 needs_info.
type = 1;
2122 FIXME(
"Stopping the device not implemented\n");
2198 IN PCSTR OEMSourceMediaLocation,
2202 IN DWORD DestinationInfFileNameSize,
2209 PWSTR DestinationInfFileNameComponentW =
NULL;
2213 TRACE(
"%s %s 0x%lx 0x%lx %p 0%lu %p %p\n",
2214 SourceInfFileName, OEMSourceMediaLocation, OEMSourceMediaType,
2215 CopyStyle, DestinationInfFileName, DestinationInfFileNameSize,
2218 if (!DestinationInfFileName && DestinationInfFileNameSize > 0)
2226 if (DestinationInfFileNameSize != 0)
2228 DestinationInfFileNameW =
MyMalloc(DestinationInfFileNameSize *
sizeof(
WCHAR));
2229 if (!DestinationInfFileNameW)
2238 OEMSourceMediaLocationW,
2241 DestinationInfFileNameW,
2242 DestinationInfFileNameSize,
2244 DestinationInfFileNameComponent ? &DestinationInfFileNameComponentW :
NULL);
2251 if (DestinationInfFileNameSize != 0)
2254 DestinationInfFileName, DestinationInfFileNameSize,
NULL,
NULL) == 0)
2256 DestinationInfFileName[0] =
'\0';
2260 if (DestinationInfFileNameComponent)
2262 if (DestinationInfFileNameComponentW)
2263 *DestinationInfFileNameComponent = &DestinationInfFileName[DestinationInfFileNameComponentW - DestinationInfFileNameW];
2265 *DestinationInfFileNameComponent =
NULL;
2271 MyFree(SourceInfFileNameW);
2272 MyFree(OEMSourceMediaLocationW);
2273 MyFree(DestinationInfFileNameW);
2286 while(
ReadFile(file1, buffer1,
sizeof(buffer1), &size1,
NULL) &&
2287 ReadFile(file2, buffer2,
sizeof(buffer2), &size2,
NULL) )
2291 return size1 > size2 ? 1 : -1;
2294 ret =
memcmp( buffer1, buffer2, size1 );
2311 IN DWORD DestinationInfFileNameSize,
2317 TRACE(
"%s %s 0x%lx 0x%lx %p 0%lu %p %p\n",
2319 CopyStyle, DestinationInfFileName, DestinationInfFileNameSize,
2322 if (!SourceInfFileName)
2331 else if (!DestinationInfFileName && DestinationInfFileNameSize > 0)
2343 DWORD NextFreeNumber = 0;
2350 FIXME(
"OEMSourceMediaType 0x%lx ignored\n", OEMSourceMediaType);
2353 if (
strchrW(SourceInfFileName,
'\\' ) ||
strchrW(SourceInfFileName,
'/' ))
2374 static const WCHAR Inf[] = {
'\\',
'i',
'n',
'f',
'\\',0};
2375 static const WCHAR System32[] = {
'\\',
's',
'y',
's',
't',
'e',
'm',
'3',
'2',
'\\',0};
2419 if (pFullFileName[
strlenW(pFullFileName) - 1] !=
'\\')
2422 pFileName = &pFullFileName[
strlenW(pFullFileName)];
2425 AlreadyExists =
FALSE;
2439 strcpyW(pFileName, FindFileData.cFileName);
2450 TRACE(
"%s already exists as %s\n",
2452 AlreadyExists =
TRUE;
2455 }
while (!AlreadyExists &&
FindNextFileW(hSearch, &FindFileData));
2473 if (DestinationInfFileNameSize == 0)
2475 else if (DestinationInfFileNameSize <
Size)
2480 strcpyW(DestinationInfFileName, pFileName);
2497 DWORD CurrentNumber;
2499 && CurrentNumber <= 99999)
2501 if (CurrentNumber >= NextFreeNumber)
2502 NextFreeNumber = CurrentNumber + 1;
2507 if (NextFreeNumber > 99999)
2509 ERR(
"Too much custom .inf files\n");
2527 if (DestinationInfFileName)
2529 if (DestinationInfFileNameSize >=
len)
2531 strcpyW(DestinationInfFileName, pFullFileName);
2532 if (DestinationInfFileNameComponent)
2533 *DestinationInfFileNameComponent = &DestinationInfFileName[pFileName - pFullFileName];
static const WCHAR HKCR[]
#define ERROR_INVALID_PARAMETER
#define SPSVCINST_NOCLOBBER_DISPLAYNAME
#define FLG_ADDREG_APPEND
BOOL WINAPI FindNextFileW(IN HANDLE hFindFile, OUT LPWIN32_FIND_DATAW lpFindFileData)
static BOOL register_dlls_callback(HINF hinf, PCWSTR field, void *arg)
BOOL WINAPI SetupFindFirstLineW(IN HINF InfHandle, IN PCWSTR Section, IN PCWSTR Key, IN OUT PINFCONTEXT Context)
#define FLG_PROFITEM_CURRENTUSER
#define FLG_ADDREG_OVERWRITEONLY
static const WCHAR Include[]
static HKEY get_root_key(const WCHAR *name, HKEY def_root)
#define ERROR_FILE_EXISTS
#define SERVICE_SYSTEM_START
#define memmove(s1, s2, n)
UINT WINAPI GetSystemWindowsDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
BOOL WINAPI SetupDiGetActualSectionToInstallW(HINF InfHandle, PCWSTR InfSectionName, PWSTR InfSectionWithExt, DWORD InfSectionWithExtSize, PDWORD RequiredSize, PWSTR *Extension)
#define ERROR_SECTION_NOT_FOUND
#define SPSVCINST_DELETEEVENTLOGENTRY
static BOOL update_ini_callback(HINF hinf, PCWSTR field, void *arg)
#define HRESULT_FROM_WIN32(x)
#define FLG_PROFITEM_CSIDL
BOOL WINAPI SetupInstallFilesFromInfSectionA(HINF hinf, HINF hlayout, HSPFILEQ queue, PCSTR section, PCSTR src_root, UINT flags)
struct png_info_def **typedef void(__cdecl typeof(png_destroy_read_struct))(struct png_struct_def **
static const WCHAR OemFileSpecification[]
#define FLG_ADDREG_TYPE_SZ
BOOL WINAPI SetupInstallFilesFromInfSectionW(HINF hinf, HINF hlayout, HSPFILEQ queue, PCWSTR section, PCWSTR src_root, UINT flags)
int memcmp(void *Buffer1, void *Buffer2, ACPI_SIZE Count)
WINE_UNICODE_INLINE unsigned int strlenW(const WCHAR *str)
#define FLG_REGSVR_DLLINSTALL
BOOL WINAPI SetupQueueCopySectionW(HSPFILEQ queue, PCWSTR src_root, HINF hinf, HINF hlist, PCWSTR section, DWORD style)
#define FLG_PROFITEM_GROUP
static const WCHAR Ini2Reg[]
#define WideCharToMultiByte
static const WCHAR ServiceTypeKey[]
#define FLG_ADDREG_NOCLOBBER
static const WCHAR UpdateInis[]
static BOOL include_callback(HINF hinf, PCWSTR field, void *arg)
static BOOL logconf_callback(HINF hinf, PCWSTR field, void *arg)
BOOL WINAPI SetupInstallServicesFromInfSectionExW(HINF hinf, PCWSTR sectionname, DWORD flags, HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData, PVOID reserved1, PVOID reserved2)
static const WCHAR UnregisterDlls[]
#define SERVICES_ACTIVE_DATABASE
#define SPFILENOTIFY_STARTREGISTRATION
static BOOL do_register_dll(const struct register_dll_info *info, const WCHAR *path, INT flags, INT timeout, const WCHAR *args)
static const WCHAR DelFiles[]
static int compare_files(HANDLE file1, HANDLE file2)
IN BOOLEAN OUT PSTR Buffer
static const WCHAR LogConf[]
static const WCHAR Needs[]
SC_HANDLE WINAPI CreateServiceW(SC_HANDLE hSCManager, LPCWSTR lpServiceName, LPCWSTR lpDisplayName, DWORD dwDesiredAccess, DWORD dwServiceType, DWORD dwStartType, DWORD dwErrorControl, LPCWSTR lpBinaryPathName, LPCWSTR lpLoadOrderGroup, LPDWORD lpdwTagId, LPCWSTR lpDependencies, LPCWSTR lpServiceStartName, LPCWSTR lpPassword)
static WCHAR * get_field_string(INFCONTEXT *context, DWORD index, WCHAR *buffer, WCHAR *static_buffer, DWORD *size)
_In_ USHORT _In_ ULONG _In_ PSOCKADDR _In_ PSOCKADDR _Reserved_ ULONG _In_opt_ PVOID _In_opt_ const WSK_CLIENT_CONNECTION_DISPATCH _In_opt_ PEPROCESS _In_opt_ PETHREAD _In_opt_ PSECURITY_DESCRIPTOR SecurityDescriptor
GLsizei const GLchar ** path
WINE_UNICODE_INLINE WCHAR * strchrW(const WCHAR *str, WCHAR ch)
BOOL WINAPI QueryServiceConfigW(SC_HANDLE hService, LPQUERY_SERVICE_CONFIGW lpServiceConfig, DWORD cbBufSize, LPDWORD pcbBytesNeeded)
BOOL WINAPI SetupQueueRenameSectionW(HSPFILEQ queue, HINF hinf, HINF hlist, PCWSTR section)
#define FLG_ADDREG_KEYONLY
#define HKEY_CURRENT_USER
GLuint GLuint GLsizei count
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryExW(LPCWSTR lpLibFileName, HANDLE hFile, DWORD dwFlags)
static const WCHAR SecurityKey[]
#define ERROR_INVALID_HANDLE
#define ERROR_SUCCESS_REBOOT_REQUIRED
static BOOL update_ini_fields_callback(HINF hinf, PCWSTR field, void *arg)
HSPFILEQ WINAPI SetupOpenFileQueue(VOID)
#define SP_COPY_OEMINF_CATALOG_ONLY
#define ERROR_NOT_ENOUGH_MEMORY
#define INVALID_HANDLE_VALUE
IN PVOID IN PVOID IN USHORT IN USHORT Size
#define FLG_ADDREG_DELVAL
static BOOL registry_callback(HINF hinf, PCWSTR field, void *arg)
DWORD WINAPI GetLastError(VOID)
DWORD WINAPI GetFullPathNameW(IN LPCWSTR lpFileName, IN DWORD nBufferLength, OUT LPWSTR lpBuffer, OUT LPWSTR *lpFilePart)
UINT(CALLBACK * PSP_FILE_CALLBACK_A)(PVOID, UINT, UINT_PTR, UINT_PTR)
#define SPSVCINST_TAGTOFRONT
#define FLG_ADDREG_TYPE_MASK
int startup(int argc, const char *argv[])
#define SPREG_GETPROCADDR
#define ERROR_INSTALL_SERVICE_FAILURE
static BOOL needs_callback(HINF hinf, PCWSTR field, void *arg)
#define FLG_ADDREG_KEYONLY_COMMON
WCHAR * PARSER_get_dest_dir(INFCONTEXT *context)
_Check_return_ long __cdecl wcstol(_In_z_ const wchar_t *_Str, _Out_opt_ _Deref_post_z_ wchar_t **_EndPtr, _In_ int _Radix)
static const WCHAR Description[]
#define LOAD_WITH_ALTERED_SEARCH_PATH
BOOL WINAPI SetupCopyOEMInfA(IN PCSTR SourceInfFileName, IN PCSTR OEMSourceMediaLocation, IN DWORD OEMSourceMediaType, IN DWORD CopyStyle, OUT PSTR DestinationInfFileName OPTIONAL, IN DWORD DestinationInfFileNameSize, OUT PDWORD RequiredSize OPTIONAL, OUT PSTR *DestinationInfFileNameComponent OPTIONAL)
BOOL WINAPI DeleteService(SC_HANDLE hService)
HINF WINAPI SetupOpenInfFileW(PCWSTR name, PCWSTR class, DWORD style, UINT *error)
static HRESULT(WINAPI *pRunSetupCommand)(HWND
static const WCHAR DisplayNameKey[]
#define ERROR_SERVICE_NOT_ACTIVE
#define SETUP_DEVICE_INFO_SET_MAGIC
GLbitfield GLuint64 timeout
BOOL WINAPI SetupInstallServicesFromInfSectionA(HINF Inf, PCSTR SectionName, DWORD Flags)
static const WCHAR CopyINF[]
GLint GLint GLsizei GLsizei GLsizei GLint GLenum format
VOID WINAPI SetupCloseInfFile(IN HINF InfHandle)
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)
UINT WINAPI GetWindowsDirectoryW(OUT LPWSTR lpBuffer, IN UINT uSize)
#define CSIDL_COMMON_PROGRAMS
#define ERROR_OPERATION_ABORTED
#define SERVICE_NO_CHANGE
#define ERROR_INVALID_USER_BUFFER
#define SP_COPY_IN_USE_NEEDS_REBOOT
GLenum GLuint GLenum GLsizei const GLchar * buf
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
static const WCHAR AddService[]
static const WCHAR CmdLine[]
static BOOL rename_files_callback(HINF hinf, PCWSTR field, void *arg)
static BOOL(WINAPI *pIsWow64Process)(HANDLE
#define SPSVCINST_STOPSERVICE
#define FLG_DELREG_KEYONLY_COMMON
#define PSPGF_NONINTERACTIVE
LPWSTR WINAPI pSetupDuplicateString(LPCWSTR lpSrc)
#define FLG_ADDREG_TYPE_DWORD
LPWSTR WINAPI pSetupMultiByteToUnicode(LPCSTR lpMultiByteStr, UINT uCodePage)
static const WCHAR DelReg[]
#define FLG_REGSVR_DLLREGISTER
BOOL WINAPI SetupGetBinaryField(IN PINFCONTEXT Context, IN ULONG FieldIndex, OUT PUCHAR ReturnBuffer, IN ULONG ReturnBufferSize, OUT PULONG RequiredSize)
#define HRESULT_FACILITY(hr)
void WINAPI InstallHinfSectionW(HWND hwnd, HINSTANCE handle, LPCWSTR cmdline, INT show)
static const WCHAR DotLnk[]
LONG WINAPI RegOpenKeyW(HKEY hKey, LPCWSTR lpSubKey, PHKEY phkResult)
static struct _test_info info[]
static const WCHAR WorkingDir[]
HINSTANCE WINAPI DECLSPEC_HOTPATCH LoadLibraryA(LPCSTR lpLibFileName)
#define FLG_PROFITEM_DELETE
BOOL WINAPI ChangeServiceConfigW(SC_HANDLE hService, DWORD dwServiceType, DWORD dwStartType, DWORD dwErrorControl, LPCWSTR lpBinaryPathName, LPCWSTR lpLoadOrderGroup, LPDWORD lpdwTagId, LPCWSTR lpDependencies, LPCWSTR lpServiceStartName, LPCWSTR lpPassword, LPCWSTR lpDisplayName)
static const WCHAR RegisterDlls[]
BOOL WINAPI SetupDiGetDeviceInstallParamsW(IN HDEVINFO DeviceInfoSet, IN PSP_DEVINFO_DATA DeviceInfoData OPTIONAL, OUT PSP_DEVINSTALL_PARAMS_W DeviceInstallParams)
BOOL WINAPI DeleteFileW(IN LPCWSTR lpFileName)
SC_HANDLE WINAPI OpenServiceW(SC_HANDLE hSCManager, LPCWSTR lpServiceName, DWORD dwDesiredAccess)
static const WCHAR CopyFiles[]
REFIID LPVOID DWORD_PTR dw
static BOOL copy_files_callback(HINF hinf, PCWSTR field, void *arg)
HRESULT(WINAPI * COCREATEINSTANCE)(IN REFCLSID rclsid, IN LPUNKNOWN pUnkOuter, IN DWORD dwClsContext, IN REFIID riid, OUT LPVOID *ppv)
BOOL WINAPI CloseServiceHandle(SC_HANDLE hSCObject)
static const WCHAR InfDirectory[]
BOOL WINAPI SetupQueueDeleteSectionW(HSPFILEQ queue, HINF hinf, HINF hlist, PCWSTR section)
static BOOL GetIntField(HINF hinf, PCWSTR section_name, PCWSTR key_name, INT *value)
INT WINAPI SetupPromptReboot(HSPFILEQ file_queue, HWND owner, BOOL scan_only)
#define REGSTR_PATH_SERVICES
static BOOL delete_files_callback(HINF hinf, PCWSTR field, void *arg)
NTSYSAPI BOOLEAN NTAPI RtlCreateUnicodeStringFromAsciiz(_Out_ PUNICODE_STRING Destination, _In_ PCSZ Source)
#define SERVICE_BOOT_START
#define ERROR_SERVICE_MARKED_FOR_DELETE
#define SC_MANAGER_CREATE_SERVICE
HRESULT(WINAPI * COUNINITIALIZE)(VOID)
BOOL WINAPI SetupInstallFromInfSectionA(HWND owner, HINF hinf, PCSTR section, UINT flags, HKEY key_root, PCSTR src_root, UINT copy_flags, PSP_FILE_CALLBACK_A callback, PVOID context, HDEVINFO devinfo, PSP_DEVINFO_DATA devinfo_data)
#define ERROR_FILE_NOT_FOUND
static void append_multi_sz_value(HKEY hkey, const WCHAR *value, const WCHAR *strings, DWORD str_size)
static const WCHAR RenFiles[]
#define SP_COPY_NOOVERWRITE
BOOL WINAPI DECLSPEC_HOTPATCH CreateProcessW(LPCWSTR lpApplicationName, LPWSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCWSTR lpCurrentDirectory, LPSTARTUPINFOW lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation)
static const WCHAR HKLM[]
static HANDLE hServicesKey
LONG WINAPI RegSetValueExW(_In_ HKEY hKey, _In_ LPCWSTR lpValueName, _In_ DWORD Reserved, _In_ DWORD dwType, _In_ CONST BYTE *lpData, _In_ DWORD cbData)
static const WCHAR HotKey[]
#define FLG_ADDREG_TYPE_BINARY
_Must_inspect_result_ _In_ ULONG Flags
#define ERROR_BAD_SERVICE_INSTALLSECT
#define MAX_INF_STRING_LENGTH
PVOID WINAPI HeapAlloc(HANDLE, DWORD, SIZE_T)
LONG WINAPI RegQueryValueExW(_In_ HKEY hkeyorg, _In_ LPCWSTR name, _In_ LPDWORD reserved, _In_ LPDWORD type, _In_ LPBYTE data, _In_ LPDWORD count)
int WINAPI MessageBoxW(_In_opt_ HWND, _In_opt_ LPCWSTR, _In_opt_ LPCWSTR, _In_ UINT)
static const WCHAR DotServices[]
BOOL WINAPI CopyFileW(IN LPCWSTR lpExistingFileName, IN LPCWSTR lpNewFileName, IN BOOL bFailIfExists)
UINT(CALLBACK * PSP_FILE_CALLBACK_W)(IN PVOID Context, IN UINT Notification, IN UINT_PTR Param1, IN UINT_PTR Param2)
_In_ WDFCOLLECTION _In_ ULONG Index
static const WCHAR DependenciesKey[]
static LPCSTR DWORD void * pvReserved
BOOL WINAPI SetupCopyOEMInfW(IN PCWSTR SourceInfFileName, IN PCWSTR OEMSourceMediaLocation, IN DWORD OEMSourceMediaType, IN DWORD CopyStyle, OUT PWSTR DestinationInfFileName OPTIONAL, IN DWORD DestinationInfFileNameSize, OUT PDWORD RequiredSize OPTIONAL, OUT PWSTR *DestinationInfFileNameComponent OPTIONAL)
#define SERVICE_CHANGE_CONFIG
static SERVICE_STATUS ServiceStatus
#define SPSVCINST_ASSOCSERVICE
_In_opt_ PSP_DEVINFO_DATA DeviceInfoData
static BOOL copy_inf_callback(HINF hinf, PCWSTR field, void *arg)
NTSYSAPI VOID NTAPI RtlFreeUnicodeString(PUNICODE_STRING UnicodeString)
SP_DEVINSTALL_PARAMS_A SP_DEVINSTALL_PARAMS
static const WCHAR BitReg[]
unsigned __int3264 UINT_PTR
static const WCHAR StartTypeKey[]
BOOL WINAPI SetupCommitFileQueueW(IN HWND Owner, IN HSPFILEQ QueueHandle, IN PSP_FILE_CALLBACK_W MsgHandler, IN PVOID Context OPTIONAL)
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
_In_opt_ PVOID _In_ ULONG _In_ PVOID context
#define FILE_READ_ATTRIBUTES
static const WCHAR IconIndex[]
static const WCHAR DotSecurity[]
BOOL WINAPI SetupInstallFromInfSectionW(HWND owner, HINF hinf, PCWSTR section, UINT flags, HKEY key_root, PCWSTR src_root, UINT copy_flags, PSP_FILE_CALLBACK_W callback, PVOID context, HDEVINFO devinfo, PSP_DEVINFO_DATA devinfo_data)
static const WCHAR BackSlash[]
ULONG WINAPI SetupGetFieldCount(IN PINFCONTEXT Context)
GLsizei const GLchar *const * strings
static BOOL GetLineText(HINF hinf, PCWSTR section_name, PCWSTR key_name, PWSTR *value)
_CRTIMP wchar_t *__cdecl wcscpy(_Out_writes_z_(_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
#define FILE_SHARE_DELETE
#define FLG_ADDREG_BINVALUETYPE
void WINAPI InstallHinfSectionA(HWND hwnd, HINSTANCE handle, LPCSTR cmdline, INT show)
static const WCHAR ErrorControlKey[]
static const WCHAR OemFileMask[]
SC_HANDLE WINAPI OpenSCManagerW(LPCWSTR lpMachineName, LPCWSTR lpDatabaseName, DWORD dwDesiredAccess)
UINT WINAPI SetupDefaultQueueCallbackW(PVOID context, UINT notification, UINT_PTR param1, UINT_PTR param2)
#define memcpy(s1, s2, n)
void WINAPI SetupTermDefaultQueueCallback(PVOID context)
static const WCHAR InfoTip[]
#define SP_COPY_REPLACEONLY
BOOL WINAPI ExitWindowsEx(_In_ UINT, _In_ DWORD)
const WCHAR * DIRID_get_string(int dirid)
UINT CALLBACK QUEUE_callback_WtoA(void *context, UINT notification, UINT_PTR param1, UINT_PTR param2)
BOOL WINAPI WritePrivateProfileStringW(LPCWSTR section, LPCWSTR entry, LPCWSTR string, LPCWSTR filename)
static const WCHAR DisplayResource[]
BOOL WINAPI SetupOpenAppendInfFileW(PCWSTR name, HINF parent_hinf, UINT *error)
HRESULT(WINAPI * COINITIALIZE)(IN LPVOID pvReserved)
NTSTATUS NTAPI NtDeleteKey(IN HANDLE KeyHandle)
static const WCHAR LoadOrderGroupKey[]
#define ERROR_INVALID_DATA
static const WCHAR HKCU[]
static BOOL profile_items_callback(IN HINF hInf, IN PCWSTR SectionName, IN PVOID Arg)
BOOL GetStringField(PINFCONTEXT context, DWORD index, PWSTR *value)
static const WCHAR AddReg[]
#define SPFILENOTIFY_ENDREGISTRATION
WINE_UNICODE_INLINE WCHAR * strcpyW(WCHAR *dst, const WCHAR *src)
#define SPSVCINST_NOCLOBBER_ERRORCONTROL
#define SPINST_PROFILEITEMS
BOOL WINAPI SetupGetMultiSzFieldW(IN PINFCONTEXT Context, IN ULONG FieldIndex, OUT PWSTR ReturnBuffer, IN ULONG ReturnBufferSize, OUT PULONG RequiredSize)
LPVOID lpSecurityDescriptor
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
BOOL WINAPI SHGetSpecialFolderPathW(HWND hwndOwner, LPWSTR szPath, int nFolder, BOOL bCreate)
LONG WINAPI RegDeleteValueW(HKEY hKey, LPCWSTR lpValueName)
BOOL WINAPI SetupInstallServicesFromInfSectionW(HINF Inf, PCWSTR SectionName, DWORD Flags)
static BOOL ini2reg_callback(HINF hinf, PCWSTR field, void *arg)
static const WCHAR DescriptionKey[]
HLOCAL NTAPI LocalFree(HLOCAL hMem)
PVOID WINAPI SetupInitDefaultQueueCallback(HWND owner)
BOOL WINAPI TerminateProcess(IN HANDLE hProcess, IN UINT uExitCode)
#define SP_COPY_DELETESOURCE
WINE_UNICODE_INLINE WCHAR * strcatW(WCHAR *dst, const WCHAR *src)
#define ReadFile(a, b, c, d, e)
_CRTIMP wchar_t *__cdecl wcscat(_Inout_updates_z_(_String_length_(_Dest)+_String_length_(_Source)+1) wchar_t *_Dest, _In_z_ const wchar_t *_Source)
BOOL WINAPI ControlService(SC_HANDLE hService, DWORD dwControl, LPSERVICE_STATUS lpServiceStatus)
BOOL WINAPI SetServiceObjectSecurity(SC_HANDLE hService, SECURITY_INFORMATION dwSecurityInformation, PSECURITY_DESCRIPTOR lpSecurityDescriptor)
PSP_DEVINFO_DATA devinfo_data
BOOL WINAPI SetupFindNextLine(IN PINFCONTEXT ContextIn, OUT PINFCONTEXT ContextOut)
_CRTIMP size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
static BOOL InstallOneService(struct DeviceInfoSet *list, IN HINF hInf, IN LPCWSTR ServiceSection, IN LPCWSTR ServiceName, IN UINT ServiceFlags)
static const WCHAR IconPath[]
#define ERROR_SERVICE_DOES_NOT_EXIST
#define SPSVCINST_NOCLOBBER_DEPENDENCIES
static BOOL iterate_section_fields(HINF hinf, PCWSTR section, PCWSTR key, iterate_fields_func callback, void *arg)
static BOOL do_reg_operation(HKEY hkey, const WCHAR *value, INFCONTEXT *context, INT flags)
#define SPSVCINST_NOCLOBBER_STARTTYPE
#define FLG_ADDREG_DELREG_BIT
const GUID IID_IPersistFile
struct tagContext Context
BOOL WINAPI SetupGetIntField(IN PINFCONTEXT Context, IN ULONG FieldIndex, OUT INT *IntegerValue)
BOOL WINAPI SetupDiSetDeviceRegistryPropertyW(HDEVINFO DeviceInfoSet, PSP_DEVINFO_DATA DeviceInfoData, DWORD Property, const BYTE *PropertyBuffer, DWORD PropertyBufferSize)
static void delete_multi_sz_value(HKEY hkey, const WCHAR *value, const WCHAR *string)
LONG WINAPI RegOpenKeyExW(HKEY hKey, LPCWSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult)
#define ERROR_CALL_NOT_IMPLEMENTED
#define FLG_ADDREG_TYPE_EXPAND_SZ
static const WCHAR StartNameKey[]
char * cleanup(char *str)
#define GetProcAddress(x, y)
LPVOID WINAPI MyMalloc(DWORD dwSize)
static const WCHAR SubDir[]
#define SERVICE_CONTROL_STOP
#define SERVICE_QUERY_CONFIG
static BOOL create_fake_dll(LPCSTR filename)
#define HKEY_CLASSES_ROOT
static const WCHAR ProfileItems[]
BOOL WINAPI SetupQueueDefaultCopyW(HSPFILEQ queue, HINF hinf, PCWSTR src_root, PCWSTR src_file, PCWSTR dst_file, DWORD style)
#define strtoulW(s1, s2, b)
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ ULONG _Out_ PVOID _Out_ PULONG RequiredSize
GLuint GLuint GLsizei GLenum type
static IPrintDialogCallback callback
#define ERROR_GEN_FAILURE
static const WCHAR GroupOrderListKey[]
static const WCHAR UpdateIniFields[]
struct _MEMORY_AREA struct _MM_REQUIRED_RESOURCES * Required
#define SPSVCINST_NOCLOBBER_LOADORDERGROUP
static VOID FixupServiceBinaryPath(IN DWORD ServiceType, IN OUT LPWSTR *ServiceBinary)
BOOL WINAPI SetupInstallServicesFromInfSectionExA(HINF hinf, PCSTR sectionname, DWORD flags, HDEVINFO devinfo, PSP_DEVINFO_DATA devinfo_data, PVOID reserved1, PVOID reserved2)
#define SPREG_LOADLIBRARY
HRESULT(* iterate_fields_func)(HINF hinf, PCWSTR field, const void *arg)
_Check_return_ _CRTIMP int __cdecl swscanf(_In_z_ const wchar_t *_Src, _In_z_ _Scanf_format_string_ const wchar_t *_Format,...)
static SERVICE_STATUS status
VOID WINAPI MyFree(LPVOID lpMem)
#define SERVICE_STOP_PENDING
BOOL WINAPI SetupCloseFileQueue(IN HSPFILEQ QueueHandle)
#define HeapFree(x, y, z)
#define ERROR_INVALID_FLAGS
PSP_FILE_CALLBACK_W callback
BOOL WINAPI SetupFindNextMatchLineW(PINFCONTEXT context_in, PCWSTR key, PINFCONTEXT context_out)
#define RegCloseKey(hKey)
static BOOL Concatenate(int DirId, LPCWSTR SubDirPart, LPCWSTR NamePart, LPWSTR *pFullName)
#define DACL_SECURITY_INFORMATION
#define FLG_ADDREG_TYPE_NONE
static BOOL bitreg_callback(HINF hinf, PCWSTR field, void *arg)
static const WCHAR ServiceBinaryKey[]
WINE_UNICODE_INLINE int atoiW(const WCHAR *str)
struct _SECURITY_ATTRIBUTES SECURITY_ATTRIBUTES
HANDLE WINAPI FindFirstFileW(IN LPCWSTR lpFileName, OUT LPWIN32_FIND_DATAW lpFindFileData)
BOOL WINAPI ConvertStringSecurityDescriptorToSecurityDescriptorW(LPCWSTR StringSecurityDescriptor, DWORD StringSDRevision, PSECURITY_DESCRIPTOR *SecurityDescriptor, PULONG SecurityDescriptorSize)
#define HKEY_LOCAL_MACHINE
#define FLG_ADDREG_TYPE_MULTI_SZ
#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 FindClose(HANDLE hFindFile)
PULONG MinorVersion OPTIONAL
BOOL WINAPI SetupGetStringFieldW(IN PINFCONTEXT Context, IN ULONG FieldIndex, OUT PWSTR ReturnBuffer, IN ULONG ReturnBufferSize, OUT PULONG RequiredSize)