mirror of
https://github.com/reactos/reactos.git
synced 2025-07-30 08:41:41 +00:00
* Sync up to trunk HEAD (r62285). Branch guys deserve the significant speedups too ;)
svn path=/branches/shell-experiments/; revision=62286
This commit is contained in:
commit
ddb3d908c9
1259 changed files with 40366 additions and 5588 deletions
|
@ -127,11 +127,11 @@ HKCR,"chm.file\DefaultIcon","",0x00020000,"%SystemRoot%\hh.exe,0"
|
|||
HKCR,"chm.file\shell\open\command","",0x00020000,"%SystemRoot%\hh.exe %1"
|
||||
|
||||
; set MIME type for .html and .htm because Tiny webserver needs it
|
||||
HKCR,".htm","",0x00000000,"html"
|
||||
HKCR,".htm","",0x00000000,"htmlfile"
|
||||
HKCR,".htm","Content Type",0x00000000,"text/html"
|
||||
|
||||
HKCR,".html","",0x00000000,"html"
|
||||
HKCR,".html","",0x00000000,"htmlfile"
|
||||
HKCR,".html","Content Type",0x00000000,"text/html"
|
||||
HKCR,"htmlfile\shell\open\command","",0x00020000,"""%programfiles%\Internet Explorer\iexplore.exe"" %1"
|
||||
|
||||
; Icons
|
||||
HKCR,".ico","",0x00000000,"icofile"
|
||||
|
|
|
@ -1885,6 +1885,7 @@ HKLM,"SYSTEM\CurrentControlSet\Hardware Profiles\Current\System\CurrentControlSe
|
|||
HKLM,"SYSTEM\CurrentControlSet\Hardware Profiles\Current\System\CurrentControlSet\Services\VBE\Device0","Attach.RelativeY",0x00010001,0
|
||||
HKLM,"SYSTEM\CurrentControlSet\Hardware Profiles\Current\System\CurrentControlSet\Services\VBE\Device0","Attach.ToDesktop",0x00010001,1
|
||||
HKLM,"SYSTEM\CurrentControlSet\Hardware Profiles\Current\System\CurrentControlSet\Services\VBE\Device0","Attach.PrimaryDevice",0x00010001,1
|
||||
HKLM,"SYSTEM\CurrentControlSet\Hardware Profiles\Current\System\CurrentControlSet\Services\VBE\Device0","Device Description",0x00020000,"Generic VESA Adapter"
|
||||
|
||||
; This is not true but it allows to use 3rd party drivers while having the VBE driver installed
|
||||
HKLM,"SYSTEM\CurrentControlSet\Hardware Profiles\Current\System\CurrentControlSet\Services\VBE\Device0","VgaCompatible",0x00010001,1
|
||||
|
|
|
@ -28,3 +28,4 @@ IDI_FDEBUG ICON "fdebug.ico"
|
|||
#include "lang/ru-RU.rc"
|
||||
#include "lang/tr-TR.rc"
|
||||
#include "lang/uk-UA.rc"
|
||||
#include "lang/sq-AL.rc"
|
||||
|
|
87
boot/freeldr/fdebug/lang/sq-AL.rc
Normal file
87
boot/freeldr/fdebug/lang/sq-AL.rc
Normal file
|
@ -0,0 +1,87 @@
|
|||
/* TRANSLATOR : Ardit Dani (Ard1t) (ardit.dani@gmail.com)
|
||||
* DATE OF TR: 18-01-2014
|
||||
*/
|
||||
|
||||
LANGUAGE LANG_ALBANIAN, SUBLANG_NEUTRAL
|
||||
|
||||
/* Menu */
|
||||
IDC_FDEBUG MENU
|
||||
BEGIN
|
||||
POPUP "&Skeda"
|
||||
BEGIN
|
||||
MENUITEM "&Lidhu", IDM_FILE_CONNECT
|
||||
MENUITEM "&Shkeputu", IDM_FILE_DISCONNECT, GRAYED
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Pastro Ekranin", IDM_FILE_CLEARDISPLAY
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Fillo Regjistrimin", IDM_FILE_STARTCAPTURE
|
||||
MENUITEM "N&dalo rregjistrimin", IDM_FILE_STOPCAPTURE, GRAYED
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "&Eko vendase", IDM_FILE_LOCALECHO
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "D&il", IDM_EXIT
|
||||
END
|
||||
POPUP "&Ndihmë"
|
||||
BEGIN
|
||||
MENUITEM "&Rreth ...", IDM_ABOUT
|
||||
END
|
||||
END
|
||||
|
||||
/* Accelerators */
|
||||
IDC_FDEBUG ACCELERATORS
|
||||
BEGIN
|
||||
63, IDM_ABOUT, ASCII, ALT // "?"
|
||||
47, IDM_ABOUT, ASCII, ALT // "/"
|
||||
END
|
||||
|
||||
/* Dialogs */
|
||||
|
||||
IDD_ABOUTBOX DIALOGEX 22, 17, 259, 210
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "About FreeLoader Debugger"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
CONTROL "FreeLoader Debugger v1.0\nCopyright (C) 2003\nby Brian Palmer (brianp@reactos.org)", IDC_STATIC, "Static", SS_LEFTNOWORDWRAP | WS_GROUP, 53, 28, 122, 26
|
||||
DEFPUSHBUTTON "OK", IDOK, 183, 189, 44, 14, WS_GROUP
|
||||
ICON IDI_FDEBUG, IDC_STATIC, 19, 30, 20, 20
|
||||
EDITTEXT IDC_LICENSE_EDIT, 53, 63, 174, 107, ES_MULTILINE | ES_READONLY | WS_VSCROLL
|
||||
END
|
||||
|
||||
IDD_CONNECTION DIALOGEX 0, 0, 196, 100
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Opsione lidhje"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "Indiko një port COM (e.g. COM1):", IDC_STATIC, 7, 7, 108, 8
|
||||
EDITTEXT IDC_COMPORT, 7, 17, 182, 14, ES_AUTOHSCROLL
|
||||
LTEXT "Indiko baud rate (e.g. 115200):", IDC_STATIC, 7, 38, 114, 8
|
||||
EDITTEXT IDC_BAUTRATE, 7, 48, 182, 14, ES_AUTOHSCROLL
|
||||
DEFPUSHBUTTON "OK", IDOK, 45, 79, 50, 14
|
||||
PUSHBUTTON "Anulo", IDCANCEL, 100, 79, 50, 14
|
||||
END
|
||||
|
||||
IDD_CAPTURE DIALOGEX 0, 0, 251, 95
|
||||
STYLE DS_SHELLFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Dokumenti per rretgjistrim"
|
||||
FONT 8, "MS Shell Dlg"
|
||||
BEGIN
|
||||
LTEXT "Emri i dokumentit për kapur:", IDC_STATIC, 7, 17, 62, 8
|
||||
EDITTEXT IDC_CAPTUREFILENAME, 7, 26, 181, 14, ES_AUTOHSCROLL
|
||||
PUSHBUTTON "&Shfleto", IDC_BROWSE, 194, 26, 50, 14
|
||||
DEFPUSHBUTTON "OK", IDOK, 139, 74, 50, 14
|
||||
PUSHBUTTON "Anulo", IDCANCEL, 194, 74, 50, 14
|
||||
END
|
||||
|
||||
/* String Tables */
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_APP_TITLE "fdebug"
|
||||
IDS_HELLO "Hello World!"
|
||||
IDC_FDEBUG "FDEBUG"
|
||||
END
|
||||
|
||||
STRINGTABLE
|
||||
BEGIN
|
||||
IDS_LICENSE "Ky program është software falas; ju mund ta shpërndani dhe / ose modifikoni sipas kushteve të GNU General Public License publikuar nga Free Software Foundation; sipas versionit 2 të Liçencës, ose (sipas opinionit tuaj) çdo versioni të mëvonshëm.\r\n\r\nKy program shpërndahet me shpresën që do t'ju jetë i dobishëm, por PA ASNJË GARANCI; madje edhe pa garancinë e shprehur të TREGTUESHMËRISË ose PËRSHTATJES PËR NJË QËLLIM TË CAKTUAR. Shiko Liçencën Publike të Përgjithshme GNU për më shumë detaje.\r\n\r\nJu duhet të keni marrë një kopje të Liçensës së Përgjithshme Publike GNU së bashku me këtë program; nëse jo, shkruani në Free Software Foundation, Inc, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA."
|
||||
END
|
|
@ -32,6 +32,7 @@ if((ARCH STREQUAL "arm") AND (SARCH STREQUAL "omap-zoom2"))
|
|||
endif()
|
||||
|
||||
list(APPEND FREELDR_COMMON_SOURCE
|
||||
include/freeldr.h
|
||||
cmdline.c
|
||||
debug.c
|
||||
linuxboot.c
|
||||
|
@ -121,7 +122,7 @@ if(ARCH STREQUAL "i386")
|
|||
windows/headless.c
|
||||
disk/scsiport.c)
|
||||
if(NOT MSVC)
|
||||
list(APPEND FREELDR_COMMON_SOURCE arch/i386/drvmap.S)
|
||||
list(APPEND FREELDR_COMMON_ASM_SOURCE arch/i386/drvmap.S)
|
||||
endif()
|
||||
elseif(ARCH STREQUAL "amd64")
|
||||
list(APPEND FREELDR_COMMON_ASM_SOURCE
|
||||
|
@ -152,12 +153,9 @@ else()
|
|||
#TBD
|
||||
endif()
|
||||
|
||||
if(NOT MSVC)
|
||||
add_library(freeldr_common OBJECT ${FREELDR_COMMON_SOURCE} ${FREELDR_COMMON_ASM_SOURCE})
|
||||
else()
|
||||
add_asm_files(freeldr_common_asm ${FREELDR_COMMON_ASM_SOURCE})
|
||||
add_library(freeldr_common ${FREELDR_COMMON_SOURCE} ${freeldr_common_asm})
|
||||
endif()
|
||||
add_asm_files(freeldr_common_asm ${FREELDR_COMMON_ASM_SOURCE})
|
||||
add_library(freeldr_common ${FREELDR_COMMON_SOURCE} ${freeldr_common_asm})
|
||||
add_pch(freeldr_common include/freeldr.h FREELDR_COMMON_SOURCE)
|
||||
add_dependencies(freeldr_common bugcodes)
|
||||
|
||||
if(ARCH STREQUAL "i386" AND NOT MSVC)
|
||||
|
@ -173,24 +171,20 @@ if(NOT MSVC)
|
|||
list(APPEND FREELDR_BASE_SOURCE ${CMAKE_CURRENT_BINARY_DIR}/freeldr.def)
|
||||
endif()
|
||||
|
||||
if(NOT MSVC)
|
||||
add_library(freeldr_pe SHARED $<TARGET_OBJECTS:freeldr_common> ${FREELDR_BASE_SOURCE})
|
||||
add_library(freeldr_pe_dbg SHARED EXCLUDE_FROM_ALL $<TARGET_OBJECTS:freeldr_common> ${FREELDR_BASE_SOURCE})
|
||||
if(SEPARATE_DBG)
|
||||
set_target_properties(freeldr_pe PROPERTIES LINKER_LANGUAGE LDR_PE_HELPER)
|
||||
set_target_properties(freeldr_pe_dbg PROPERTIES LINKER_LANGUAGE LDR_PE_HELPER)
|
||||
endif()
|
||||
else()
|
||||
add_library(freeldr_pe SHARED ${FREELDR_BASE_SOURCE})
|
||||
add_library(freeldr_pe_dbg SHARED EXCLUDE_FROM_ALL ${FREELDR_BASE_SOURCE})
|
||||
add_library(freeldr_pe SHARED ${FREELDR_BASE_SOURCE})
|
||||
add_library(freeldr_pe_dbg SHARED EXCLUDE_FROM_ALL ${FREELDR_BASE_SOURCE})
|
||||
|
||||
if(NOT MSVC AND SEPARATE_DBG)
|
||||
set_target_properties(freeldr_pe PROPERTIES LINKER_LANGUAGE LDR_PE_HELPER)
|
||||
set_target_properties(freeldr_pe_dbg PROPERTIES LINKER_LANGUAGE LDR_PE_HELPER)
|
||||
endif()
|
||||
|
||||
if(NOT MSVC)
|
||||
add_target_link_flags(freeldr_pe "-Wl,--strip-all,--exclude-all-symbols,--file-alignment,0x1000,-T,${CMAKE_CURRENT_SOURCE_DIR}/freeldr_i386.lds")
|
||||
add_target_link_flags(freeldr_pe_dbg "-Wl,--exclude-all-symbols,--file-alignment,0x1000,-T,${CMAKE_CURRENT_SOURCE_DIR}/freeldr_i386.lds")
|
||||
else()
|
||||
if(MSVC)
|
||||
add_target_link_flags(freeldr_pe "/ignore:4078 /ignore:4254 /DRIVER /FIXED /ALIGN:0x400 /SECTION:.text,ERW /SECTION:.data,RW /MERGE:.text16=.text /MERGE:.data=.text /MERGE:.rdata=.text /MERGE:.bss=.text ")
|
||||
add_target_link_flags(freeldr_pe_dbg "/ignore:4078 /ignore:4254 /DRIVER /FIXED /ALIGN:0x400 /SECTION:.text,ERW /SECTION:.data,RW /MERGE:.text16=.text /MERGE:.data=.text /MERGE:.rdata=.text /MERGE:.bss=.text")
|
||||
else()
|
||||
add_target_link_flags(freeldr_pe "-Wl,--strip-all,--exclude-all-symbols,--file-alignment,0x1000,-T,${CMAKE_CURRENT_SOURCE_DIR}/freeldr_i386.lds")
|
||||
add_target_link_flags(freeldr_pe_dbg "-Wl,--exclude-all-symbols,--file-alignment,0x1000,-T,${CMAKE_CURRENT_SOURCE_DIR}/freeldr_i386.lds")
|
||||
endif()
|
||||
|
||||
set_image_base(freeldr_pe 0x10000)
|
||||
|
@ -206,15 +200,8 @@ if(ARCH STREQUAL "i386")
|
|||
target_link_libraries(freeldr_pe_dbg mini_hal)
|
||||
endif()
|
||||
|
||||
if(MSVC)
|
||||
target_link_libraries(freeldr_pe freeldr_common)
|
||||
target_link_libraries(freeldr_pe_dbg freeldr_common)
|
||||
endif()
|
||||
|
||||
target_link_libraries(freeldr_pe cportlib cmlib rtl libcntpr)
|
||||
target_link_libraries(freeldr_pe_dbg cportlib cmlib rtl libcntpr)
|
||||
|
||||
# add_pch(freeldr_pe include/freeldr.h)
|
||||
target_link_libraries(freeldr_pe freeldr_common cportlib cmlib rtl libcntpr)
|
||||
target_link_libraries(freeldr_pe_dbg freeldr_common cportlib cmlib rtl libcntpr)
|
||||
|
||||
add_dependencies(freeldr_pe asm)
|
||||
add_dependencies(freeldr_pe_dbg asm)
|
||||
|
@ -237,24 +224,20 @@ if(ARCH STREQUAL "i386" OR ARCH STREQUAL "amd64")
|
|||
list(APPEND SETUPLDR_SOURCE windows/setupldr.c)
|
||||
endif()
|
||||
|
||||
if(NOT MSVC)
|
||||
add_library(setupldr_pe SHARED $<TARGET_OBJECTS:freeldr_common> ${FREELDR_BASE_SOURCE} ${SETUPLDR_SOURCE})
|
||||
add_library(setupldr_pe_dbg SHARED EXCLUDE_FROM_ALL $<TARGET_OBJECTS:freeldr_common> ${FREELDR_BASE_SOURCE} ${SETUPLDR_SOURCE})
|
||||
if(SEPARATE_DBG)
|
||||
set_target_properties(setupldr_pe PROPERTIES LINKER_LANGUAGE LDR_PE_HELPER)
|
||||
set_target_properties(setupldr_pe_dbg PROPERTIES LINKER_LANGUAGE LDR_PE_HELPER)
|
||||
endif()
|
||||
else()
|
||||
add_library(setupldr_pe SHARED ${FREELDR_BASE_SOURCE} ${SETUPLDR_SOURCE})
|
||||
add_library(setupldr_pe_dbg SHARED EXCLUDE_FROM_ALL ${FREELDR_BASE_SOURCE} ${SETUPLDR_SOURCE})
|
||||
add_library(setupldr_pe SHARED ${FREELDR_BASE_SOURCE} ${SETUPLDR_SOURCE})
|
||||
add_library(setupldr_pe_dbg SHARED EXCLUDE_FROM_ALL ${FREELDR_BASE_SOURCE} ${SETUPLDR_SOURCE})
|
||||
|
||||
if(NOT MSVC AND SEPARATE_DBG)
|
||||
set_target_properties(setupldr_pe PROPERTIES LINKER_LANGUAGE LDR_PE_HELPER)
|
||||
set_target_properties(setupldr_pe_dbg PROPERTIES LINKER_LANGUAGE LDR_PE_HELPER)
|
||||
endif()
|
||||
|
||||
if(NOT MSVC)
|
||||
add_target_link_flags(setupldr_pe "-Wl,--strip-all,--exclude-all-symbols,--file-alignment,0x1000,-T,${CMAKE_CURRENT_SOURCE_DIR}/freeldr_i386.lds")
|
||||
add_target_link_flags(setupldr_pe_dbg "-Wl,--exclude-all-symbols,--file-alignment,0x1000,-T,${CMAKE_CURRENT_SOURCE_DIR}/freeldr_i386.lds")
|
||||
else()
|
||||
if(MSVC)
|
||||
add_target_link_flags(setupldr_pe "/ignore:4078 /ignore:4254 /DRIVER /FIXED /ALIGN:0x400 /SECTION:.text,ERW /SECTION:.data,RW /MERGE:.text16=.text /MERGE:.data=.text /MERGE:.rdata=.text /MERGE:.bss=.text")
|
||||
add_target_link_flags(setupldr_pe_dbg "/ignore:4078 /ignore:4254 /DRIVER /FIXED /ALIGN:0x400 /SECTION:.text,ERW /SECTION:.data,RW /MERGE:.text16=.text /MERGE:.data=.text /MERGE:.rdata=.text /MERGE:.bss=.text")
|
||||
else()
|
||||
add_target_link_flags(setupldr_pe "-Wl,--strip-all,--exclude-all-symbols,--file-alignment,0x1000,-T,${CMAKE_CURRENT_SOURCE_DIR}/freeldr_i386.lds")
|
||||
add_target_link_flags(setupldr_pe_dbg "-Wl,--exclude-all-symbols,--file-alignment,0x1000,-T,${CMAKE_CURRENT_SOURCE_DIR}/freeldr_i386.lds")
|
||||
endif()
|
||||
|
||||
add_target_compile_definitions(setupldr_pe FREELDR_REACTOS_SETUP)
|
||||
|
@ -273,13 +256,8 @@ if(ARCH STREQUAL "i386")
|
|||
target_link_libraries(setupldr_pe_dbg mini_hal)
|
||||
endif()
|
||||
|
||||
if(MSVC)
|
||||
target_link_libraries(setupldr_pe freeldr_common)
|
||||
target_link_libraries(setupldr_pe_dbg freeldr_common)
|
||||
endif()
|
||||
|
||||
target_link_libraries(setupldr_pe cportlib cmlib rtl libcntpr)
|
||||
target_link_libraries(setupldr_pe_dbg cportlib cmlib rtl libcntpr)
|
||||
target_link_libraries(setupldr_pe freeldr_common cportlib cmlib rtl libcntpr)
|
||||
target_link_libraries(setupldr_pe_dbg freeldr_common cportlib cmlib rtl libcntpr)
|
||||
|
||||
add_dependencies(setupldr_pe asm)
|
||||
add_dependencies(setupldr_pe_dbg asm)
|
||||
|
|
|
@ -1,3 +1,6 @@
|
|||
#ifndef _PCBIOS_H_
|
||||
#define _PCBIOS_H_
|
||||
|
||||
#ifndef __ASM__
|
||||
|
||||
typedef enum
|
||||
|
@ -139,3 +142,4 @@ VOID DetectHardware(VOID); // Implemented in hardware.c
|
|||
#define REGS_EFLAGS 36
|
||||
#define REGS_SIZE 40
|
||||
|
||||
#endif /* _PCBIOS_H_ */
|
||||
|
|
|
@ -122,4 +122,4 @@ VOID BootMain(LPSTR CmdLine);
|
|||
VOID LoadOperatingSystem(IN OperatingSystemItem* OperatingSystem);
|
||||
VOID RunLoader(VOID);
|
||||
|
||||
#endif // defined __FREELDR_H
|
||||
#endif /* __FREELDR_H */
|
||||
|
|
|
@ -78,10 +78,12 @@ RegDeleteKey(FRLDRHKEY Key,
|
|||
PCWSTR Name);
|
||||
|
||||
LONG
|
||||
RegEnumKey(FRLDRHKEY Key,
|
||||
ULONG Index,
|
||||
PWCHAR Name,
|
||||
ULONG* NameSize);
|
||||
RegEnumKey(
|
||||
_In_ FRLDRHKEY Key,
|
||||
_In_ ULONG Index,
|
||||
_Out_ PWCHAR Name,
|
||||
_Inout_ ULONG* NameSize,
|
||||
_Out_opt_ FRLDRHKEY *SubKey);
|
||||
|
||||
LONG
|
||||
RegOpenKey(FRLDRHKEY ParentKey,
|
||||
|
|
|
@ -259,13 +259,13 @@ RegpFindSubkeyInIndex(
|
|||
return NULL;
|
||||
}
|
||||
|
||||
// FIXME: optionally return the subkey node/handle as optimization
|
||||
LONG
|
||||
RegEnumKey(
|
||||
_In_ FRLDRHKEY Key,
|
||||
_In_ ULONG Index,
|
||||
_Out_ PWCHAR Name,
|
||||
_Inout_ ULONG* NameSize)
|
||||
_Inout_ ULONG* NameSize,
|
||||
_Out_opt_ FRLDRHKEY *SubKey)
|
||||
{
|
||||
PHHIVE Hive = &CmHive->Hive;
|
||||
PCM_KEY_NODE KeyNode, SubKeyNode;
|
||||
|
@ -305,6 +305,11 @@ RegEnumKey(
|
|||
|
||||
*NameSize = CmCopyKeyName(SubKeyNode, Name, *NameSize);
|
||||
|
||||
if (SubKey != NULL)
|
||||
{
|
||||
*SubKey = (FRLDRHKEY)SubKeyNode;
|
||||
}
|
||||
|
||||
TRACE("RegEnumKey done -> %u, '%.*s'\n", *NameSize, *NameSize, Name);
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
|
|
@ -537,7 +537,7 @@ WinLdrScanRegistry(IN OUT PLIST_ENTRY BootDriverListHead,
|
|||
{
|
||||
/* Get the Driver's Name */
|
||||
ValueSize = sizeof(ServiceName);
|
||||
rc = RegEnumKey(hServiceKey, Index, ServiceName, &ValueSize);
|
||||
rc = RegEnumKey(hServiceKey, Index, ServiceName, &ValueSize, &hDriverKey);
|
||||
TRACE("RegEnumKey(): rc %d\n", (int)rc);
|
||||
|
||||
/* Make sure it's valid, and check if we're done */
|
||||
|
@ -550,89 +550,6 @@ WinLdrScanRegistry(IN OUT PLIST_ENTRY BootDriverListHead,
|
|||
}
|
||||
//TRACE_CH(REACTOS, "Service %d: '%S'\n", (int)Index, ServiceName);
|
||||
|
||||
/* open driver Key */
|
||||
rc = RegOpenKey(hServiceKey, ServiceName, &hDriverKey);
|
||||
if (rc == ERROR_SUCCESS)
|
||||
{
|
||||
/* Read the Start Value */
|
||||
ValueSize = sizeof(ULONG);
|
||||
rc = RegQueryValue(hDriverKey, L"Start", &ValueType, (PUCHAR)&StartValue, &ValueSize);
|
||||
if (rc != ERROR_SUCCESS) StartValue = (ULONG)-1;
|
||||
//TRACE_CH(REACTOS, " Start: %x \n", (int)StartValue);
|
||||
|
||||
/* Read the Tag */
|
||||
ValueSize = sizeof(ULONG);
|
||||
rc = RegQueryValue(hDriverKey, L"Tag", &ValueType, (PUCHAR)&TagValue, &ValueSize);
|
||||
if (rc != ERROR_SUCCESS) TagValue = (ULONG)-1;
|
||||
//TRACE_CH(REACTOS, " Tag: %x \n", (int)TagValue);
|
||||
|
||||
/* Read the driver's group */
|
||||
DriverGroupSize = sizeof(DriverGroup);
|
||||
rc = RegQueryValue(hDriverKey, L"Group", NULL, (PUCHAR)DriverGroup, &DriverGroupSize);
|
||||
//TRACE_CH(REACTOS, " Group: '%S' \n", DriverGroup);
|
||||
|
||||
/* Make sure it should be started */
|
||||
if ((StartValue == 0) &&
|
||||
(TagValue == OrderList[TagIndex]) &&
|
||||
(_wcsicmp(DriverGroup, GroupName) == 0)) {
|
||||
|
||||
/* Get the Driver's Location */
|
||||
ValueSize = sizeof(TempImagePath);
|
||||
rc = RegQueryValue(hDriverKey, L"ImagePath", NULL, (PUCHAR)TempImagePath, &ValueSize);
|
||||
|
||||
/* Write the whole path if it suceeded, else prepare to fail */
|
||||
if (rc != ERROR_SUCCESS) {
|
||||
TRACE_CH(REACTOS, "ImagePath: not found\n");
|
||||
TempImagePath[0] = 0;
|
||||
sprintf(ImagePath, "%s\\system32\\drivers\\%S.sys", DirectoryPath, ServiceName);
|
||||
} else if (TempImagePath[0] != L'\\') {
|
||||
sprintf(ImagePath, "%s%S", DirectoryPath, TempImagePath);
|
||||
} else {
|
||||
sprintf(ImagePath, "%S", TempImagePath);
|
||||
TRACE_CH(REACTOS, "ImagePath: '%s'\n", ImagePath);
|
||||
}
|
||||
|
||||
TRACE("Adding boot driver: '%s'\n", ImagePath);
|
||||
|
||||
Status = WinLdrAddDriverToList(BootDriverListHead,
|
||||
L"\\Registry\\Machine\\System\\CurrentControlSet\\Services\\",
|
||||
TempImagePath,
|
||||
ServiceName);
|
||||
|
||||
if (!Status)
|
||||
ERR("Failed to add boot driver\n");
|
||||
} else
|
||||
{
|
||||
//TRACE(" Skipping driver '%S' with Start %d, Tag %d and Group '%S' (Current Tag %d, current group '%S')\n",
|
||||
// ServiceName, StartValue, TagValue, DriverGroup, OrderList[TagIndex], GroupName);
|
||||
}
|
||||
}
|
||||
|
||||
Index++;
|
||||
}
|
||||
}
|
||||
|
||||
Index = 0;
|
||||
while (TRUE)
|
||||
{
|
||||
/* Get the Driver's Name */
|
||||
ValueSize = sizeof(ServiceName);
|
||||
rc = RegEnumKey(hServiceKey, Index, ServiceName, &ValueSize);
|
||||
|
||||
//TRACE_CH(REACTOS, "RegEnumKey(): rc %d\n", (int)rc);
|
||||
if (rc == ERROR_NO_MORE_ITEMS)
|
||||
break;
|
||||
if (rc != ERROR_SUCCESS)
|
||||
{
|
||||
FrLdrHeapFree(GroupNameBuffer, TAG_WLDR_NAME);
|
||||
return;
|
||||
}
|
||||
TRACE("Service %d: '%S'\n", (int)Index, ServiceName);
|
||||
|
||||
/* open driver Key */
|
||||
rc = RegOpenKey(hServiceKey, ServiceName, &hDriverKey);
|
||||
if (rc == ERROR_SUCCESS)
|
||||
{
|
||||
/* Read the Start Value */
|
||||
ValueSize = sizeof(ULONG);
|
||||
rc = RegQueryValue(hDriverKey, L"Start", &ValueType, (PUCHAR)&StartValue, &ValueSize);
|
||||
|
@ -650,27 +567,28 @@ WinLdrScanRegistry(IN OUT PLIST_ENTRY BootDriverListHead,
|
|||
rc = RegQueryValue(hDriverKey, L"Group", NULL, (PUCHAR)DriverGroup, &DriverGroupSize);
|
||||
//TRACE_CH(REACTOS, " Group: '%S' \n", DriverGroup);
|
||||
|
||||
for (TagIndex = 1; TagIndex <= OrderList[0]; TagIndex++) {
|
||||
if (TagValue == OrderList[TagIndex]) break;
|
||||
}
|
||||
|
||||
/* Make sure it should be started */
|
||||
if ((StartValue == 0) &&
|
||||
(TagIndex > OrderList[0]) &&
|
||||
(TagValue == OrderList[TagIndex]) &&
|
||||
(_wcsicmp(DriverGroup, GroupName) == 0)) {
|
||||
|
||||
/* Get the Driver's Location */
|
||||
ValueSize = sizeof(TempImagePath);
|
||||
rc = RegQueryValue(hDriverKey, L"ImagePath", NULL, (PUCHAR)TempImagePath, &ValueSize);
|
||||
|
||||
/* Write the whole path if it suceeded, else prepare to fail */
|
||||
if (rc != ERROR_SUCCESS) {
|
||||
TRACE_CH(REACTOS, "ImagePath: not found\n");
|
||||
TempImagePath[0] = 0;
|
||||
sprintf(ImagePath, "%ssystem32\\drivers\\%S.sys", DirectoryPath, ServiceName);
|
||||
sprintf(ImagePath, "%s\\system32\\drivers\\%S.sys", DirectoryPath, ServiceName);
|
||||
} else if (TempImagePath[0] != L'\\') {
|
||||
sprintf(ImagePath, "%s%S", DirectoryPath, TempImagePath);
|
||||
} else {
|
||||
sprintf(ImagePath, "%S", TempImagePath);
|
||||
TRACE_CH(REACTOS, "ImagePath: '%s'\n", ImagePath);
|
||||
}
|
||||
TRACE(" Adding boot driver: '%s'\n", ImagePath);
|
||||
|
||||
TRACE("Adding boot driver: '%s'\n", ImagePath);
|
||||
|
||||
Status = WinLdrAddDriverToList(BootDriverListHead,
|
||||
L"\\Registry\\Machine\\System\\CurrentControlSet\\Services\\",
|
||||
|
@ -678,12 +596,86 @@ WinLdrScanRegistry(IN OUT PLIST_ENTRY BootDriverListHead,
|
|||
ServiceName);
|
||||
|
||||
if (!Status)
|
||||
ERR(" Failed to add boot driver\n");
|
||||
} else
|
||||
{
|
||||
//TRACE(" Skipping driver '%S' with Start %d, Tag %d and Group '%S' (Current group '%S')\n",
|
||||
// ServiceName, StartValue, TagValue, DriverGroup, GroupName);
|
||||
ERR("Failed to add boot driver\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
//TRACE(" Skipping driver '%S' with Start %d, Tag %d and Group '%S' (Current Tag %d, current group '%S')\n",
|
||||
// ServiceName, StartValue, TagValue, DriverGroup, OrderList[TagIndex], GroupName);
|
||||
}
|
||||
|
||||
Index++;
|
||||
}
|
||||
}
|
||||
|
||||
Index = 0;
|
||||
while (TRUE)
|
||||
{
|
||||
/* Get the Driver's Name */
|
||||
ValueSize = sizeof(ServiceName);
|
||||
rc = RegEnumKey(hServiceKey, Index, ServiceName, &ValueSize, &hDriverKey);
|
||||
|
||||
//TRACE_CH(REACTOS, "RegEnumKey(): rc %d\n", (int)rc);
|
||||
if (rc == ERROR_NO_MORE_ITEMS)
|
||||
break;
|
||||
if (rc != ERROR_SUCCESS)
|
||||
{
|
||||
FrLdrHeapFree(GroupNameBuffer, TAG_WLDR_NAME);
|
||||
return;
|
||||
}
|
||||
TRACE("Service %d: '%S'\n", (int)Index, ServiceName);
|
||||
|
||||
/* Read the Start Value */
|
||||
ValueSize = sizeof(ULONG);
|
||||
rc = RegQueryValue(hDriverKey, L"Start", &ValueType, (PUCHAR)&StartValue, &ValueSize);
|
||||
if (rc != ERROR_SUCCESS) StartValue = (ULONG)-1;
|
||||
//TRACE_CH(REACTOS, " Start: %x \n", (int)StartValue);
|
||||
|
||||
/* Read the Tag */
|
||||
ValueSize = sizeof(ULONG);
|
||||
rc = RegQueryValue(hDriverKey, L"Tag", &ValueType, (PUCHAR)&TagValue, &ValueSize);
|
||||
if (rc != ERROR_SUCCESS) TagValue = (ULONG)-1;
|
||||
//TRACE_CH(REACTOS, " Tag: %x \n", (int)TagValue);
|
||||
|
||||
/* Read the driver's group */
|
||||
DriverGroupSize = sizeof(DriverGroup);
|
||||
rc = RegQueryValue(hDriverKey, L"Group", NULL, (PUCHAR)DriverGroup, &DriverGroupSize);
|
||||
//TRACE_CH(REACTOS, " Group: '%S' \n", DriverGroup);
|
||||
|
||||
for (TagIndex = 1; TagIndex <= OrderList[0]; TagIndex++) {
|
||||
if (TagValue == OrderList[TagIndex]) break;
|
||||
}
|
||||
|
||||
if ((StartValue == 0) &&
|
||||
(TagIndex > OrderList[0]) &&
|
||||
(_wcsicmp(DriverGroup, GroupName) == 0)) {
|
||||
|
||||
ValueSize = sizeof(TempImagePath);
|
||||
rc = RegQueryValue(hDriverKey, L"ImagePath", NULL, (PUCHAR)TempImagePath, &ValueSize);
|
||||
if (rc != ERROR_SUCCESS) {
|
||||
TRACE_CH(REACTOS, "ImagePath: not found\n");
|
||||
TempImagePath[0] = 0;
|
||||
sprintf(ImagePath, "%ssystem32\\drivers\\%S.sys", DirectoryPath, ServiceName);
|
||||
} else if (TempImagePath[0] != L'\\') {
|
||||
sprintf(ImagePath, "%s%S", DirectoryPath, TempImagePath);
|
||||
} else {
|
||||
sprintf(ImagePath, "%S", TempImagePath);
|
||||
TRACE_CH(REACTOS, "ImagePath: '%s'\n", ImagePath);
|
||||
}
|
||||
TRACE(" Adding boot driver: '%s'\n", ImagePath);
|
||||
|
||||
Status = WinLdrAddDriverToList(BootDriverListHead,
|
||||
L"\\Registry\\Machine\\System\\CurrentControlSet\\Services\\",
|
||||
TempImagePath,
|
||||
ServiceName);
|
||||
|
||||
if (!Status)
|
||||
ERR(" Failed to add boot driver\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
//TRACE(" Skipping driver '%S' with Start %d, Tag %d and Group '%S' (Current group '%S')\n",
|
||||
// ServiceName, StartValue, TagValue, DriverGroup, GroupName);
|
||||
}
|
||||
|
||||
Index++;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue