• last updated 55 mins ago
Constraints: committers
Constraints: files
Constraints: dates

- Do not change RTL_HANDLE_TABLE::CommittedHandles when committing a new page of handle entries. This value must always point to the beginning of the allocation, to correctly track the entire committed range. Fixes LibreOffice Writer (and ntdll_apitest) crash.

CORE-13271 #resolve


- Add a test for RTL handle tables


    • -0
    • +201
    • -0
    • +2
[SCSIPORT]: Fixes:

- In SpiScanAdapter(), after an SCSI INQUIRY command has succeeded and we are setting up a LUN extension structure,

cache in its InquiryData member the inquiry data retrieved from the INQUIRY command (alternatively we might just cache

a pointer to a valid "LunInfo" since the latter are also cached elsewhere).

- This allows SpiBuildDeviceMap(), which is called just after SpiScanAdapter(), to correctly report in the registry SCSI tree

the correct Identifier and DeviceType values for the enumerated logical units.

- Use ExFreePoolWithTag in SpiScanAdapter().

[SCSIPORT]: Code formatting only.
[SCSIPORT]: Fixes + documentation:

- In SpiSendInquiry():

* use ExFreePoolWithTag;

* if IoBuildDeviceIoControlRequest() fails, exit correctly the loop so that the allocated buffers are cleaned up;

- In SpiBuildDeviceMap():

* support new peripheral type names, as documented in the links in the comments;

* fix the "CommunicationsPeripheral" name (communication'S') as documented, and as done in windows' scsiport driver.

[SCSIPORT]: Code formatting in the functions I'm going to touch next (in addition, add few "continue;" inside some loops so that I can reduce the indent level of code blocks).
[UXTHEME] -Use and RTL handle table for HTHEME handles. In this way we can ensure that a value we take is valid even if it is non NULL. We can also detect leaks.
    • -8
    • +18
    • -14
    • +12
    • -26
    • +41
    • -13
    • +91
    • -0
    • +12
[UXTHEME] Greatly reduce the number of times we open the theme data for the non client area.

- Implement OTD_NONCLIENT for OpenThemeDataEx and OpenThemeDataFromFile.

- Open the WINDOW or the SCROLLBAR theme classes only when needed. Use OpenThemeDataEx instead of the internal MSSTYLES_OpenThemeClass. Cache the open theme in the WND_DATA for later use.

    • -5
    • +5
    • -4
    • +4
    • -5
    • +68
Forgot to add the cmake changes

- Add a rather messy header that I've been slowly building as I'm starting to understand the internals.

- Mostly taken from the MS PDBs and info gained from OSR and Alex Carp's blog. (https://fsfilters.blogspot.co.uk)

    • -0
    • +284

- Implement FltCreateCommunicationPort, FltCloseCommunicationPort, FltCloseClientPort, and stub FltSendMessage

- Add two new object types for the server port and client ports

- Implement object type callbacks for closing and deleting these new ports

- Create the comms object and create the symbolic link (FltMgrMsg) to allow usermode to open a handle to the comms layer (aka FilterConnectCommunicationPort)

- Although untested, the comms layer objects should be mostly setup, and we should be able to open a connection from usermode.

    • -0
    • +373

- Implement FltAcquirePushLockExclusive, FltAcquirePushLockShared and FltReleasePushLock. Lifted from ntos' internal pushlock routines.

- Implement FltpObjectPointerReference and partially implement FltpObjectPointerDerference

    • -0
    • +113
[UXTHEME] -Rename WND_CONTEXT to WND_DATA to avoid confusion with the DRAW_CONTEXT. The WND_DATA is information valid throughout the life of a window and DRAW_CONTEXT is information throughout a draw operation in the non client area of the window.
    • -66
    • +66
    • -21
    • +21
    • -45
    • +45

- Add the missing IOCTLs that were added to fltlib

    • -15
    • +43
[NTOS]: Use the correct access rights for ZwOpenDirectoryObject call.
    • -1
    • +1
[NTOS]: Close an opened handle after usage.
    • -1
    • +4

- Implement FilterConnectCommunicationPort

- Add the remaining IOCTLs fltlib sends to the fltmgr

    • -0
    • +6
    • -0
    • +2
    • -0
    • +180
    • -71
    • +0
    • -1
    • +13

- Add custom draw function for the codepages listview.

- User gray text color for codepages that cannot be uninstalled.


    • -6
    • +60

- Guard Ke386CallBios calls against concurrent execution.


[UXTHEME] -Remove a debug print that was never meant to be committed.
    • -2
    • +0
[UXTHEME] -Apply some suggestions by Thomas.
    • -3
    • +3
[MSTSC] Addendum to r74577. CORE-13263
[MSTSC] Fix BSOD when we can't acquire context from CryptoAPI. CORE-13263 #resolve
[USETUP]: Implement most of the "upgrade" page (where existing NTOS installations are listed).

- Modify a bit the page flow so that the upgrade page is inserted before the Device-settings page, and after the Install-Intro page.

- Insert some extra 'RepairUpdateFlag' checks in SelectPartitionPage() and InstallDirectoryPage() to take specific actions in case the flag is TRUE.

- As overviewed in r74573, move 'TempPartition' and 'FormatState' back to USETUP.

    • -0
    • +15
[USETUP]: Massage the USETUP interface code:

- The "intro" page is renamed into the "Welcome" page, because its corresponding resource indeed is the welcome screen;

- Because the "setup start" page can only be displayed once, move it out of the while-loop, and use its result as the initial value of the 'Page' variable.

- Remove unneeded _PAGE_NUMBER_DEFINED guards;

- Add a DPRINT in the RepairUpdateFlag case of RegistryPage() (because we don't implement yet a correct upgrading or repairing of the registry.

- Use the previously-introduced 'PreparePartitionForFormatting()' function; set the FormatState of the newly-formatted partition to Formatted.

- In InstallIntroPage(), display the page itself only if needed (i.e. after all the validation checks & repair/update or unattended checks are done). Similar modifications are done also in DeviceSettingsPage(), SelectPartitionPage()

- Remove the hackish call to CreateFileSystemList() in SelectFileSystemPage().

- Turn both CheckUnattendedSetup() and UpdateKBLayout() into static functions.

- Put large "case"-blocks into brackets.

- Fix the code of ScsiControllerPage() so that it can be compiled if needed, and add a dummy OemDriverPage().

[USETUP]: Fix some spacings in the french translation.
[USETUP]: Consolidate the PartList module of the setuplib.

- The 'FORMATMACHINESTATE FormatState' machine-state and the 'TempPartition' members of the partition list structure is purely a USETUP convenience, so remove them from the PARTLIST structure and move them back into USETUP.

- Attempt to recognize the filesystem (set the 'FileSystem' member of PARTENTRY) of partitions we are adding into the PARTLIST list.

- Fix the return value of the SelectPartition function, which is by the way completely broken (it doesn't do what it is supposed to do; alternatively its naming is completely wrong...).

[USETUP]: Consolidate the FsUtil module of the setuplib.

- Add a PreparePartitionForFormatting routine that sets the partition ID depending on the chosen filesystem.


- Avoid uninitialized ComputeHash variable in BlImgLoadImageWithProgress2

CORE-13265 #resolve

[USETUP]: Introduce "setuplib".

- Add a "setuplib" library (not yet complete), whose aim is to be shared between the (currently existing) 1st-stage text-mode installer, and the (future) 1st-stage GUI installer.

- Finish to split the GenList and PartList codes into their UI part, which remain in usetup, and their algorithmic part, which go into setuplib.

- Move SetMountedDeviceValue into the PartList module.

- Split the FileSystem list code into its UI and the algorithmic part (which goes into setuplib under the name fsutil.c).

* The algo part is meant to be able to manage the filesystems available on the running system, similarly to what is mostly done (in scattered form) in fmifs, format, chkdsk / autochk codes...

It also manages the partition filesystem recognition, using OS routines.

* The UI part manages the FS list as it appears on screen, showing only the possible FSes that can be used to format the selected partition (a bit similar to what we do in the shell32's drive.c, etc...).

- Adapt the calling code to these changes.

- Remove some "host" code that was dating back from the dark old times.

    • -0
    • +18
    • -0
    • +10
  1. /branches/setup_improvements/base/setup/lib
    • -0
    • +36
    • -0
    • +35
  2. … 16 more files in changeset.