- Include the Lautus visual style by Pisarz (as a blob for now), and enable it by default
svn path=/branches/ros-branch-0_3_14-clt2012/; revision=56136
- Adjust the CD root readme.txt for CLT
- Add CD options to welcome.exe
- Taken from previous years, see r51078, r46065
svn path=/branches/ros-branch-0_3_14-clt2012/; revision=56100
- Dereference the correct device object (the one who asked for shutdown notification) instead of whatever happens to be on the top of the device stack
- Fix flag issues
svn path=/trunk/; revision=56087
* unify spec2def and add_importlib_target
* use module name instead of spec file name for deciding importlib target name
svn path=/trunk/; revision=56081
- Improve drive properties dialog. Patch by Edijs Kolesnikovičs <terminedijs at yahoo dot com>
See issue #6833 for more details.
svn path=/trunk/; revision=56075
- Improve file properties dialog. Patch by Edijs Kolesnikovičs <terminedijs at yahoo dot com>
See issue #6829 for more details.
svn path=/trunk/; revision=56074
- When using output rect clipping results in input rect, scale them to input rect size. Fixes gdiplus:graphics winetest crash.
svn path=/trunk/; revision=56072
- Fix the unload path
- This does expose some bugs: 2 cont-able assertions in ARM3 after unplugging a USB storage device (during usbstor unload), HID unload doesn't seem to work correctly (somebody still has references to the devices), other issues may pop up too
svn path=/trunk/; revision=56069
- Fix several driver object reference leaks
- Fix a kmtest regarding previously loaded drivers
- Part 1 of getting PnP driver unload to work properly
svn path=/trunk/; revision=56063
- Fix the way we undefined IoCallDriver and IoCompleteRequest so existing and future code in irp.c will use the correct function when using the Io* versions.
Part 1 of 2.
svn path=/trunk/; revision=56060
- Assert that the PFN lock is held during MmReferencePage
- Assert that the PFN lock is not held during MmFreeMemoryArea
svn path=/trunk/; revision=56052
- Fix incorrect placement of the PDE freeing code which caused a deadlock to occur if a low memory condition was indicated by ARM3
svn path=/trunk/; revision=56050
Part 1: Page Fault Path Fixes
[NTOS]: As an optimization, someone seems to have had changed the MiResolveDemandZeroFault prototype not to require a PTE, and to instead take a protection mask directly. While clever, this broke support for ARM3 sections, because the code was now assuming that the protection of the PTE for the input address should be used -- while in NT Sections we instead use what are called ProtoType PTEs. This was very annoying to debug, but since the cause has been fixed, I've reverted back to the old convention in which the PTE is passed-in, and this can be a different PTE than the PTE for the address, as it should be.
[NTOS]: Due to the reverting of the original path, another optimization, in which MiResolveDemandZeroFault was being called directly instead of going through MiDispatchFault and writing an invalid demand-zero PDE has also been removed. PDE faults are now going through the correct, expected path.
[NTOS]: MiResolveDemandZeroFault was always creating Kernel PTEs. It should create User PTEs when necessary.
[NTOS]: MiDeletePte was assuming any prototype PTE is a forked PTE. Forked PTEs only happen when the addresses in the PTE don't match, so check for that too.
Part 2: ARM3 Section Object Fixes
[NTOS]: Fix issue when trying to make both ROS_SECTION_OBJECTs and NT's SECTION co-exist. We relied on the *caller* knowing what kind of section this is, and that can't be a good idea. Now, when the caller requests an ARM3 section vs a ROS section, we use a marker to detect what kind of section this is for later APIs.
[NTOS]: For section VADs, we were storing the ReactOS MEMORY_AREA in the ControlArea... however, the mappings of one individual section object share a single control area, even though they have multiple MEMORY_AREAs (one for each mapping). As such, we overwrote the MEMORY_AREA continously, and at free-time, double or triple-freed the same memory area.
[NTOS]: Moved the MEMORY_AREA to the "Banked" field of the long VAD, instead of the ControlArea. Allocate MMVAD_LONGs for ARM3 sections for now, to support this. Also, after deleting the MEMORY_AREA while parsing VADs, we now use a special marker to detect double-frees, and we also use a special marker to make sure we have a Long VAD as expected.
svn path=/trunk/; revision=56035
- Give freeldr its own RtlAssert to avoid linking to the one in rtl. Makes it possible to use the DbgPrompt version (currently #if 0-ed) of RtlAssert in ntdll/ntos without breaking freeldr linking.
svn path=/trunk/; revision=56028
Fix my lock implementation to a degree.
- Have a single list associated with the CSQ.
- Remove some confusion from when the lock information was a
generic table.
- Make the compare function not be confused by attempts to
give strange offsets and lengths.
- Make the uninitialize function complete all lock requests
as specified.
- Remove my unneeded attempt to shoehorn in an eresource.
svn path=/trunk/; revision=56026
Fix paging out.
- We know we're in a wait entry in the section. What we really want to know
is if it's safe to evict this address space when withdrawing the mappings.
- We don't want to corrupt our wait entry in the section page table to keep
accumulating dirty state into the page out process until it's time to finally
evict.
svn path=/trunk/; revision=56024
- Add more items to taskbar popup menu. Patch by Edijs Kolesnikovičs <terminedijs at yahoo dot com>
See issue #6242 for more details.
svn path=/trunk/; revision=56017
- Fix a major bug in the failure path of IoCreateDevice that would cause corruption of kernel memory if IopCreateVpb failed
svn path=/trunk/; revision=56014
- Fix folder properties dialog. Patch by Edijs Kolesnikovičs <terminedijs at yahoo dot com>
See issue #6832 for more details.
svn path=/trunk/; revision=56013
- Improve shortcut properties dialog. Patch by Edijs Kolesnikovičs <terminedijs at yahoo dot com>
See issue #6848 for more details.
svn path=/trunk/; revision=56011
- Using a dead stack lookaside list for up to 5 dead kernel thread stacks. 1500% improvement when rapidly destroying/creating threads, such as during second stage setup and many winetests.
- Using a free pool page lookaside list for up to 12 free non-paged or paged pool pages. 800% improvement when allocating big pages from the pool, as well as during pool expansion.
- Using a bucketized per-processor and local list (in the KPRCB) for block sizes between 1 and 32 bytes. 1000% improvement when rapidly allocating/freeing small pool allocations, and 8x reduction in pool fragmentation.
svn path=/trunk/; revision=56000
- Fix a possible integer overflow in NtGdiCreateBitmap
- Don't cast length of LARGE_STRING (ULONG) to USHORT, instead truncate to MAXUSHORT. This is still hacky, but better than before.
- Fix MSVC warnings
svn path=/trunk/; revision=55993
- Fix bug while scanning endpoint descriptors
- Do not assume interface info has the correct number of pipes set
- Fix alternate interface handling
- Tested in VBox + USB Audio Device
svn path=/trunk/; revision=55992
[NTOS]: The fix above was due to fixing "EndingAddress" which was being initialized to zero too late (after writing to it!). This caused allocations with a fixed base address that were already on top of another allocation not to be seen as a conflict, then we tried inserting a VAD and received an ASSERT saying we've already found a VAD there. After fixing the sizing code, the bug above creeped up.
Whoever wrote the NtFreeVirtualMemory test is a godsend. It has been nailing bug after bug in the VAD implementation. Thank you.
svn path=/trunk/; revision=55990
- Back by popular demand, the storage driver to end all storage drivers, uniata!
- I had forgotten how many issues atapi had itself and the hardware compatibility improvement (if there was one) was offset by lack of features
svn path=/trunk/; revision=55978
Hoping this will work on other configurations other than just my test virtual machine. If so, it is a big day in Mm history. Only sections and cache still use the old Mm functionality. I -will- revert this if all hell breaks loose.
svn path=/trunk/; revision=55977
- Implement support for getting string descriptors (may need more work)
- USB mass storage devices which are part of a composite device now initialize
svn path=/trunk/; revision=55976
When IoReportDetectedDevice() creates a PDO, the PDO is in no way related to the DriverObject given to the function.
Driver calling IoReportDetectedDevice() should then ensure that it attachs a FDO on top of this PDO.
svn path=/trunk/; revision=55972
- Don't assert that the clear stall will complete successfully since it may be sent for a removal
- Fixes removal surprise removal of HID devices
svn path=/trunk/; revision=55971
- Rewrite broken USBD_CreateConfigurationRequestEx
- It did not calculate the required urb size correctly
- It did not store the correct number of provided interfaces
- Length of each interface information was wrong
svn path=/trunk/; revision=55965
- Experimental change to try to increase real hardware compatibility
- Load both atapi and uniata and allow atapi to have priority and uniata will pick up devices that atapi doesn't like
- Fix a bug in uniata enumeration
svn path=/trunk/; revision=55958
-it looks like IF(${CMAKE_SYSTEM_NAME} MATCHES "Windows") return TRUE on MacOS/Linux when cross compiling
-file(TO_NATIVE_PATH) is broken as well
...
next try
svn path=/trunk/; revision=55954
- Implement enabling extended debug output in freeldr without the need to recompile it. Add an option in the f8 menu that allows the user to specify which debug channels and levels will be enabled.
svn path=/trunk/; revision=55946
- Split retrieving the full configuration descriptor into 2 steps
- Fixes errors while initializing usb devices on UHCI controller
- Tested in VmWare / VBox and real hardware
svn path=/trunk/; revision=55942
1) Assert on empty kernel PTE instead of handling it as a bugcheck. Windows ASSERTs too. Also clarify some ASSERTs which Windows also does versus ASSERTs we are only doing due to lack of support for said feature.
2) User page fault path can now distinguish between a user-mode PTE fault, and a kernel-mode fault on a user PDE, both by creating a correct kernel PDE when needed instead of always creating user PTEs, as well as by only touching the UsedPageTableEntry reference counting mechanism when a user-address is in play.
3) Related to #2, also recognize when the faulting PTE is actually a PDE in the self-mapping region -- another scenario when the "user fault" is actually a kernel fault for a user PDE.
4) Add one more path where a Paged Pool PDE fixup can save the day instead of always faulting.
5) Finally, related to #2 and #3, handle the MI_IS_PAGE_TABLE_OR_HYPER_ADDRESS scenario for a User PDE by treating it as a user fault. The code looks deceptively similar but there are slight differences which require the separate codepaths with some duplicated code. The magic is in the ordering.
In trunk, these changes should not cause any regressions (let's hope so). On the internal VAD-based Virtual Memory branch, they now allow booting to 3rd stage and a fully usable ReactOS environment. MEMORY_AREA_VIRTUAL_MEMORY is gone on that branch. It's coming.
[NTOS]: Use PAGE_READWRITE as hardcoded protection instead of PAGE_EXECUTE_READWRITE -- the difference is meaningless on ReactOS Mm but actually causes issues on ARM3 with VADs.
svn path=/trunk/; revision=55938
- Add a missing device node flag to legacy reported devices to avoid an assertion failure during installation
- The fact that this was exposed by a change in device node linking order terrifies me
svn path=/trunk/; revision=55926
- assert PDE ref count consistency everywhere
- fix the fix(tm) : after reference decrement, the maximum must not be reached
svn path=/trunk/; revision=55925
- Clean up code, fix memory leaks, check returns codes, add asserts
- Use root device handle which is is prerequisite for usb hub support
[USBLIB]
- Fix root hub handle checks
- Add more code for hub support
svn path=/trunk/; revision=55923
- Fix linking of device children to respect the enumeration order instead of linking in reverse enumeration order
- PCI cards (and other devices) now enumerate in the correct order
svn path=/trunk/; revision=55912
- Don't modify PCI configuration in AddDevice function
[USBEHCI]
- Don't halt the controller while the BIOS still has control of it
svn path=/trunk/; revision=55910
- Change MmDereferencePage to MmReleasePageMemoryConsumer to do proper page usage tracking
- Remove an unnecessary reference and dereference
svn path=/trunk/; revision=55897
- Fix formatting FAT or NTFS volumes into EXT2 by defining ZAP_BOOTBLOCK and fixing a bug in zap_sector()
[USETUP]
- Enable ext2 as an option in setup
- Formatting and building file copy list works but setup stalls shortly after starting to copy files (NewCC on)
svn path=/trunk/; revision=55896
- Fix several locking issues to better fit with RosMm
- Page out is critical as we use it now (shutdown) so force address space locking
- Fix an address space lock leak for VM regions
- Quiet some debugging and enable/change some other
- Still some lingering issues in page out exist which seem to be related to zefklop's PDE ref counting stuff and a weird one where we fault on the PFN database
- Besides the aforementioned issues, NewCC is surprisingly solid. I was able to boot to 3rd stage without a problem and run some apps.
svn path=/trunk/; revision=55895
1) MiCheckVirtualAddress should be called *after* determining if the PTE is a Demand Zero PTE. This is because when memory is allocated with MEM_RESERVE, and then MEM_COMMIT is called later, the VAD does not have the MemCommit flag set to TRUE. As such, MiCheckVirtualAddress returns MM_NOACCESS for the VAD (even though one is found) and the demand zero fault results in an access violation. Double-checked with Windows and this is the right behavior.
2) MiCheckVirtualAddress now supports non-commited reserve VADs (ie: trying to access MEM_RESERVE memory). It used to ASSERT, now it returns MM_NOACCESS so an access violation is raised. Before change #1, this would also happen if MEM_COMMIT was later performed on the ranges, but this is now fixed.
3) When calling MiResolveDemandZeroFault, we should not make the PDE a demand zero PDE. This is senseless. The whole point is that the PDE does exist, and MiInitializePfn needs it to keep track of the page table allocation. Removed the nonsensical line of code which performed cleard the PDE during a demand-zero fault.
I am able to boot to 3rd stage with these changes, so I have seen no regressions. Additionally, with these changes, the as-of-yet-uncommitted VAD-based Virtual Memory code completes 1st stage setup successfully, instead of instantly crashing on boot.
svn path=/trunk/; revision=55894
* The default build will continue to include all the localizations, but you can set it otherwise through a cmake variable (I18N_LANG) at configure time.
* Brought to you by Team Localization (Kamil Hornicek and Amine Khaldi) ;)
svn path=/trunk/; revision=55891
Disable tests that would hit asserts due to current work on VM. Requested functionality is missing and will be for some time.
svn path=/trunk/; revision=55888
[NTOS]: Do a more stringent check to refuse COPY_ON_WRITE flag sent through NtAllocateVirtualMemory.
[NTOS]: For VM-based Memory Areas, acquire and then release the process working set lock while inserting the VAD, to simulate what the VAD-based Virtual Memory behavior will look like.
[NTOS]: Disable paging for VM-based Memory Areas since this will not be supported with VADs.
[KERNEL32]: CopyLoop was requesting 2 zero bits when calling NtAllocateVirtualMemory. Not sure if this was really the intent or not, but both the new as well as the old NtAllocateVirtualMemory do not support this (the new one will ASSERT). Since this functionality never worked, request 0 bits instead to avoid hitting the ASSERT.
Any problems with what the VAD system will introduce should be revealed by now. From this build until the one which will have the VAD-based system in place, no further VM-related issues should crop up.
svn path=/trunk/; revision=55885
[NTOS]: Implement counters for paged and nonpaged pool. First-stage setup now shows Kernel Pool values again, as does Task Manager. Fixes the regression introduced when pool/non-paged pool was no longer managed through "memory consumer" API.
[NTOS]: Add more debugging paths and flags that were sent over from the "Aleksey Pool Patch". Most of them are not implemented.
[NTOS]: Fix a missing case when a pool header check was not being done.
[NTOS]: Check IRQL levels during pool allocation and free.
With tags and the counters, pool leaks should be massively more debuggable now.
svn path=/trunk/; revision=55879
- Fix declaration of HalPrivateDispatchTable for FreeLDR.
[FREELDR]
- Rename BiosMemoryMap to XboxMemoryMap. Another BiosMemoryMap is in meminit.c
[NTOSKRNL][WIN32K][FTP]
- Fix some variables.
svn path=/trunk/; revision=55878
* Introduce a way to compile GCC builds with PDB style debug info (isolated into .dbg files). This will reduce the memory footprint considerably, among other benefits.
svn path=/trunk/; revision=55873
- null terminate DesktopObject->pDeskInfo->szDesktopName and WindowStationObject->Name
- null terminate the buffer when NtUserGetObjectInformation is called with UOI_NAME parameter
- should fix a random failure in user32:desktop tests
svn path=/trunk/; revision=55857
- Create a macro for properly checking for low speed devices
- Check again for a low speed device after the EHCI reset completes
- Don't ignore status changes on ports that we have released (revert part of r55851)
svn path=/trunk/; revision=55853
- Fix reset event handling in cases where reset does not end up in a new device created
- My MacBook Pro completes USB initialization free of hangs now (usbstor disabled)
svn path=/trunk/; revision=55852
- Handle errors returned from the HCD correctly
[USBEHCI]
- Discard any changes on ports that were given to the companion controller
svn path=/trunk/; revision=55851
- Fix reset port sequence #2
- Clear unwanted bits
- Fix wait time as in spec
- Wait max 500ms for the reset bit to clear, otherwise restart the reset sequence
- Check if work item is currently queued
svn path=/trunk/; revision=55849
- Fix the Live CD regression (RBuild only - The irony is not lost on me) caused by r55555
- There is another regression that still prevents booting though
svn path=/trunk/; revision=55846
- Properly create the WindowStations directory in NtUserInitialize. Now we take into account the fact that if we are not in session 0, it should be created in \Sessions direcory
- Clean up IntParseDesktopPath and make it use the correct WindowStations
- Add some comments and cleanup
- Remove the unused IntGetFullWindowStationName, IntGetWindowStationObject and IntGetWinStaObj
svn path=/trunk/; revision=55841
- Remove nasty hack to make Windows PCI driver load. This may not be required after the fixes that were committed after this hack. If it is still necessary then please fix whatever issue makes the PCI driver crash instead of relying on a return from bugcheck call to work...
[DDK]
- Mark KeBugCheckEx as noreturn again. Should fix Prefast issues where it thought execution could return from the call and would warn about false issues.
svn path=/trunk/; revision=55840
- Specify C4700 (uninitialized variable usage) to cause an error on compile as this is very likely to result in broken code.
[NTDLL]
- Disable ASSERT in LdrpSearchPath that could be reading an uninitialized variable. The routine is not fully implemented so this should likely be re-enabled once it is.
[BROWSEUI]
- Add missing call to BuildRebarBandInfo, or we would end up with an unitialized variable sent to SendMessage.
[PCIX]
- Fix broken ASSERT
- Fix usage of wrong (and uninitialized) variable in the Unicode case for PciGetDescriptionMessage.
[DDK]
- Prepend "_" to local variable of NdisChainBufferAtBack. Fixes code in ndisuio that called this using the same name as the macro's variable (which resulted in NdisChainBufferAtBack assigning the variable to itself).
[WIN32K]
- Fix WinPosShowIconTitle that checked if a variable was NULL before assigning it to anything.
svn path=/trunk/; revision=55834
A reintegration checkpoint for the NewCC branch, brought to you by Team NewCC.
Differences with current ReactOS trunk:
* A new memory area type, MEMORY_AREA_CACHE, is added, which represents a mapped region of a file. In NEWCC mode, user sections are MEMORY_AREA_CACHE type as well, and obey new semantics. In non-NEWCC mode, they aren't used.
* A way of claiming a page entry for a specific thread's work is added. Placing the special SWAPENTRY value MM_WAIT_ENTRY in a page table, or in a section page table should indicate that memory management code is intended to wait for another thread to make some status change before checking the state of the page entry again. In code that uses this convention, a return value of STATUS_SUCCESS + 1 is used to indicate that the caller should use the MiWaitForPageEvent macro to wait until somebody has change the state of a wait entry before checking again. This is a lighter weight mechanism than PAGEOPs.
* A way of asking the caller to perform some blocking operation without locks held is provided. This replaces some spaghettified code in which locks are repeatedly taken and broken by code that performs various blocking operations. Using this mechanism, it is possible to do a small amount of non-blocking work, fill in a request, then return STATUS_MORE_PROCESSING_REQUIRED to request that locks be dropped and the blocking operation be carried out. A MM_REQUIRED_RESOURCES structure is provided to consumers of this contract to use to accumulate state across many blocking operations. Several functions wrapping blocking operations are provided in ntoskrnl/cache/reqtools.c.
* Image section pages are no longer direct mapped. This is done to simplify consolidation of ownership of pages under the data section system. At a later time, it may be possible to make data pages directly available to image sections for the same file. This is likely the only direct performance impact this code makes on non-NEWCC mode.
RMAPs:
* A new type of RMAP entry is introduced, distinguished by RMAP_IS_SEGMENT(Address) of the rmap entry. This kind of entry contains a pointer to a section page table node in the Process pointer, which in turn links back to the MM_SECTION_SEGMENT it belongs to. Therefore, a page belonging only to a segment (that is, a segment page that isn't mapped) can exist and be evicted using the normal page eviction mechanism in balance.c. Each of the rmap function has been modified to deal with segment rmaps.
* The low 8 bits of the Address field in a segment rmap denote the entry number in the generic table node pointed to by Process that points to the page the rmap belongs to. By combining them, you can determine the file offset the page belongs to.
* In NEWCC mode, MmSharePageEntry/UnsharePageEntry are not used, and instead the page reference count is used to keep track of the number of mappings of a page, allowing the last reference expiring to allow the page to be recycled without much intervention. These are still used in non-NEWCC mode. One change has been made, the count fields have been narrowed by 1 bit to make room for a dirty bit in SSE entries, needed when a page is present but unmapped.
Section page tables:
* The section page tables are now implemented using RtlGenericTables. This enables a fairly compact representation of section page tables without having the existence of a section object imply 4k of fake PDEs. In addition, each node in the generic table has a wide file offset that is a multiple of 256 pages, or 1 megabyte total. Besides needing wide file offsets, the only other visible change caused by the switch to generic tables for section page tables is the need to lock the section segment before interacting with the section page table.
Eviction:
* Page eviction in cache sections is accomplished by MmpPageOutPhysicalAddress. In the case of a shared page, it tries to remove all mappings of the indicated page. If this process fails at any point, the page will simply be drawn back into the target address spaces. After succeeding at this, if TRUE has been accumulated into the page's dirty bit in the section page table, it is written back, and then permanently removed.
NewCC mode:
* NEWCC mode is introduced, which rewrites the file cache to a set of cache stripes actively mapped, along with unmapped section data.
* NewCC is more authentic in its interpretation of the external interface to the windows cache than the current cache manager, implementing each of the cache manager functions according to the documented interface with no preconceived ideas about how anything should be implemented internally. Cache stripes are implemented on top of section objects, using the same memory manager paths, and therefore economizing code and complexity. This replaces a rather complicated system in which pages can be owned by the cache manager and the memory manager simultaneously and they must cooperate in a fairly sophisticated way to manage them. Since they're quite interdependent in the current code, modifying either is very difficult. In NEWCC, they have a clear division of labor and thus can be worked on independently.
* Several third party filesystems that use the kernel Cc interface work properly using NEWCC, including matt wu's ext3 driver.
* In contrast with code that tries to make CcInitializeCacheMap and CcUninitializeCacheMap into a pair that supports reference counting, NEWCC lazily initializes the shared and private cache maps as needed and uses the presence of a PrivateCacheMap on at least one file pointing to the SharedCacheMap as an indication that the FILE_OBJECT reference in the SharedCacheMap should still be held. When the last PrivateCacheMap is discarded, that's the appropriate time to tear down caching for a specific file, as the SharedCacheMap data is allowed to be saved and reused. We honor this by making the SharedCacheMap into a depot for keeping track of the PrivateCacheMap objects associated with views of a file.
svn path=/trunk/; revision=55833
- Delay for the correct amount of time when performing a global reset and a port reset
- Loosen the loop timings a bit to allow for more time for real hardware to complete start/stop/reset
- Clear only the change bits that were set and handle both bits in the either case
- Perform a synchronous callback when the reset completes
svn path=/trunk/; revision=55832
- OHCI -> UHCI
- Implement timer routine which checks for new detected devices. In case a port change is detected, the sce callback routine is invoked
svn path=/trunk/; revision=55828
- Reenable and fix the correct reset code
[HIDCLASS]
- Disable removal of PDOs due to IRP cancellation issues
[USBEHCI][USBOHCI][USBUHCI]
- Disable removal of FDOs due to reinitialization issues
svn path=/trunk/; revision=55827
- Print interface details when dumping the function descriptor
- Fix bug USBCCG_AppendInterfaceNumber, which is not yet used
svn path=/trunk/; revision=55825
Some misc fixes to make kernel compile warning-free with /W3. Also fix a bug that completely broke the ProcessWx86Information case for NtQueryInformationProcess by missing to reference/dereference and acquiring the specified process' EPROCESS.
svn path=/trunk/; revision=55815
- Do not depend on argument evaluation order and thus uninitialized values. Sent and applied upstream. Dedicated to Stefan
svn path=/trunk/; revision=55814
[DDK]
- ndis.h Don't use local variables with the same name as function parameters.
[PSDK]
- access.idl Remove incorrect annotation
- usbioctl.h Not really a Prefast issue, but switch to use ANYSIZE_ARRAY like we do everywhere else.
- winddi.h EngQueryDeviceAttribute's 6th parameter is IN, not OUT
- winefs.h Fix FileEncryptionStatus to use annotations. Its definition in winbase.h already has them and this caused a conflict.
[WINE]
- debug.h Remove unnecessary check (in ReactOS) that made Prefast sad.
- test.h Disable a false-positive C28182.
svn path=/trunk/; revision=55813
- Detect the size of the configuration descriptor before obtaining the full configuration descriptor
- Fix integer overflow in BuildTransferDescriptorChain
svn path=/trunk/; revision=55810
- Queue dpc when the interrupt indicates completion of a transfer or an error interrupt
- Implement checking if a queue head is complete
- Free queue heads and associated endpoint descriptors
svn path=/trunk/; revision=55809
- Write the configure bit
- Clear connection change and port suspend bit when set after controller initialization
- Queue work item after the reset port is complete
- Disable port before reseting it
- Wait time for reset is 50ms, not 25ms
- Clear reset change bit when clearing reset feature
- Implement enabling port feature
svn path=/trunk/; revision=55806
- Fix use of uninitialized variables in failure case of RtlSetCurrentDirectory_U. CID 15339, 15340
- Handles should be NULL, not 0
svn path=/trunk/; revision=55805
- When deleting an old page file, take the newly freed space into account
- Keep at least 64 MB of disk free instead of 32 so that 2nd stage can succeed with a small disk
- Miscellaneous fixes and simplifications in the page file code
svn path=/trunk/; revision=55803
[KERNEL32]: Enable support for asynchronous I/O callbacks with SxS/Fusion activation context support. Right now only added to the file Change notification APIs, but ReadFileEx and WriteFileEx should use them too.
svn path=/trunk/; revision=55801
- Properly destroy the THREADINFO if we fail to create it. We don't leak the THREADINFO no in case of failure. It should also fix random assertion failure when running user32:desktop tests
svn path=/trunk/; revision=55798
- C standard for free says "if pointer is NULL, no action is taken".
- MSDN for HeapFree says "if pointer is NULL, behavior is undefined".
Thanks to Thomas for teaching wine guys how to read.
svn path=/trunk/; revision=55797
[KERNEL32]: Lock/UnlockFile APIs should handle STATUS_PENDING/ERROR_IO_PENDING situations instead of always assuming the Nt functions return synchronously.
[KERNEL32]: Other stylying changes + commenting/annotations.
svn path=/trunk/; revision=55795
- Implement function to retrieve queue head for the specified transfer type
- Pass device speed to IUSBRequest initialization routines
- Implementing inserting the new queue head into the required queue head
- Implement support for control transfers, not yet used
svn path=/trunk/; revision=55787
- allocate FAST_MUTEX objects from non paged pool.
This should ix a bunch of weird testbot failures.
Any suggestion on the TAG is welcome
svn path=/trunk/; revision=55784
- generate 'real' libraries for import libraries
This way only the link step relies on them.
Should avoid rebuilding half of the tree next time Alex changes ntdll.spec
A relinking orgy is more than enough
svn path=/trunk/; revision=55776
- Add prints to unloading functions because things seem very wonky here
- This exposes some previously unknown behavior of fastfat actually being unloaded in early boot (with uniata and buslogic failing unload due to missing DriverUnload)
svn path=/trunk/; revision=55773
- Call mini driver for pnp events
- Wait for all pending irps to complete
[HIDUSB]
- Fix bug when removing device object found by Cameron Gutman
[USBOHCI]
- Remove assert
- Delete configuration descriptors when device is deleted
svn path=/trunk/; revision=55772
- finally, release user shared data at process address space cleanup.
- release PDE pages that might not be freed at process end.
- Let the caller handle PDE release when deleting a PTE
- restore Richard's ASSERT : All user PDE pages are now freed!
svn path=/trunk/; revision=55770
* Alter the current base addresses, and introduce all the missing ones.
* We have a much better way to assign them, thanks to Timo's excellent suggestions.
* Big thanks go to Geir Hauge for making us an awesome script that conveniently and automagically generates baseaddress.cmake.
* Dedicated to Alex.
svn path=/trunk/; revision=55767
- Do not store the PDEVOBJ and a fake name in MONITOR struct. Use MONITOR.HDEV instead (which is an opaque pointer to a PDEVOBJ)
svn path=/trunk/; revision=55755
- "All this file is a big hack and should be removed one day…" - Today is that day! setup.c is no more!
[TXTSETUP.SIF]
- Move keyboard drivers to the Keyboard.Load section
[USETUP]
- Add a small keyboard class installation hack
- USB keyboards now load during 1st stage
svn path=/trunk/; revision=55750
- Create the DeviceClasses key necessary for device interfaces to be registered successfully in 1st stage
- This may not be the correct place to do this so anyone is free to move it
svn path=/trunk/; revision=55747
- When releasing a low or full speed device, set the EHCI_PRT_RELEASEOWNERSHIP bit with the current port status so that any change bits are acknowledged
- Fixes detecting new devices after a companion controller handoff
svn path=/trunk/; revision=55742
[NTOSKRNL]: If you're going to fake success when doing access checks, also grant the rights that would normally be refused, for consistency's sake. Should fix a bunch of the kernel32:synch tests (which have nothing to do with synch...).
svn path=/trunk/; revision=55737
[NTOSKRNL]: The "Write" bit in the x86 Error Code is not bit 1, it is bit 2. Fix all the GPF handlers to check for bit 2 instead when determining if an exception was due to read or write. Fixes Winetests.
I'll say it nicely this time for Timo: when you rewrite ASM, do it carefully :)
svn path=/trunk/; revision=55735
[NTDLL/RTL]: Fix RtlIpv4AddressToStringA and RtlIpv4AddressToStringW to work like in Windows (and crash with a NULL buffer).
svn path=/trunk/; revision=55729
- remove assertions from the process callout checking that ppiCurrent->rpdeskStartup and ppiCurrent->hdeskStartup are valid. This can happen in case we fail to open the initial desktop or window station
svn path=/trunk/; revision=55726
- Try to fix reset bugs in my code and remove hacks
- Don't clear extra bits when acknowledging a port connect status change
[USBOHCI]
- Code cleanup
- No functional change
svn path=/trunk/; revision=55725
- Fix a crash in KiSystemCall that was caused because PsConvertToGuiThread may have switched to a large kernel stack, but still returned with failure because win32k did not succeed. To fix it reload the trap frame after the call before checking for success.
svn path=/trunk/; revision=55724
[CSRSRV]: Add special handling for certain messages (similar to how "Reply" is used in CSRSRV2) so that we don't keep replying to the wrong thead. For example, during an ExitProcess, special handling is needed at the end of the loop.
[CSRSRV]: Remove the last few remaining legacy process management function and use the correct CsrLock/Unlock APIs instead. No longer leak references for every process like crazy. Fully manage proc/thread/session reference counts now.
At this point it looks like there might just be one issue left before this thing works right (minus potential regressions due to missed hacks).
svn path=/trunk/; revision=55718
[CSRSRV/kERNEL32]: Switch to using the Windows CSRSS message structure for a new process, minus the bInheritHandles field which we still support for ReactOS compatibility.
[CSRSRV]: Port CsrCreateProcess from CSRSRV2, rewrite CsrSrvCreateProcess to use this API, and add required ReactOS compatibility hacks. A lot of stuff is still not supported, but the minimum (ie: previous ReactOS functionality) has been maintained during the transition. Processes are now tracked correctly, but there are still refcount leaks (known, to be fixed later).
Will let this breathe for a bit now to catch regressions. Work can now continue back on the kernel32 side while that happens.
svn path=/trunk/; revision=55711
[NTOSKRNL]: Implement ProcessUserModeIOPL info level (and implement Ke386SetIopl) instead of spamming we can't do this.
[NTOSKRNL]: Implement ProcessExecuteOptions info level (and implement MmSetExecuteOptions) instead of spamming we can't do this.
[NDK]: Add NoExecute Flags based on ProcessHacker.
No longer spammed to death for every process all the time.
svn path=/trunk/; revision=55688
- Don't preserve command status values when notifying controller of a new bulk / control endpoint
- Abort pipe & reset data toggle in the sync reset routine
- Allocate interface descriptors and endpoint handles when creating the configuration descriptor
- Implement routine for allocating chained descriptors
- Implement data toggle for bulk&interrupt transfers
- Mass storage devices should now work in real hardware with OHCI controller
- Tested in real hardware with NEC Corporation USB [1033:0035] (rev 43)
svn path=/trunk/; revision=55687
KdInitSystem may be called after system set up if /CRASHDEBUG is enabled and a bugcheck or NMI occurs. With the INIT discard/delete now implemented, and KdInitSystem marked for INIT, this would have resulted in a crash...during a system crash, if /CRASHDEBUG had been enabled. Fun.
svn path=/trunk/; revision=55680
- Fix regressions which resulted in hang after reseting device
- Introduced in revision 55662
- Tested in VBox + Mass Storage Device
svn path=/trunk/; revision=55679
[CSRSRV/CSRSRV2]: Fix CsrLockProcessByPid -- it was skipping the root process itself, so requests coming from a CSRSS-hosted DLL would fail (which is exactly what server-to-server depends on).
[NTDLL]: Enable support for server-to-server calls!
Server-to-server calls work now, and one of the multiple mapping hacks is gone. User32 and kernel32 still need a bit of fixes to get rid of the other hacks, though. Also, Perf++.
svn path=/trunk/; revision=55677
- Fix heap code for 64 bit (before someone asks: the reason to use ULONG_PTR instead of ULONG is warning free code without casts)
svn path=/trunk/; revision=55675
- Fix error status of GetQueuedCompletionStatus, which should set the error to WAIT_TIMEOUT
- Fixes 4 failing winetests
- Patch by Samuel Serapion (samcharly_hotmail_com)
See issue #6907 for more details.
svn path=/trunk/; revision=55673
If the last chunk of the string sent to StringOut isn't a whole line and forcePrint is set to false, send back what's left after processing. The caller is then responsible for prepending that string next time it calls StringOut. Should fix the rest of debug log corruptions.
svn path=/trunk/; revision=55670
- Remove massive hacks from our port reset code
- We now wait for the reset complete interrupt instead of stalling 10ms and continuing
- Don't wait for a port to stabilize unless there's actually a device connected
[USBEHCI]
- Fix very long delay between setting the reset bit and clearing it
- Wait for the port to come back enabled before finishing the reset
- Don't wait for a port to stabilize unless there's actually a device connected
svn path=/trunk/; revision=55662
- Only send read format capacity when the device type is zero (direct access device)
- Add fixme
[INF]
- Fix issue
- USB CDROM installation now starts
svn path=/trunk/; revision=55661
- Implement timer routine which checks for hung srbs, not yet activated
- Stop timer when the device is stopped
- Implement function to check if the attached device is a floppy device
- Implement function to send read format capacity request
- Implement missing hardware id / device id support for floppy
- Add retry count parameter for debugging purposes
- Tested in VBox + VmWare + RH
svn path=/trunk/; revision=55659
- Don't send a bogus bus number (-1) to the PCI driver because then it tries to scan that bus and obviously doesn't find anything
- Legacy HAL can now enumerate boot critical PCI devices (like the USB controller) and build the device stack for USB boot
[HIVESYS]
- Missed this spot where usbhub is installed for an external hub causing a crash
svn path=/trunk/; revision=55652
[CSRSRV]: Enable some disabled code-paths and fix some locking patterns to be closer to what the code should look/be like. Correct ref count management is one of the things where regressions could show up later, so trying to nail these down now.
svn path=/trunk/; revision=55650
[CSRSRV]: Import server.c from CSRSRV2, and move the existing CsrSrv functions we had from wapi.c to server.c (with the reactOS-specific hacks we had). The other CsrSrv* functions are not yet used.
svn path=/trunk/; revision=55647
- First drop of a new implementation of NtAllocateVirtualMemory.
Very incomplete, don't hesitate to drop in and complete it.
For now, only MEM_RESERVE is kind of supported, as well as MEM_RESERVE|MEM_COMMIT
svn path=/trunk/; revision=55645
[CSRSRV]: Port from CSRSRV2 and use CsrApiPortInitialize instead of CsrpCreateListenPort. This will set appropriate SDs and also wait for all threads to be ready.
svn path=/trunk/; revision=55638
- Modify NtGdiSelectBitmap to correctly handle the case of pdc->dclevel.pSurface == 0
- Small code improvement without functional change for rtlstr functions
svn path=/trunk/; revision=55636
- Abort pipe when performing sync reset request
- add assert to check for bogus interface descriptors
- use endpoint max packet size when available
- flip data toggle after each transfer
- remove dead code
- use maximum of 4 pages or rest current buffer size when performing a bulk requests
- use nak reload count 3
- perform 1 transaction per frame
svn path=/trunk/; revision=55634
- use ARM3 allocation for PDE pages.
There is now one table for system PDEs, and their pages are not leaked anymore.
Also fix bug 5857 (aka mshtml bug).
Only for x86 now. Timo, I think you should do it for amd64 as well.
Thanks for your patience, go back to testing now.
A huge congrats to Cameron and Thomas, without them I wouldn't even have dared touching this code.
svn path=/trunk/; revision=55631
Use local labels in the inline asm code to avoid a clash when building with link-time code generation.
[PSEH]
Do not push memory operands with ESP as the base register (can happen when compiling with some GCC options), load arguments into registers.
Fix formatting.
svn path=/trunk/; revision=55628
[CSRSRV]: Port CsrSbApiRequestThread, CsrSbApiHandleConnectionRequest and all the Sb* APIs from CSRSRV2. Comment out parts that can't work yet.
[CSRSRV]; Port CsrSbApiPortInitialize, CsrSetProcessSecurity, CsrCreateLocalSystemSD, and almost all of CsrServerInitialization. Initialization is almost identical to CSRSRV2 now.
[CSRSRV]: Kill "Complete" routine support, nobody was using this.
svn path=/trunk/; revision=55615
[CSRSRV]: Flatten out the initialization code instead of a table of initialization functions.
[CSRSRV]: Make BasepFakeStaticServerData (our fake BaseSrv.DLL that's static inside CSRSRV for now) also create the BaseNamedObject Directory, along with the right ACLs and symbolic links, as well as the \Restricted sub-directory. Remove legacy function that was doing this before.
svn path=/trunk/; revision=55610
- Partially revert r54068. "My Video" is not a typo but name of registry value, which match Win2k3.
See issue #6568 for more details.
svn path=/trunk/; revision=55604
- Rewrite error handling
- Check if CSW is valid
- Check if the error handling was already started
- Reset device if required
- Error handling was completely broken and did not follow the reset procedure as defined in USB Mass Storage Specification Bulk Only Section 5.3.4
- Mass storage device now longer hang when receiving the read capacity request and ReactOS assigns a symbolic link
- Mass storage devices not yet fully working
svn path=/trunk/; revision=55601
- Remove bogus assert
- Store full configuration descriptor
- skip intermediate descriptors until the requested descriptor is found while parsing the configuration descriptor
- simplify CUSBDevice::GetConfigurationDescriptors
- check if an interface descriptor has endpoint descriptors
svn path=/trunk/; revision=55595
- If no control or one of wizard buttons has focus in PROPSHEET_SetWizButtons, set focus to default wizard button. Tested in Win2k3. Worse fix was already in diff but wasn't applied.
svn path=/trunk/; revision=55593
- Add support for LVS_EX_TRANSPARENTSHADOWTEXT style
[SHELL32]
- Add drop shadows support for desktop
- Set proper label color based on background color when drop shadows is disabled
- Update desktop colors when WM_SYSCOLORCHANGE or WM_SETTINGCHANGE msg is received
[BOOTDATA]
- Enable drop shadows by default (this option was hardcoded to 1 before)
[DESK]
- Send WM_SETTINGCHANGE with wParam = 0 when applying changes
[EXPLORER]
- Broadcast WM_SETTINGCHANGE message to shell view window
svn path=/trunk/; revision=55583
- Set endpoint direction indicator for control transfers
- Mask Version bits when printing out version
- Implement function for dumping endpoint descriptor
- Implement retrieving pid direction from setup packet
- Flip the pid direction for the status descriptor when data is transferred
- Return packet size 8 when using the control pipe
- OHCI control transfer hang is gone
- OHCI control should now work and attached HID devices finish initialization
svn path=/trunk/; revision=55574
- Fix code designed to avoid touching the hardware if it is already owned
[KDIO]
- Take ownership of the display if we're debugging to screen
[TXTSETUP.SIF]
- Add an example entry of DbgOsLoadOptions for debugging 1st stage to screen
- 1st stage setup can now be debugged completely to screen with a modified txtsetup.sif (comment 1st DbgOsLoadOptions and uncomment 2nd)
svn path=/trunk/; revision=55570
- Merge r55564 and r55567 from usb-bringup-trunk
- USB development should now be done in trunk exclusively (UHCI implementation may be an exception)
svn path=/trunk/; revision=55568
- Initilize ExDesktopObjectType->TypeInfo.ValidAccessMask and ExWindowStationObjectType->TypeInfo.ValidAccessMask to let win32k use access checks to desktop and window station objects
- When opening a desktop and window station during THREADINFO initialization, give full access to the objects
svn path=/trunk/; revision=55556
- We proudly merge the first charge of the usb-bringup branch. We do want to stress hardware support is still under heavy development and testing in real hardware is experimental
- Merge the Human Interface Device Stack(HID) which is used for mice / keyboards and other devices which use the USB interface, consisting of hidusb, hidparse, hidclass, mouhid, kbdhid
- Merge the composite driver, supports USB composite devices, laid out in usbccgp
- Merge the generic hub driver, which supports the USB root hub and in future USB hubs. Driver is usbhub
- Merge the Open Host Controller Interface driver (ohci)
- Merge the Enhanced Host Controller Interface driver (ehci)
- Merge the many fixes in other areas of ReactOS needed for USB to work (ntoskrnl, pci, inf, umpnpmgr, usetup)
- Special thanks goes the Haiku team, whose excellent code has provided a great base for the development of the new ReactOS USB / HID stack
- The development of the USB stack has shown the great potential when ReactOS developers team up together to achieve a common goal. The involved developers are here, listed alphabetically:
Alex Ionescu
Amine Khaldi
Cameron Gutman
Johannes Anderwald
Michel Martin
Thomas Faber
Thomas Lotz(Haiku)
Let's start the ReactOS revolution
svn path=/trunk/; revision=55555
- Enable async park mode when available
- Use correct type for the pipe handle
- Implement URB_FUNCTION_GET_STATUS_FROM_INTERFACE, URB_FUNCTION_GET_STATUS_FROM_ENDPOINT
- Verify that there is buffer provided in SubmitSetupPacket
[KBDCLASS]
- Forward requests to lower device
svn path=/branches/usb-bringup-trunk/; revision=55552
- In reactos when an application tries to use a desktop or window station object we never check if it should have access to the object. However the only exception to this is NtUserGetObjectInformation. Since desktops and windows stations are a mess, NtUserGetObjectInformation always fails. Ironically windows do such access checks everywhere except NtUserGetObjectInformation. Fix NtUserGetObjectInformation by removing access checks
- Note: access checks for every other place will be fixed soon
svn path=/trunk/; revision=55550
- Update pti->pClientInfo->hKL when pti->KeyboardLayout changes
- Fixes assertion after activating a second keyboard layout
svn path=/trunk/; revision=55549
- Implement retrieving endpoint halted status
- Fix multiple bugs which leaded to crashes (wrong device object passed). Usbstor now successfully restarts requests after handling the errors
- Implement mass storage reset, not yet used
- Add checks in CSW completion
svn path=/branches/usb-bringup-trunk/; revision=55548
- Fix incorrect maximum bound for resource requirements
- Handle PCI buses manually
[HAL]
- Don't hang if the IRP_MN_QUERY_INTERFACE is received
[INF]
- Misc fixes
svn path=/branches/usb-bringup-trunk/; revision=55541
- Ignore invalid extended capabilities pointer
- Don't hang on unimplemented IRPs that we actually use
svn path=/branches/usb-bringup-trunk/; revision=55539
- Implement IopFixupResourceListWithRequirements to replace IopCreateResourceListFromRequirements
- This functions fills in gaps between required resources and currently allocated resources in the resource list
- It also implements support for alternate requirement descriptors which IopCreateResourceListFromRequirements ignored
- Fix a critical bug in requirement processing that could result in the kernel allocating resources outside the devices requested range
- Now the PnP manager will actually claim resources that the device reports that it needs but it does not currently have
svn path=/branches/usb-bringup-trunk/; revision=55537
- Store configuration index in the setup packet
- Perform retrieving the configuration request before storing the configuration details. Perform the same action for the select interface request
- EHCI now supports selecting configuration & interface on devices with more than one configuration (previously only one configuration was supported)
- Code has not yet been tested, as no available usb device has such feature
svn path=/branches/usb-bringup-trunk/; revision=55536
- Don't corrupt memory when a queue head / transfer descriptor is freed
- How did this work before...
svn path=/branches/usb-bringup-trunk/; revision=55525
- Enable new heap code and cleanup the heap, releasing unused memory, before starting reactos
- Gives our kernel about 4MB additional memory, which - at the current leak rate - means around 8 minutes longer before it runs out of memory :)
- Using the temp heap for all temporary allocations should increase the amount of saved space
svn path=/trunk/; revision=55518
- Use the parse context to store whether or not the desktop object was created. If the object was not created, NtUserCreateDesktop should return immediately (this can happen if it didn't exist)
- Before this , if the desktop already exited, we opened the existing desktop and initialized it again. We also created another desktop heap, desktop window, etc.. This fact confused threads using this desktop and caused problems like the assertion we see in the test suite
svn path=/trunk/; revision=55517
- Ignore error when the device provides a string descriptor but no contents
- Fixes installation of cheap usb devices
svn path=/branches/usb-bringup-trunk/; revision=55514
Use MiNonPagedSystemSize when creating the system NP memory area instead of making assumptions about the memory layout
Finally the amd64 port boots into usermode and usetup is partly working, formats the harddisk but freezes, when copying files.
svn path=/trunk/; revision=55513
[SMSS]: Turn off all code other than setting up the pagefile.
There's a lot of debug prints, as soon as things seem stable after a few days, SMSS will be gone and SMSS2 will take over and DPRINT1s will mostly be gone.
svn path=/trunk/; revision=55509
Slightly reorganize architecture dependent headers, so that ASSERT can be used
[CRT]
Use some definitions only for vista+, since 2k3 msvcrt doesn't have them
svn path=/trunk/; revision=55504
- Add back old implementation for testing purposes (if'd out)
- Display more status field of queue head / transfer descriptor
- Dump queue head when a halted queue is detected
- Display data toggle status
svn path=/branches/usb-bringup-trunk/; revision=55502
[CSRSRV]: Fix many bugs in ServerSbApiPortThread. This function never worked as SMSS never actually connects to the SB API Port. Since SMSS2 does, a few bugs were discovered. Also, hack-plement the one SB API that is required for SMSS2 (SbpCreateSession). All we do is resume the thread we receive (Winlogon)... normally we'd also register a hard-error port, etc.
[CSRSRV]: If connecting with SMDLL to SMSS did not work (such as on my system where SMSS is no longer there), try using SMLIB and SMSS2 instead. This way CSRSS still works with both environments.
[CSRSRV]: Required rbuild/cmake changes to build with SMLIB.
svn path=/trunk/; revision=55500
- Don't wait for the work item to complete in the SCE completion handler
- Use an event to signal the completion of a reset and wait for that event during IRP_MN_START_DEVICE handling so devices are enumerated synchronously which allows USB boot devices to be enumerated
svn path=/branches/usb-bringup-trunk/; revision=55493
- Fix a few bulk transfer bugs
- Enable interrupt completion on last interrupt
- Increment transferred offset
- Mass storage device now gets further (passing SRB_FUNCTION_CLAIM_DEVICE)
svn path=/branches/usb-bringup-trunk/; revision=55491
- Rewrite the transfer descriptor handling
- Take into account the direction of the pid
- Revert previously added hacks
- Support now more than one transfer descriptor for control transfers
- Include the bulk transfers in one queue head which should speed up operation
- Store data toggle in usb endpoint structure
- Mass storage devices now passes the control status phase on real hw and enters bulk operation stage
svn path=/branches/usb-bringup-trunk/; revision=55489
Fix a FIXME in IopCreateArcNames.
This allows ntoskrnl to find where it boots from and where it is when performing remote boot.
Now ReactOS should boot a bit farther using PXE :-).
svn path=/trunk/; revision=55485
- Don't set NumberOfTransaction 0x3 for the async queue head(Haiku doesnt do it too)
- Also don't set maximum packet length or interrupt on complete
- Stop the async / periodic schedules after acquiring ownership from os (ported from the Pedigree OS)
- Remove unused structs from header
- Allocate device descriptor from start of a page to prevent alignment issues
- Clear halted bit in the queue overlay transaction layer (usb_queue.cpp:507)
- Always set the alternative and next pointers in BuildControlTransferQueueHead
- Use data the toggle in the transfer requests
- Start using toggle in bulk requests, invert data toggle after each descriptor
- EHCI controller still reports error 0xA / 0xB which is USB Error Interrupt + Frame List Rollover + [USB Interrupt]
- Errors need to be researched more, though the control transfers results appear o.k.
- Tested in real hw + ros stack with USB Mass Storage Device
- Currently hangs after first completed CDB/Data/CSW block
svn path=/branches/usb-bringup-trunk/; revision=55483
[SMSS2]: Implement the main LPC loop and handle all the supported APIs (all stubs for now). Also handle new connection requests and implement SmpHandleConnectionRequest.
[SMSS2]: Implement subsystem helper functions.
[SMSS2]: Use SmApiPort2 instead of Sm2ApiPort.
[SMSS2]: Rename the SMSRV_APIs not to conflict with the function names, nor with the client functions in smlib.
svn path=/trunk/; revision=55478
- Wait for periodic scheduling to start
- Increase the wait interval for asynchronous scheduling to start
svn path=/branches/usb-bringup-trunk/; revision=55477
- Implement MiIsUserP*e inline functions to efficiently determine if a pte is a pte/pde/ppe or pxe for a user mode page
- Make MiDetermineUserGlobalPteMask work for _MI_PAGING_LEVELS >= 3
- In MiResolveDemandZeroFault, use MI_MAKE_HARDWARE_PTE only, it does all the necessary work.
svn path=/trunk/; revision=55472
[SMSS2]: Implement SmpLoadSubsystemsForMuSession which correctly creates a session, loads win32k.sys inside of it, and then detaches from the session. Winlogon.exe is set as the initial command (but not launched), and CSRSS is fake-started.
[CSRSRV]: No longer start win32k.sys, that's not your job.
[SMSS2]: Kill most debug prints that aren't errors.
svn path=/trunk/; revision=55467
- Modify the logic in MmArmAccessFault, so that faults on kernel mode addresses including page table addresses are handled in the first part and user mode addresses (VADs) in the second part. This works, because for the special case of page table addresses, the user mode and kernel mode part of the code end up doing the same thing and this simplifies the code.
- In the user mode part call MiCheckVirtualAddress early and bail out if no VAD is found, since we do not care about any other cases any more.
svn path=/trunk/; revision=55459
- Cleanup Win32kProcessCallback and Win32kThreadCallback
- Even though it works, trying to post a message in Win32kProcessCallback after the THREADINFO is destroyed can only cause trouble, so move it in Win32kThreadCallback
- There is no need to try opening a desktop and windowstation before winlogon initializes
- Handle errors properly when we fail to get a default window station and desktop for the new process
- Enable win32k syscall hook callbacks
- Rewrite SetThreadDesktop to update THREADINFO properly and handle errors properly
- Do not initialize the THREADINFO in GetW32ThreadInfo as it is now done properly (actually leave a small hack that updates pci->dwTIFlags)
- Add UserDbgAssertThreadInfo that asserts the integrity of THREADINFO, CLIENTINFO and CLIENTTHREADINFO. This is called by GetW32ThreadInfo and the syscall hook callbacks
svn path=/trunk/; revision=55458
- Implement MiSynchronizeSystemPde, which does what its name suggests, synchronize a system PDE and is an improved replacement (with a more proper name) for MiCheckPdeForPagedPool
- Move some code to avoid an additional check
- Call MiResolveDemandZeroFault directy instead of creating a demand zero PDE and then calling MiDispatchFault, which after a lot of checks will finally do the same
svn path=/trunk/; revision=55456
- modify MiResolveDemandZeroFault to take the page protection as a parameter instead of the PTE. This will be used soon.
- Move increment of counters into the region where the pfn lock is held to avoid race conditions and make heavy locked operations unneccessary
- Add some ASSERTs
svn path=/trunk/; revision=55454
[SMSS]: Neuter away most of the code and only keep SMSS around for managing the API port.
Next step is to make the SMSS2 API port go into use.
svn path=/trunk/; revision=55453
- Add more structures to ntdddisk.h
- Fix more compile errors in disk_new
- disk_new builds but fails to link as classpnp import lib is broken
svn path=/branches/usb-bringup-trunk/; revision=55451
- Implement ResetController and call it before setting up the controller
- Don't disable 64-bit addressing until the BIOS gives up control of the controller
- Comment out manually clearing the SMI interrupt and the BIOS owned flag by request of janderwald
- EHCI no longer hangs for me on real hardware during controller initialization
svn path=/branches/usb-bringup-trunk/; revision=55450
[NTDLL]: Fix (although I'm not sure quite why) LdrpCheckForLoadedDll which was crashing now that I've fixed PAGE_EXECUTE sections with only FILE_EXECUTE handles. Ironically, this meant that LdrpCheckForLoadedDll never worked until my previous fix some revisions ago, it always returned FALSE.
This should fix KVM/QEMU crashes...
svn path=/trunk/; revision=55448
In PeFmtCreateSection don't use the ImageBase field of the ImageOptionalHeader directly, since it's different between PE32 and PE64. Use the ImageSectionObject->ImageBase field instead, which already contains the correct value.
svn path=/trunk/; revision=55446
- Add MM_HAL_VA_END and use it in MiAddHalIoMappings instead of making assumptions about the page tables
- Add MM_SHARED_USER_DATA_VA for x86
- use MM_SHARED_USER_DATA_VA in Mm to avoid ambiguities
- fix or comment out USER_SHARED_DATA in asm headers, as it should be the kernel mode address here
- set Teb->ExceptionList to NULL on amd64, it is used as a link to the Wow64 TEB, if any
svn path=/trunk/; revision=55445
- When rosautotest is launched, show how much time has past since the machine has started
- Also show how much time each individual test need to complete
- The purpose of this feature isn't to benchmark the os but to let us spot regressions regarding test time
svn path=/trunk/; revision=55441
- Check if the report uses a report id
- Fix arrows in USB 2 PS/2 conversion table (Needs more fixing)
svn path=/branches/usb-bringup-trunk/; revision=55440
- load gpsi->dtCaretBlink and g_PaintDesktopVersion in sysparams.c
- Rename IntGdiGetLanguageID to UserGetLanguageID
- Remove some unused functions and definitions
svn path=/trunk/; revision=55439
- Modify MiRosTakeOverPebTebRanges to only create a memory area for the shared user page and rename it to MiRosTakeOverSharedUserPage. Previously it was creating a memory area for the whole region from USER_SHARED_DATA up to MM_HIGHEST_USER_ADDRESS, which is the majority of the x64 user mode address space and doesn't even contain the PEB/TEB. Those are allocated below the shared user page and get their memory areas created in MiInsertNode.
- Add amd64 versions of MmGetPageTableForProcess, MmUnmapPageTable, MmGetPageFileMapping
svn path=/trunk/; revision=55438
- Rewrite SeCaptureSecurityDescriptor. The old code was mess and totally broken for 64 bit.
- Many fixes to security descriptor code that was making wrong assumptions about the SECURITY_DESCRIPTOR structures
svn path=/trunk/; revision=55437
- Check if attaching to device stack failed. In that case fail the request
[HIDUSB]
- Always set SupriseRemovalOk
[USBCCGP] [HIDCLASS] [USBHUB] [USBSTOR]
- Check if the pdo is still in the pdo list. Only call IoDeleteDevice in that case
svn path=/branches/usb-bringup-trunk/; revision=55429
- Bulgarian translation update of several modules (bug no. 6840), by CCTANEB, minor fixes by me;
- Polish translation update of sysdm by me;
svn path=/trunk/; revision=55424
- Fix a bug in CmpSetSystemValues, where an uninitialized handle would be closed in the failure path.
- Add a hack on top of the MI_GET_ROS_DATA(x) hack so that we can squeeze a pointer into a 32 bit field.
Make MmInitializeProcessAddressSpace amd64 ready and use a portable way to determine the page table base pfn in MiInitializeWorkingSetList
- Make MmProbeAndLockPages ready for 3 and 4 level page tables
add MiIsPteOnP*eBoundary macros - use these in MmProbeAndLockPages
- Raise IRQL to SYNCH_LEVEL not DISPATCH_LEVEL in KiAcquireDispatcherLock
- Add MiNonPagedSystemSize for all architectures
- Fix amd64 definition of KERNEL_HANDLE_FLAG
- Fix definition of PrototypePte
- Fix KiGetLinkedTrapFrame()
- Make MmProtectTpPteMask 64 bit wide
- Fix definition of MI_PTE_LOOKUP_NEEDED for amd64
- Impllement KiSendEOI() to be able to send an EOI from C code.
- Fix some MSVC/amd64 warnings
svn path=/trunk/; revision=55423
- Don't map the low 1 MB into kernel space, it's pointless and leads to inconsistencies between reported memory type and what is found in the page tables. On x86 it works, because it uses an overcomplicated pfn initialization wih redundent checks. Anyway this memory, containing freeldr and real mode code, was simply wasted.
- Silence some debug prints
- Fix warnings
svn path=/trunk/; revision=55421
- Define USBDI_VERSION to 0x500 instead 0x600 because we support none of the Vista APIs so USBD will report the correct version
svn path=/branches/usb-bringup-trunk/; revision=55420
- Add and fix missing exports
- Add UNIMPLEMENTED to unimplemented functions
- Fix completely broken USBD_GetPdoRegistryParameter (which wasn't even exported because somebody made a typo and couldn't figure it out)
- My Linksys USB300M driver now loads but it runs into some unimplemented code paths in usbehci
svn path=/branches/usb-bringup-trunk/; revision=55416
- Fix RtlLengthSecurityDescriptor
- Implement amd64 version of Implement RtlInitializeContext
- Add unwind info to amd64 debug asm functions
- Fix 64 bit HEAP_COMMON_ENTRY structure The resulting version doesn't exactly match the original windows one, but its compatible, as every field, except the dummy fields - which are omitted - is at its correct position.
svn path=/trunk/; revision=55415
- Implement amd64 version of LdrInitializeThunk and KiUserApcDispatcher
- Export ExpInterlockedPopEntrySList* on amd64, too
- Fix some 64 bit issues
svn path=/trunk/; revision=55414
- fix ASSERTs in amd64 inline functions
- fix definition of KWAIT_BLOCK
These fixes are not critical, so I don't update wdm.h to avoid additional recompilation
svn path=/trunk/; revision=55413
- Change LogfInitializeNew and LogfInitializeExisting to return an NTSTATUS code instead of a BOOL value.
- LogfInitializeExisting no longer calls LogfInitializeNew when reading a log file fails but returns a proper status code instead.
svn path=/trunk/; revision=55406
- Fix stack alignment in KiSwitchToBootStack
- Handle ExceptionFrame == NULL in KeContextToTrapFrame and KeTrapFrameToContext
- Implement KiSwapContextInternal
- Fix KiSwapContext and KiThreadStartup
- Implement dispatching of user mode exceptions including in-paging of module data used by the kernel-debugger
- Implement KeInitializeInterrupt, KeConnectInterrupt, KeSynchronizeExecution
- Don't zero more than the actual PCR size in KiInitializePcr
- Add asm function KiInitializeSegments to initialize the segment selectors to proper values
- Initialize system call entrypoints in KiInitializeCpu
- Implement KiDpcInterruptHandler, KiIdleLoop, KiInitializeUserApc, KiSwapProcess, KiSystemCallHandler, KiInitializeContextThread, KiSwapContextResume
- Implement asm functions KiRetireDpcList, KiInterruptDispatch, KiSystemCallEntry64, KiZwSystemService
svn path=/trunk/; revision=55405
- Add MI_REAL_SYSTEM_RANGE_START, which is the canonical system space base address, while MmSystemRangeStart variable contains a broken value, like on Windows.
- Define MmSystemRangeStart to MI_REAL_SYSTEM_RANGE_START, since on amd64 there is no dynamic system space start address and we don't want to use the broken address anywhere
- Add some more address layout definitions
- Add MiIsPteOnP*eBoundary() macro
- Add MMPPE, MI_WRITE_VALID_PPE and ValidKernelPpe definitions
- Fix initialization of PrototypePte
- Add mappings for VAD bitmap and working set list to MiInitializePageTable
- Fix calculations in MiBuildNonPagedPool
- Improve MiBuildSystemPteSpace
- Implement MiBuildPfnDatabase, MiAddDescriptorToDatabase, MiBuildPfnDatabaseFromPageTables, MiSetupPfnForPageTable all of these are written to be portable, yet they are untested on anything else than amd64 builds
- Mostly finish MiInitMachineDependent
svn path=/trunk/; revision=55403
- Add HID devices to the critical device database
- Fixes issues with mouse/keyboard not working until new device wizards are dismissed (USB drives work too)
[UMPNPMGR]
- Fix install failure after the kernel detects a critical device
[NTOSKRNL]
- Finally enable the proper IopResetDevice code
- Driver updating without a reboot for running devices is supported now (if someone will write the GUI)
[USBEHCI][USBOHCI]
- Fix removal bugs
svn path=/branches/usb-bringup-trunk/; revision=55401
- Rewrite MmFindGapBottomUp and MmFindGapTopDown, the old versions were broken and were first checking the address range after the first memory area and only used the area below (above) the first memory are when nothing free was found.
- Fix an ASSERT, that gets triggered now that the memory areas are created at the "right" locations
- Create a memory are for the boot loaded images, which previously could be overwritten happily by new memory areas, which was only prevented by the brokenness of the code
- Fix a few memory regions so that they are correct for amd64 builds as well
svn path=/trunk/; revision=55397
- Remove hack of forwarding pdo requests to lower device object of fdo
- Implement handling of reset port and cycle port
- IOCTL_INTERNAL_USB_RESET_PORT / IOCTL_INTERNAL_USB_CYCLE_PORT now need to be implemented in usbhub
svn path=/branches/usb-bringup-trunk/; revision=55396
- Properly handle an empty list in SmpSaveRegistryValue
- Compare the value string for equality, as the comment says, not inequality
- This fixes a crash, although another solution may perhaps be better
svn path=/trunk/; revision=55391
- Check if the transfer descriptors reported errors and propagate the error in the urb status field
- OHCI now reports error which the class driver are handling
- Allocate device descriptor from non paged pool to prevent possible alignment problems
- Fix checking of completed transfer descriptors
- Fix double freeing of descriptors
- Cleanup endpoints when the halted bit is set by the host controllers
- Check for the endpoint direction in the data descriptor
- Setup descriptor needs buffer rounding set
svn path=/branches/usb-bringup-trunk/; revision=55389
- Use constants instead of hardcoding register offsets. Taken from Haiku
- Elements in HCSP-PORTROUTE are 4 bit entries instead
svn path=/branches/usb-bringup-trunk/; revision=55385
- Write the partition table back after CheckActiveBootPartition() because it could've changed the partition table on a disk with no active partition
- Fixes issues installing ROS on new disks and disks with no active partitions (including USB disks)
svn path=/branches/usb-bringup-trunk/; revision=55382
- In 2012 a long protected natural resource for bugs was shutdown due to popular usb device support demand
- Fix length check in USBD_ParseDescriptors. (PLONG)Descriptor + TotalLength is not the length of the configuration descriptor but twice the configuration descriptor
- Reset found variable in the loop. This fixes finding of interfaces which are not the first one in the configuration descriptor
- Again moving to next usb descriptor was broken. UsbDeviceDescriptor = UsbDeviceDescriptor + UsbDeviceDescriptor->bLength does not move to the next but to next XX descriprors specified by bLength
- Introduced in rev 17382 (14/08/2005)
svn path=/branches/usb-bringup-trunk/; revision=55370
- Wait 100 milliseconds for the port power and insertion to stabilize
- Wait for the 10 millisecond "recovery" period after reset
svn path=/branches/usb-bringup-trunk/; revision=55367
- Use report value when report item bitcount > 1
[KBDHID]
- Print raw report
- KBDHID starts to receive normal keys and modifier keys
svn path=/branches/usb-bringup-trunk/; revision=55364
- Attempt to fix the font leak when switching applications. Tested with other applications other than Acrobat Reader since it crashes when installing. See bug 5314.
svn path=/trunk/; revision=55362
- Fix bugs in HandleClassEndpoint, HandleClassInterface which always set direction device to host instead of relying to the transfer flags provided
- Allow setup packets w/o a data stage
svn path=/branches/usb-bringup-trunk/; revision=55360
- Implement HidP_GetUsagesEx
- HidP_GetUsagesEx uses HidP_GetUsages with undefined usage page
- Required for hid usb support
- Check if there is a maximum set. In that case verify if a usage maximum has been set and apply it to the currnt usage. Fixes asserts while usb composite device installation (keyboard)
svn path=/branches/usb-bringup-trunk/; revision=55357
- Implement set idle request. The device should only send data when there is actual data. May also fix the mouse debug flood when mouse is ejected
- Not yet supported in OHCI
- Add missing constants
svn path=/branches/usb-bringup-trunk/; revision=55356
- Don't check for the correct parent in IopActionInitChildServices
- This function is also used to load drivers later for devices enumerated early in boot (before we have access to the disk) and we want it to run for all devices on the system, not just those that are immediate children of the root node
- Fixes broken PnP in 3rd stage
svn path=/branches/usb-bringup-trunk/; revision=55355
Implement IoVolumeDeviceToDosName(), taking advantage of newcomer in the branch, MountMgr :-).
This implementation will in fact don't work as MountMgr doesn't implement that part... But the day it's ready, this function will be!
svn path=/branches/usb-bringup-trunk/; revision=55354
- Rewrite hidparser so that it support multiple top level collections
- Add support for flat collection context meaning all context structures are aligned in after each other. The reason this is required is that usermode hid.dll will access the same structure and thus can't use kernel pointers. User mode hid.dll is used to support keyboard with custom keys (for example search key, email key etc)
svn path=/branches/usb-bringup-trunk/; revision=55353
- Missed a fix from last commit
- Wait for the device status change work item to complete
- The USB stack is now properly constructed for USB booting
svn path=/branches/usb-bringup-trunk/; revision=55339
- Start support for multi top level hid collections
- Not yet full implemented
- Required for proper usb composite support
svn path=/branches/usb-bringup-trunk/; revision=55332
- Create PDO earlier so ACPI can be loaded earlier in boot
[HIVESYS]
- Create critical device database with required devices for USB boot
[NTOSKRNL]
- Read the CDDB and install devices that are critical for boot
- This implementation won't be 100% correct until a PnP manager rewrite but it should work well enough for our needs
- Not complete and disabled atm
svn path=/branches/usb-bringup-trunk/; revision=55328
- Add function to append interface number
- Append function number to BusQueryDeviceId / BusQueryInstanceId
- USBCCGP is now properly enumerated and its child device start to get installed
svn path=/branches/usb-bringup-trunk/; revision=55326
- Fix bug while scanning configuration descriptor
- Store interface list in the PDO device extension
- Display interface numbers when dumping function descriptor
- Fix a few bugs while selecting the configuration for the PDO
svn path=/branches/usb-bringup-trunk/; revision=55325
- Pass the interface number in the request when issuing hid get report descriptor
- Fixes wrong report descriptors being obtained
svn path=/branches/usb-bringup-trunk/; revision=55322
[SMSS2]: Implement all the required registry configuration parsing functions. KnownDLLs, DosDevices, PageFiles, Subsystems, ExcludedKnownDLLs, PendingFileRenameOperations, ObjectDirectories, Environment keys are all processed and put into lists. Other than creating the object directories and setting the environment variables, though, no other work happens -- but we do DPRINT1 what should happen.
svn path=/trunk/; revision=55319
1. Belief that Ob is perfect.
Fix a major bug which allowed user-mode applications to get kernel handles if they so requested -- of course, they woudl then be completely unable to use such handles. This pattern is seen in Rtl code which we share, and where the intent is to give kernel kernel handles, and user user handles, so OBJ_KERNEL_HANDLE is unconditionally used, which in NT had the right effect. For us though, it gave unusable user-handles. This had the direct effect of completely breaking RtlQueryRegistryValues from user-mode if the TOPKEY or SUBKEY flags were used.
svn path=/trunk/; revision=55318
- Fix selection of the active partition
- Running 1st stage setup to a USB drive now results in a bootable USB drive that successfully runs FreeLoader which can load the ROS kernel, HAL, and other critical boot executables from the USB drive but ROS fails early in boot after FreeLoader hands control to the kernel
svn path=/branches/usb-bringup-trunk/; revision=55316
- Handle SRB_FUNCTION_SHUTDOWN successfully (failing it results in a stack overflow due to a bug in disk.sys)
- Fixes the crash during shutdown after using a USB drive
svn path=/branches/usb-bringup-trunk/; revision=55315
- Formatting fixes
[TXTSETUP.SIF]
- Boot load certain USB drivers in 1st stage for eventual support for installing from USB
svn path=/branches/usb-bringup-trunk/; revision=55309
- Fix the ordering of disks in the 1st stage setup list
- Search for the active partition on the selected install disk instead of the first disk
svn path=/branches/usb-bringup-trunk/; revision=55299
- Enable device as pci bus master
- Fixes hanging of Vmware USB EHCI controller
- Revert changes from 55293 from usb_queue
- Currently crashes when usbstor wants to receive descriptors
svn path=/branches/usb-bringup-trunk/; revision=55294
- Update async address everytime a new queue head is added as specified in EHCI spec section 3.2
- Add more checks
- Vmware EHCI not yet working
svn path=/branches/usb-bringup-trunk/; revision=55293
- Log files which are opened when the eventlog service is started are permanent files and will only be closed when the service is stopped. Other log files are closed when their handle is closed.
- Opening a non existing backup log file must fail.
- Opening an existing backup log files opens the file for reading only.
svn path=/trunk/; revision=55279
* Import cor.idl, cordebug.idl and metahost.idl from Wine.
* Remove the now unneeded cor.h.
* Update corerror.h, corhdr.h, mscoree.idl and winsxs.idl from Wine.
* Update the cmake and rbuild files to reflect the changes.
svn path=/trunk/; revision=55272
- Implement counting of all interface descriptors
- Store device descriptor and configuration descriptor in pdo device extension
- Store all interface descriptors for an composite audio device
- Implement parsing and constructing a special configuration descriptor for each individual device function
- Implement URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE for device descriptor and configuration descriptor
- USBGCCGP now receives select configuration request
- Tested in XP + Ros USB Stack + USB Audio Device
svn path=/branches/usb-bringup-trunk/; revision=55261
- Use Function index than interface number. Fixes invalid hardware ids
- Fix construction of compatible id
- USB Audio device now installs on XP when usbccgp is used
- Now asserts in sb-bringup-trunk\drivers\usb\usbccgp\pdo.c:343) PDO_Dispatch Function f not implemented, which is implemented next
svn path=/branches/usb-bringup-trunk/; revision=55255
- Partial sync to wine 1.3.37 without the ComCtl32 diff applied. This fixes the hangs and the exceptions during testing. Researching DrawFocusRect issues. Please Developers, note any information for the diff other than what is posted on svn, also this is open to anyone to be synced.
svn path=/trunk/; revision=55254
- Implement counting interface descriptors
- Fix allocating interface list
- Fix multiple bugs when copying interface information
- Implement support function to dump function descriptor
- Fix multiple bugs when creating compatible / hardware id string
- Implement legacy enumerator, which will be used for HID composite devices
- Implement special enumerator for audio devices
- Display static GenericCompositeUSBDeviceString, needs to be read from registry in order to be MUI aware
- Device initializes and device wizard pops up
- Tested in XP with Ros USB stack + USB Audio Microphone
svn path=/branches/usb-bringup-trunk/; revision=55253
- Rewrite GetDeviceIds function
- Don't rely on hardcoded constants when building the device id strings
- Don't corrupt the device id string when building the instance id string
- Fix bug in GetUsbStringDescriptor which read beyond the allocated string when copying the result.
svn path=/branches/usb-bringup-trunk/; revision=55238
- Fix initialization bugs for EHCI controllers
- Try again to release ownership of low-speed devices after reset
- Wait for the port reset to complete
svn path=/branches/usb-bringup-trunk/; revision=55232
For your unique, viewing and executing pleasure..
For one time only....by popular demand....
The one...
The only...
The unforgettable, unforgivable...
Meanest, baddest, piece of code around...
He's back..... with a vengeance...
The ultimate...
Mega...
Uber..
Amazing...
HACK
OF
DOOOOOOOOOOOOOOOOOOOOOOOOOOOOOM
</applause>
svn path=/trunk/; revision=55227
- Set the correct transfer direction value in the CBW
- Fixes the infamous system hang that occurred when writing to a USB drive
svn path=/branches/usb-bringup-trunk/; revision=55223
- Implement querying device relations for FDO
- Implement creating device objects for each discovered function
- Invalidate device relations after the child pdo have been created
- Implement PDO device relations, most of query id, query device capabilities, start device
- USBCCGP should now initialize and create the child pdos
- Next is device control handling
- WIP, untested
svn path=/branches/usb-bringup-trunk/; revision=55219
- Merge r55212 and 55215
- Add a temporary hack to allow testing installation on a device not bootable by the BIOS (like USB drives in VirtualBox)
- USB devices now show up as installation targets during setup but attempting to install onto them results in setup hanging due to bugs in the USB code
svn path=/branches/usb-bringup-trunk/; revision=55217
- Allow removable media to be selected as an installation target
- Fix broken unpartitioned space calculation if the first partition starts below the disk's track size (such as a 1MB aligned partition)
svn path=/trunk/; revision=55215
- Fix an off-by-one bug in the drive letter assignment code that prevented the 4th partition on a disk from being assigned a drive letter
svn path=/trunk/; revision=55212
- Query bus interface and check if USBC_DEVICE_CONFIGURATION_INTERFACE_V1 is supported. This interface is implemented by attached usb filter drivers and is used to enumerate functions of the composite usb device
- Implement enumeration of function by using usb interface association descriptors and by the USBC_DEVICE_CONFIGURATION_INTERFACE_V1
- Needs audio legacy method and union function descriptors to be fully functional
- WIP, not yet tested
- Fix build with mingw by declaring _DISK_GEOMETRY_EX outside the function
svn path=/branches/usb-bringup-trunk/; revision=55197
- Start implement USB Composite generic parent driver which is used for USB composite devices
- Start implement FDO initialization, needs to implement parsing of usb interface assocaition descriptor to complete FDO initialization
svn path=/branches/usb-bringup-trunk/; revision=55195
- Implement IRP_MN_REMOVE_DEVICE for FDOs and PDOs
- USB mice will now work after being disconnected then reconnected
svn path=/branches/usb-bringup-trunk/; revision=55194
- Multiple the scroll value by WHEEL_DELTA (120) like i8042prt does
- Scrolling with USB mice works now
- Disable debugging
svn path=/branches/usb-bringup-trunk/; revision=55191
- Properly dismiss the enable status changed interrupt to avoid an interrupt storm after a device is disconnected
svn path=/branches/usb-bringup-trunk/; revision=55189
- Fix GetPortStatus() and remove the cached status stuff (except for reset that we have to cache because the EHCI spec has no port reset complete bit)
svn path=/branches/usb-bringup-trunk/; revision=55188
- Revert r55167 now that OHCI is fixed
- USB drives attached to an OHCI controller before boot are now enumerated without a reconnect needed
svn path=/branches/usb-bringup-trunk/; revision=55187
- Remove the hacky way of determining if a device connect occurred (prone to all sorts of race conditions) and just always create a device since the only reason we reset right now is for a device connect
svn path=/branches/usb-bringup-trunk/; revision=55186
- Fix and enable the proper GetPortStatus implementation
- Remove the old hacked cached port status mess
svn path=/branches/usb-bringup-trunk/; revision=55185
- Create DEVICEMAP\VIDEO key with proper length. Fixes a bug exposed as "Arwinss unable to change resolution".
See issue #6838 for more details.
svn path=/trunk/; revision=55183
- Fix StartController() to perform initialization according to OHCI spec
- Fixes the infamous OHCI initialization hang on real hardware
svn path=/branches/usb-bringup-trunk/; revision=55181
- No need to turn off interrupts
- Check if bios is active
- Check for timeouts when resetting host controller
svn path=/branches/usb-bringup-trunk/; revision=55171
- Don't turn off interrupts before setting the OHCI_OWNERSHIP_CHANGE_REQUEST bit because it prevents the SMM driver from receiving the interrupt that tells it to give up ownership of the host controller
- This fix should be merged to Haiku also which has the same bug
svn path=/branches/usb-bringup-trunk/; revision=55170
- Add debug trace
[USBOHCI]
- Implement proper GetPortStatus
[USBHUB]
- Reset all connected ports before sending first SCE
- USB Devices present before booting are now detected with OHCI controller. EHCI code is present but not yet activated
svn path=/branches/usb-bringup-trunk/; revision=55167
- Rewrite pending SRB handling and change some behavior of the IRP queue
- The caller is no longer responsible for checking whether it can call USBSTOR_QueueNextRequest; frozen IRP queue and pending SRB are both handled for them
- It's no longer required for the caller of USBSTOR_QueueTerminateRequest to know whether the SRB was active (which was impossible before when handling a cancellation)
- Many potential race issues with IRP cancellation are eliminated
- Debugging hung SRBs is much easier now that pointer to the active one is stored in the FDO
svn path=/branches/usb-bringup-trunk/; revision=55157
Finally add the long awaited Mount Point Manager (aka mountmgr).
It's not complete yet, but will do most of the job it's been designed for.
What's missing is some dos volumes handlers, complete database support (local - registry - is complete, remote - files - is not).
It handles NTFS properties like reparse points.
It also handles devices with drive letters and those without drive letters (by using their unique ID).
Devices removal/arrival is detected through notifications (might be an issue).
Some work will have to be done in storage stack to fully support it.
Most of its IOCTL have been implemented (it's possible, for example, to notify a volume arrival through them, in case notifications don't work).
There's still some work to do on it to have it complete and fully implemented.
Enjoy!
svn path=/branches/usb-bringup-trunk/; revision=55156
- Fix bugs introduced in 55134, 55135
- USB Mass Storage devices should now automatically install again
svn path=/branches/usb-bringup-trunk/; revision=55147
- Fix cancellation for IRPs that have already been dispatched for processing by IoStartNextPacket
- Don't complete IRPs with the IRP list lock held
- Clear the cancel routine before completing the IRP
svn path=/branches/usb-bringup-trunk/; revision=55138
- Check if the device is a composite device
- Report USB\COMPOSITE as compatible id when a usb compsite device is detected
svn path=/branches/usb-bringup-trunk/; revision=55134
- Disable VS11 warning about cast between different function classes (IO_DPC_ROUTINE to KDEFERRED_ROUTINE) where needed
svn path=/trunk/; revision=55129
- Fix an if condition in VfatCreateFile causing opening a volume to always return access denied
- Fix some DPRINT issues
- Powered by VS11
svn path=/trunk/; revision=55127
- Use the same lock in the IUSBQueue as in the IDMAMemoryManager
- add debug traces (default off)
svn path=/branches/usb-bringup-trunk/; revision=55110
- Compute the frame interval correctly
- Fixes a deadlock on real hardware after enabling interrupts
svn path=/branches/usb-bringup-trunk/; revision=55094
- ReadProcessMemory/WriteProcessMemory only write to *lpNumberOfBytesRead/Written if user-mode passed in the parameter, as its an optional argument in Win32, but not in NT. Instead, use a local variable. This means that anyone calling ReadProcessMemory/WriteProcessMemory in ReactOS before with a NULL output argument (totally valid) was getting an error before!
- WriteProcessMemory actually returns STATUS_ACCESS_VIOLATION in a few cases, even if it's defined as a BOOL function. Code on Google shows major applications depending on this, which we weren't doing.
- Rewrite InitCommandLines to be much simpler. No normalization or copying or ANSi/OEM logic is needed.
- GetProcessAffinityMask should use the BaseStaticServerData from CSRSS instead of querying system information each time.
- GetProcessShutdownParameters and SetProcessShutdownParameters should use the LPC status code from CSRSS, not the LPC API status code.
- GetProcessWorkingSetSize now calls GetProcessWorkingSetSizeEx.
- Implement GetProcessWorkingSetSizeEx.
- SetProcessWorkingSetSize now calls SetProcessWorkingSetSizeEx.
- Implement SetProcessWorkingSetSizeEx.
- Acquire the required privilege in SetProcessWorkingSetSize(Ex).
- Fail with correct status code in SetProcessWorkingSetSize(Ex).
- GetExitCodeProcess should check if this is a VDM process and get the exit code that way.
- GetStartupInfoW should not fail if the input is NULL. It should crash.
- GetStartupInfoW was not filling out the lpReserved field, which should contain the ShellInfo buffer.
- GetStartupInfoW was always setting standard handles -- it should not do so if those are console handles.
- GetStartupInfoA was not thread-safe.
- GetStartupInfoA was assuming all Unicode->ANSI conversions will be successful.
- GetStartupInfoA was not filling out lpReserved either.
- ExitProcess was not using SEH and was not using the PEB lock.
- TerminateProcess was not setting ERROR_INVALID_HANDLE last error code.
- FatalAppExitA was not using static TEB buffer, and was always assuming success.
- FatalAppExitW was doing some sort of bizarre hack. It now raises as a hard error as it should.
- FatalExit now displays a debugger input interface on checked builds, just like Windows.
- SetPriorityClass now tries to acquire the real time privilege when needed, and handles failure to do so.
- GetProcessVersion rewritten to be cleaner and simpler.
- Annotate and reformat functions where needed.
- Rename lpfnGlobalRegisterWaitForInputIdle to UserWaitForInputIdleRoutine
- GetProcessPriorityBoost is now BOOL-safe.
- IsWow64Process now sets NT error code using only one API.
- CommandLineStringA/W -> BaseAnsiCommandLine/BaseUnicodeCommandLine.
svn path=/trunk/; revision=55092
- Don't send removal IRPs to device nodes already pending removal
- USB device removal and reinsertion works now
svn path=/branches/usb-bringup-trunk/; revision=55087
- Fix a broken check that resulted in freeing the same device object twice
- Enable the IoDetachDevice call in usbstor now that the kernel bug is fixed
svn path=/branches/usb-bringup-trunk/; revision=55086
- Fix IntReadConsoleOutputCharacter to copy the correct count of characters. Its 3rd parameter is a character count and not buffer size.
- Should fix infinite loop when kernel32:console test runs
svn path=/trunk/; revision=55081
- Implement device disconnect indication for usbehci and usbohci
- Implement device removal for FDOs and PDOs in usbstor and usbhub
svn path=/branches/usb-bringup-trunk/; revision=55080
- Load the disk class for USB drives in 1st stage
- They don't show up on the partition page due to some usetup stuff that needs to be changed
svn path=/branches/usb-bringup-trunk/; revision=55076
- Prevent an infinite loop in CdfsDeviceIoControl if the the verify request is successful but IoCallDriver keeps returning STATUS_VERIFY_REQUIRED
svn path=/trunk/; revision=55057
- Add a class2 hack to recognize and assign drive letters to storage devices added while the system is running
svn path=/branches/usb-bringup-trunk/; revision=55056
- Add Microsoft Mice Device Description
- fixes hid device entries where instead of device description the device id is displayed
svn path=/branches/usb-bringup-trunk/; revision=55054
- Add usbd to bootcd because usbohci depends on it
- Make device interface creation failure a non-fatal error so the port drivers start successfully in 1st stage
svn path=/branches/usb-bringup-trunk/; revision=55034
- Create a branch to do a proper merge of USB work from a trunk base instead of from cmake-bringup
- In the future, DO NOT under any circumstances branch another branch. This leads to merge problems!
svn path=/branches/usb-bringup-trunk/; revision=55018
- Implement IrqlToSoftVector() macro and use it in HalRequestSoftwareInterrupt, so that on amd64 the correct interrupt is triggered.
- Really start at the lowest vector for the IRQL in HalpAllocateSystemInterrupt
- Small code refactoring
svn path=/trunk/; revision=55014
- Add support for user name settings.
- Obtain user name / domain hints from registry.
- Pass user/domain info to the server if available.
- Add Czech translation.
svn path=/trunk/; revision=55008
- Use macros for calling IBanneredBar methods
- Remove some definitions from todo header because they are already in shlguid_undoc.h
svn path=/trunk/; revision=55004
- Fix some corner cases for settings parsing (empty values, values containing delimiters).
- If provided, take port number into account.
svn path=/trunk/; revision=55003
* Fix some memory leaks.
* Add some comments.
* Fix broken PcNewResourceSublist which ignored the MaximumEntries parameter.
* Add more checks.
svn path=/trunk/; revision=55002
- ReactOS now supports open and WEP encrypted networks (both ad-hoc and infrastructure) (WPA(2) will be supported later)
- Use the wlanconf tool to configure the WLAN adapter (after installing the XP driver for your WLAN adapter)
- "wlanconf -c <SSID>" connects to an infrastructure network. Adding the "-a" option connects to (or creates) an ad-hoc network. Adding "-w <WEP>" will enable WEP encryption using the supplied key.
- "wlanconf -s" will scan and display a list of the surrounding networks and various attributes like signal strength, SSID, BSSID, network mode, and supported rates
- "wlanconf" will display the current WLAN configuration details if the adapter is connected
- The DHCP service will detect network changes and refresh its state accordingly when associating with a new wireless network
svn path=/trunk/; revision=55000
- Give numeric identifiers to all dialogs
- Add file copy dialog to languages files where it was lacking
- Remove unused admin tools icon duplicate
svn path=/trunk/; revision=54997
- Don't use shell32 functions when processing DLL_PROCESS_ATTACH because shell32.dll can be initialized later. Fixes shell32+wininet debug spam at boot.
svn path=/trunk/; revision=54992
- Deallocate the process page directory when destroying its address space (removed in r48233 and now resurrected in a version compatible with ARM3)
- Fixes leaking system pages on each process exit (868 MC_SYSTEM pages were allocated just sitting at the desktop on livecd without the patch, only 187 with the patch)
svn path=/trunk/; revision=54988
- Load shell extensions from Directory key only for file system directories. Fixes New menu being added to special folders context menu (for example My Computer or Control Panel)
- Load shell extensions from AllFilesystemObjects only for files and directories
- Hardcode special folders attributes in proper place
svn path=/trunk/; revision=54985
* Fix a bug which closed an already invalid handle.
* Allow only general registry keys to be deleted.
* Do not close a key twice in the error case.
svn path=/trunk/; revision=54982
- Don't load shell extensions from * key for background context menu. Fixes#6668 (background context menu not working after installing Notepad++)
- Properly set pidlFolder argument in extensions Initialize function call
- Fix openwithmenu.rgs file creating two keys instead of one
svn path=/trunk/; revision=54977
[KERNEL32]: Implement BasepSxsCloseHandles, BasepReplaceProcessThreadTokens, BasepIsProcessAllowed, BasepCheckWebBladeHashes, BasepIsImageVersionOk which will be needed for the future CreateProcess re-implementation. These functions partly support SxS, Safer (Authz) and Application Certification features added in XP/2003. We also emulate support for Computer Server, Web Blade Server and Embedded ReactOS. The last function does correct image version checks to prevent invalid binaries from running.
[KERNEL32]: Implement BaseUpdateVDMEntry and BaseCheckForVDM using the new CSRSS messages (not implemented on the server-side yet). Stubplement BaseCheckVDM. These will be needed for future VDM-stub-support (primarly so we can run 16-bit installers).
[KERNEL32]: Implement BasepFreeAppCompatData, BasepCheckBadapp, and IsShimInfrastructureDisabled (exported as BaseIsAppcompatInfrastructureDisabled). These stub most of the required/exported application compatibility APIs, as long as someone sets DisableAppCompat in \\Registry\\MACHINE\\System\\CurrentControlSet\\Control\\Session Manager\\AppCompatibility.
svn path=/trunk/; revision=54975
- Add New menu to context menu handlers. Fixes regression introduced by r54959.
- Remove unwanted files
See issue #6823 for more details.
svn path=/trunk/; revision=54974
- Fix GetRosInstallCD - GetLogicalDriveStringsW returns drive paths, not letters.
- When building intl.cpl command line for unattended setup don't use %S - swprint interprets it as multi-byte string. Use "%s" instead. This bug caused yesterdays KVM problems.
svn path=/trunk/; revision=54971
* Initializes object attributes with correct handle attributes.
* Use the provided access rights and create options.
See issue #5934 for more details.
svn path=/trunk/; revision=54969
[NTDLL]: Use HANDLE instead of Win32 HKEY.
[NDK]: Add missing NtCreateProcessEx flags and some missing Ldr functions + missing RtlGetFullPathName_UstrEx.
[CSRSS]: Define two new CSRSS messages (not implemented): UpdateVdmEntry and GetVdmExitCode.
svn path=/trunk/; revision=54968
- The DHCP service now recognizes adapter configuration and media state changes without manual intervention
- Multiple bugs with a static IP configuration are fixed
- IpRenewAddress (ipconfig /renew) and IpReleaseAddress (ipconfig /release) no longer corrupt internal DHCP state
- Routes that cannot currently be resolved by ARP no longer become corrupted by the neighbor timeout
svn path=/trunk/; revision=54966
- If there is no default menu item, make Open With menu item the default, rename it to Open and disallow it to be submenu.
See issue #6801 for more details.
svn path=/trunk/; revision=54964
* Improve the way we set the debugging flags for debug and release build types.
* Don't generate debug info when we're in prefast mode and don't prefix with prefast when linking executables.
* We don't need to alter the c/c++ compiler variables in prefast mode anymore.
svn path=/trunk/; revision=54962
- Rewrite Control_DoLaunch. Now if cpl has only one applet, applet name/id is ignored
- When launching control panel applets always execute rundll32 instead of using static handlers from registry
svn path=/trunk/; revision=54960
* Apply a default date of 00/00/0000 when DriverVer is missing. Should fix installation of drivers which do not provide a DriverVer directive.
See issue #6676 for more details.
svn path=/trunk/; revision=54958
- Move folder properties to CFileDefExt class and share as much code as possible. Now changing file attributes is implemented.
- Fix a warning (patch by EDIJS - #6821)
- Load property sheet handlers from "Directory" key
svn path=/trunk/; revision=54948
- Display free and used space and capacity in bytes and gigabytes for all drives in drive properties dialog
- Format date and time in file properties according to system locale
- Initialize checkboxes in file properties dialog
- Improve polish translation
svn path=/trunk/; revision=54936
- Add "Description" string to resources. Don't show application file extension in Description field (for applications without version info). Patch by Edijs Kolesnikovis (#6819)
- Implement associated application icon loading in File Properties dialog
- Implement "Change" button in File Properties dialog
svn path=/trunk/; revision=54927
- Fix first chance exception if application has no strings in version info
- If Lang is not set use US English version info. Fixes WinRAR version info.
- Applications has Description filed instead of Opens With
- Load language in file version info
svn path=/trunk/; revision=54925
- Fix copying files in New menu. Fixes WinRAR new items.
- Don't show message if copying file failed because empty file is already created
svn path=/trunk/; revision=54923
- Simplify BITMAP_CopyBitmap, by using the SURFOBJ members directly instead of calling BITMAP_GetObject.
- Use RtlCopyMemory directly in BITMAP_CopyBitmap and remove IntSetBitmapBits
- Improve prototype of GreCreateBitmap(Ex) by using ULONG instead of INT for the bitmap dimensions (negative values are invalid)
- remove a duplicated type definition
svn path=/trunk/; revision=54922
- Move drive default property sheet pages to CDrvDefExt shell extension
- Read cleanup mgr path from registry
- Fix default extension being released in wrong moment
svn path=/trunk/; revision=54910
- Don't check exe files for Open With application
- If application is invalid display proper text
- Properly handle application parameters and quotes when parsing application command. Patch by EDIJS, improved by me.
See issue #6770 for more details.
svn path=/trunk/; revision=54906
- Simplify and fix getting file type description and icon in File Properties dialog
- Apply EDIJS's patch for scrolling text in location field on File Properties dialog (#6807)
svn path=/trunk/; revision=54905
- Make File Properties code safer and better
- Change version information when it user selects item in listbox (in previous version user had to double click)
- Show filename only in Open With dialog. Part of patch by EDIJS (#6772)
svn path=/trunk/; revision=54904
NTOSKRNL/LPC] Don't check if ReplyMessage is NULL inside SEH, since it's dereferenced later anyway
[WIN32K] Don't try to print uninitialized variables
Patch by Samuel Serapion
svn path=/trunk/; revision=54881
- Fix few leaks and possible buffer overflows in New menu code
- Add icons of folder and shortcut to New menu
- Display message if file can't be created
svn path=/trunk/; revision=54848
- Rewrite Open With menu and dialog
- Load all applications
- Use treeview with Recommended and Other programs
- Don't allow duplicates
- Load registry keys in proper way
svn path=/trunk/; revision=54844
- Implement quering compatible ids
- Fix result status for quering instance id
- Fix bug in msmouse.inf
svn path=/branches/usb-bringup/; revision=54843
- Add new style SAL definitions (only dummys for now)
- Move old style SAL definitions to sal_old.h
- Convert annotations in sspi.h to new style
- Allow new style annotations for C++ again, old style annotations are not possible with C++ and gcc headers
svn path=/trunk/; revision=54839
- Add a ReactOS hack to let the hid stack initialize
- Add input.inf
- HID Mouse initializes and starts, now win32k needs some work to open the mice
svn path=/branches/usb-bringup/; revision=54838
- Fix creating instance id
- Print debug message
- Sync msmouse with head and add hid installation
- Needs input.inf written
- HID stack starts to initializes and then fails the to enable the device interface (/drivers/hid/hidclass/pdo.c:511), Logs show that IoGetDeviceObjectPointer() fails with STATUS_UNSUCCESSFUL
svn path=/branches/usb-bringup/; revision=54837
- Create a pesudo random instance id
- Fixes assert when plugin usb devices whose device descriptor don't provide a serial number
svn path=/branches/usb-bringup/; revision=54836
- Implement a HID parsing library, which is based on Haiku`s exellent HID Stack
- Implement HidP_FreeCollection, HidP_GetCaps, HidP_GetCollectionDescription, HidP_MaxUsageListLength, HidP_GetSpecificValueCaps, HidP_GetUsages, HidP_GetScaledUsageValue
- hidparse driver is now implemented enough to support a hid mouse
- Tested in VBox 4.1.4 + WinXP + ReactOS usbohci+ mouhid+ hidclass+ hidparse+hidusb
svn path=/branches/usb-bringup/; revision=54834
Complete RtlpDosPathNameToRelativeNtPathName_Ustr() rewrite by properly handling relative names.
This fixes several regressions brought by r54804 (see winetests).
This also fixes file system corruption when using directory functions.
This may also fix general file system corruption, so, please retest bug #6720.
svn path=/trunk/; revision=54820
- add module module type, which is basically a DLL without entry point and use it for typelibs
- get rid of custom targets for generating .tlb files and use source file dependencies instead
svn path=/trunk/; revision=54813
Comment out two series of tests untill a proper fix is available. Those lead to memory misuse in shell32.
This has been revealed by r54804.
Should fix both test bots.
svn path=/trunk/; revision=54811
- Create PDO for each top level collection found
- Use the specified collection index instead of the first
- add collection id to hardware id when the device has more than one top level collection, see http://msdn.microsoft.com/en-us/windows/hardware/gg487473 for details
svn path=/branches/usb-bringup/; revision=54808
- Fake status success for unimplemented IRP_MN_REMOVE_DEVICE
- Fix tons of bugs in the read report completion routine
- Implement function to re-use a complete report irp
- Use correct device object when invoking the mini driver's dispatch routine in the read function
- silence a few traces
- Mouse now works with with ReactOS USB stack + ReactOS HID stack (TBD: implement hidparse.sys)
svn path=/branches/usb-bringup/; revision=54806
- Partly implement IRP_MN_START_DEVICE for PDO
- PDO now completely initializes
- Remaining IOCTL to implement IRP_MJ_CREATE, IRP_MJ_CLOSE, IRP_MJ_FLUSH, IRP_MJ_READ for partial mouse support in hidclass
svn path=/branches/usb-bringup/; revision=54792
- Implement AddDevice routine for hidusb
- Fix bug in Hid_DispatchUrb, which returned not initialized status code
- Implement IOCTL_HID_GET_REPORT_DESCRIPTOR, IOCTL_HID_READ_REPORT
- Add support routines for reseting / aborting pipe, not yet used
- TBD: implement error handling
- hidusb now works in combination with a usb mouse (other hid devices such as keyboards will require more ioctl implemented)
- Tested in Vbox 4.1.4 + WinXP + ReactOS usbhid.sys + ReactOS usbmou.sys
- Testing procedure -> inject usb mouse after startup (needs mouse integration disabled -> thanks to timo for pointing this out)
svn path=/branches/usb-bringup/; revision=54781
- Silence a few traces
- Add a hack for handling URB_FUNCTION_CLASS_INTERFACE. The hid bus driver performs this request with zero buffer length, which is not valid. Needs more investigation
svn path=/branches/usb-bringup/; revision=54777
- Usage page of zero is not used, increment, the MouHid_ButtonUpFlags / MouHid_ButtonDownFlags array
- Mouse clicks now work
- Implement flushing of the hid report queue
- Driver now works in VBox 4.1.4 + WinXP
- Secondary mouse pointer does not move in VBox (either a Vbox bug / WinXP), tested with ms driver and the same results were reveiled
svn path=/branches/usb-bringup/; revision=54776
- Fix up / down button detection
- Fix move detection. Mouse changes are now detected
- Mouse does not yet work in Vbox, as mouclass driver is for unknown reasons not connecting to the mouhid, needs to be investigated
- Tested in VBox 4.1.4 + ReactOS mouhid.sys
svn path=/branches/usb-bringup/; revision=54775
- Fix a few bugs & race condition in the read report routine
- mouhid initializes and is able to read input reports
- button press / wheel state change is detected
- mouse move detection not yet working
svn path=/branches/usb-bringup/; revision=54774
- Implement mouse button change detection
- Implement support routine for dispatching mouse input data
- Allocate mdl for input report, not yet used
svn path=/branches/usb-bringup/; revision=54767
- Add stub hidusb driver
- Hidusb driver is reponsible to connect with the hidclass driver (not yet present) and connect hid framework with usb hid devices
svn path=/branches/usb-bringup/; revision=53500
- Don't leave DISPATCH_LEVEL while holding a spin lock acquired at DISPATCH_LEVEL
- Synchronize cancellation checking by acquiring the cancel spin lock
svn path=/branches/usb-bringup/; revision=52071
- Comment out getting usb device interface. It is currently unused and usbhub does not yet support it
- Forward pnp capabilities request to lower device object
- Fix compilation by Usurp
svn path=/branches/usb-bringup/; revision=52063
- Copy disk.inf from trunk
- Add upper layer filter partmgr when usb mass storage device is plugged in
- Usbstor now loads and starts up
- Currently stops at loading partmgr(not yet present)
svn path=/branches/usb-bringup/; revision=52039
- Check if the port is usb 2.0 controller. In that case call the Usb2.0 initialize function
- Prevents crash when used with usbohci
svn path=/branches/usb-bringup/; revision=52036
- Fix OHCI_ISO_TD structure. Fixes host system crashes in Windows XP
- Fix multiple bugs in isochronous transfer implementation
- Still not yet working, as the interrupt completion is not fired yet
svn path=/branches/usb-bringup/; revision=51998
- Implement function to retrieve isochronous head endpoint descriptor
- Implement function to retrieve current frame number
- Set isochronous descriptor flag for head endpoint
- Implement retrieve device status for devices
- Implement retrieve class status from device
- Partly implement isochronous descriptor handling in usb queue
- Start implementing isochronous transfers in ISUBRequest
- Code currently not tested as the Virtual Machine with XP + ReactOS usbohci driver brings down the host system when starting the iso transfers. Ironically it crashes in MS usbohci driver
svn path=/branches/usb-bringup/; revision=51957
- Set up periodic threshold (90 %)
- Add function to retrieve interrupt endpoints
- Add function to retrieve specific descriptors from interface. These are used by HID devices such as mice / keyboards
- Add function to retrieve interrupt interval
- Enqueue all endpoint descriptors at the end of the associated queue
- Only notify hardware of insertion when it is an bulk / control request
- Scan interrupt endpoint list to find the completed transfer descriptor
- Add debugging function to print out linked endpoint descriptors
- Interrupt transfers are now implemented.
- Tested in Windows XP SP3 + Vbox 4.04 + Microsoft 5-Button Mouse. The HID mouse installs, initializes and starts up. Unfortunately the mouse does not work as expected yet
svn path=/branches/usb-bringup/; revision=51922
- Remove dead code
- Silence traces
- Pass status & DoneHead as parameters to dpc routine
- Move IUSBRequest cleanup code into new function and use it for bulk / control transfer cleanup
- Fix bugs in AllocateEndpointDescriptor. It did not take the device address into account. It also did not respect the direction of the descriptor
- Implement support for bulk transfer requests
- Handle irp completion in CompletionCallback
- Tested in Windows XP SP3 + Vbox 4.04 + USB2.0 disabled + ReactOS usbstor + USB mass storage device
- OHCI Mass storage support is now also ready
- Next interrupt transfers
svn path=/branches/usb-bringup/; revision=51917
- Add glue code for supporting iso transfers
- Remove dead from Handle
- Remove broken asserts
- Add support for string descriptors
- Add support for class specific endpoint requests (Needs be ported to usbehci)
- Link to usbd driver
- Add support for retrieving string descriptor
- Rewrite configuration descriptor handling in IUSBDevice. New code is smaller, smarter and handles a lot more cases. Needs to be ported to usbehci
- Wrap usbdlib.h include in extern c macro, it has c linkage
- Control transfers should now work
- Need to implement support for isochronous / bulk / interrupt transfers until functional
- Tested with Bluetooth USB Stick (multi function, interrupt / bulk / control / isochronous) / USB Microphone (isochronous & control) in XP SP3
svn path=/branches/usb-bringup/; revision=51900
- Add sanity checks
- Preserve command status value when notifying the hc that a control / bulk endpoint was added
- Re-enable root hub notification interrupt when reset port has been completed
- Dispatch processing to USBQeueu when DoneHead event arrives
- Scan endpoints to find the logical endpoint which was completed by the hardware
- Signal completion to IUSBRequest by calling CompletionCallback
- Create a final transfer descriptor which is linked to the endpoint descriptor
- Control transfers now appear to be working (Device retrieves device descriptor / configuration descriptor and succeeds in setting device address)
- Configuration parsing code needs more work now (currently fails there due to invalid / unexpected configuration descriptor from device)
svn path=/branches/usb-bringup/; revision=51888
- Enable global power mode
- Wait untill reset is complete
- Clear reset complete bit when reset is done
- Enable port
- Reset port now works
- USBOHCI still hangs after adding first control request, needs more investigation
svn path=/branches/usb-bringup/; revision=51883
- Start implementing control transfers
- Move initialization of usb queue after the bulk / control head endpoints have been created
- Add interface functions to retrieve bulk / control head endpoint descriptors
- Add macros for setting transfer descriptors field (taken from Haiku)
- Partly implement IUSBQueue::AddUSBRequest for control / bulk transfers
- Create endpoint descriptor for control request and link setup descriptor to it
- Link setup descriptors to data descriptor / status descriptor
- WIP (needs fixes)
svn path=/branches/usb-bringup/; revision=51864
- Fix bug in calculating offset of status register
- Start implementing deferred processing routine
- Signal status change when new device is arrived
- Implement basic GetPortStatus
- Start implementing SetPortFeature, ClearPortStatus
- ResetPort not yet fully working, WIP
svn path=/branches/usb-bringup/; revision=51858
- Add check that controller is functional state
- enable interrupts after the controller has been started
- partly implement isr routine
svn path=/branches/usb-bringup/; revision=51852
- Start of OHCI support
- Based on new usbehci driver and Haiku USB Stack
- Driver initializes the controller and retrieve number of ports
svn path=/branches/usb-bringup/; revision=51851
- Pass memory manager to USBQueue object
- Fix bug in memory manager which did not check if an allocation equals page size
- Implement interrupt queue head array with frequencys of 1ms up to 32ms
- Store queue heads in the sync schedule array
- WIP
svn path=/branches/usb-bringup/; revision=51826
- Add error handling to USBSTOR_CSWCompletionRoutine for errors that can be recovered via reset of pipe/port/controller. Only pipe reset is attempted. WIP.
svn path=/branches/usb-bringup/; revision=51808
- Implement retrieving serial number from device
- Use serial number to format instance id and retrieve in StorageDeviceProperty requests
- Silence traces
svn path=/branches/usb-bringup/; revision=51770
- Add asserts
- Rewrite queue methods to accept the FDO only
- Fix multiple synchronization bugs
- Don't start next irp before current irp has completed
- Use contiouslogicalbytes blocks from srb
- Should fix race conditions
svn path=/branches/usb-bringup/; revision=51764
- Silence warnings
- Silence traces
- Add asserts
- Add code to detect usb reset in progress. In that case cancel the request
- Add more code to synchronize urb action
- WIP, still hangs are observed
svn path=/branches/usb-bringup/; revision=51759
- Start implementing error handling.
- On errors use a worker thread to attempt a recovery. If successful restart the operation that failed.
- If STALL_PID is received reset the pipe of the device.
- Not entered into code path yet. WIP.
svn path=/branches/usb-bringup/; revision=51754
- USBSTOR_SendRequest: The buffer for read/write may not be NonPagedPool, which is documented as a requirement for using MmBuildMdlForNonPagedPool. Also locking the buffers pages is also not an option as the routine is called at DISPATCH_LEVEL.
It so happens that Irp->MdlAddress is valid for read/write operations. Use it instead of procedure above.
- Add a sanity check to make sure the Mdl does describe the transfer buffer.
Fixes IRQL_NOT_LESS_OR_EQUAL bugcheck in windows. These changes also may fixed writing to device.
svn path=/branches/usb-bringup/; revision=51752
- Fix bug in read command, which uses wrong format. LBA address is stored in the CDB10 struct
- Don't build the mdl for nonpaged pool if the driver passes an mdl (i/o paging requests)
- Usbstor can now list disk contents and browse files when used in Windows XP
- Need to implement SCSIOP_WRITE to write files
svn path=/branches/usb-bringup/; revision=51694
- Handle SCSIOP_MEDIUM_REMOVAL
- Handle paging i/o requests. These request don't provide a data buffer in the srb, but the buffer is stored in the irp' mdl
- Fix the hack for unimplemented Mode Sense command
- Usbstor now completes initializes and receives read requests
- Still need to fix read request, as Windows XP fails to recognize the disk format, WIP
svn path=/branches/usb-bringup/; revision=51693
- Add a check at USBSTOR_FdoHandleStartDevice to make sure the device uses Bulk Transfers.
- Use macros for initializing the Urbs. The macros ensure that the proper fields of the URB are set correctly.
Fixes failing of getting device descriptor and getting devices BlockLength.
svn path=/branches/usb-bringup/; revision=51691
- Only get the string descriptors if they are available. Fixes crash when using usb mouse and keyboards in windows.
svn path=/branches/usb-bringup/; revision=51688
- Modify BuildBulkTransferQueueHead to support TransferBufferLengths larger than PAGE_SIZE * 5.
- Acquire a SpinLock before adding QueueHeads to AsyncList and PendingList.
- Dont request a new QueueHead for incomplete transfers in QueueHeadCompletion, as the memory for the just completed QueueHead has not been released yet. Doing so overwrites the m_TransferDescriptor[x] members with new address resulting in memory leaks. Instead request a new QueueHead after the QueueHead has been freed in QueueHeadCleanup.
- Fix a bug where a QueueHead was removed from the m_CompletedRequestAsyncList instead of the m_PendingRequestAsyncList.
- Temporary hackfix InternalCalculateTransferLength to return the TransferBufferLength. This hack will be removed as soon as possible.
- With these changes the hub and ehci driver allow viewing content of and transfers to/from usb disks.
svn path=/branches/usb-bringup/; revision=51684
- Save PortNumber in child device extensions as its needed when PNP request device capabilities.
- Handle IOCTL_INTERNAL_USB_SUBMIT_URB request by creating a new Irp and passing the Urb down to the miniport.
- Now working with our ehci driver, we at least see a usb driver and can browse directory in Windows, though doing so results in assert as ehci doesnt support transfers over 5 Pages yet. Fix coming soon.
svn path=/branches/usb-bringup/; revision=51672
- When clearing feature port reset, remove the flag from Change and if the port is hardware enabled set the enable flag in Status.
- When checking port status, if Change has any flags set an SCE request most be completed. Verified while writing usbhub driver in xp.
- Probably fixes a case where an endless loop of completing SCE requests.
svn path=/branches/usb-bringup/; revision=51642
- Implement constructing CompatibleIds string using device descriptor. However, if the Class of the device descriptor is 0, then Class, SubClass and Prot which make up this string must come from the Interface.
- Change Ids and Descriptions to Unicode Strings.
- Move the creating of Id strings to one place, CreateDeviceIds, and called it at device creation.
svn path=/branches/usb-bringup/; revision=51641
- Some devices implement a default Language, LangId of 0. Some do not. Use LangId 0x0409 (English) until LangId is implemented.
- Remove an unused variable.
svn path=/branches/usb-bringup/; revision=51622
- The lower level driver completes the SCE IRP whenever the change state has been modified for a port. When handling the SCE IRP completion only check for flags in change state. The Change flags must be cleared else the hub driver will get non stop SCE IRP completions.
- Allocate IRP from Pool vice calling IoAllocateIrp. Dont free the IRP in the completion routine as the port driver, oddly, frees them.
- GetUsbDeviceDescriptor: Remove use of MDL and use only buffer instead to make our new usbehci happy.
- When calling the interface routines, correctly use the BusContext returned from the interface instead of the RootHubPdo. This worked on windows as it just happened they were the same.
- Implement RootHubInitCallbackFunction, which only job currently is to send the first SCE IRP.
- For Start Device for child device objects fake success for now. Will be implemented later.
- Implement returning IRP_MN_QUERY_IDs, IRP_MN_QUERY_DEVICE_TEXTs and IRP_MN_QUERY_BUS_INFORMATION.
- Add basic handling for IRP_MJ_POWER.
- Misc code changes.
svn path=/branches/usb-bringup/; revision=51620
- Implement retrieving drive capacity
- Use constant from scsi.h instead of defining own format
- Don't reset returned parameters length to zero, as ioctl handler might set it
svn path=/branches/usb-bringup/; revision=51608
- Make DeviceId generation to match ms usbstor
- Don't hardcode the device type in USBSTOR_PdoHandleQueryHardwareId
- Don't hardcode device type in USBSTOR_PdoHandleQueryCompatibleId
- Hackfix generation of instance id
- Add comments
- Cleanup code
- Usbstor now receives ioctl from disk.sys
svn path=/branches/usb-bringup/; revision=51582
- Add UsbDeviceHandle to child device extensions structure to be passed with URB requests.
- Reimplement the Worker Thread DeviceStatusChangeThread called on SCE completion. Each SetFeature and ClearFeature resend SCE request.
Only create the usb child device if the PortStatusChange member of the device extensions was modified.
- Implement CreateUsbChildDeviceObject used for creating a deviceobject for the USB device and initializing it.
- Implement GetUsbStringDescriptor for getting DeviceId, TextDescription and InstanceId from USB Device.
- Move the initial QueryStatusChangeEndpoint to after the hub device receives start pnp.
- USBHUB driver is now back to the same functionality of previous version. Showing the device wizard for connected devices.
svn path=/branches/usb-bringup/; revision=51581
- Rewrite hardware id / instance id matching
- Implement support for compatible id
- UsbStor still not attached to disk.sys, needs more research on how to get this done
svn path=/branches/usb-bringup/; revision=51580
- Change parameter name for DeviceObject in functions to clearify which device object is to received IRPs.
- Fix a typo in GetPortStatusAndChange that caused the function to return nothing for status and change.
- Call QueryStatusChangeEndpoint to send the first SCE request in Query Bus Releations.
- Complete implementation of StatusChangeEndpointCompletion. Queue a work item for DeviceStatusChangeThread, which will be used to initialize the usb device and create related device objects.
svn path=/branches/usb-bringup/; revision=51576
- Don't free device descriptor if it failed to acquire it
- Don't move out of usb configuration array. Found by special pool
- Fix bug when storing interface information which lead to a overwrite
- Implement retrieving generic type for device
- Fix bugs in QueryDeviceId
- Implement querying hardware ids
- Implement querying instance ids
- With these changes, usbstor now initializes and create pdo, which is also enumerated
- Needs more code / fixes so that disk.sys attaches to usbstor
- WIP
svn path=/branches/usb-bringup/; revision=51575
- Invoke status change callback at passive level
- Fill out usb descriptor struct instead passing everything in char array
- Use 1 byte interrupt endpoint packet size for hub for now
- Fill in interface information when SelectConfiguration request is passed. Fixes sce callback and pool corruptions
- Return device descriptor in USBHI_QueryDeviceInformation
- Tested in WinXP with special pool enabled & overrun support
svn path=/branches/usb-bringup/; revision=51572
- Start work on reimplementing UsbHub driver.
- Implement SubmitRequestToRootHub, QueryStatusChangeEndpoint, QueryInterface, GetPortStatusAndChange, SetPortFeature and ClearPortFeature.Handle QueryBusRelations.
- Partially implement PNP handling for FDO. When starting the device get all the information about the RootHub the driver will need and enable Power on all ports.
- Partially implement PNP handling for PDO, QueryId and QueryDeviceText.
- WIP
svn path=/branches/usb-bringup/; revision=51569
- Store number of bytes transferred in the transfer descriptors
- Perform queue head completion when the door bell ring has been acknowledged. Fixes race condition between multiple irps in the async list
- Fix calculation of transfer length when the request is an bulk in operation
- Use EndPointDescriptor member to access transfer type / pid direction
- Use MmGetSystemAddressForMdlSafe to retrieve system address for urb buffer
- Fix check if first transfer buffer finishes on first size if the size is of page_size
- With these changes and little luck and good weather, usb mass storage devices have been seen to work in Windows XP SP3
- Code inspired of mjmartin usbehci driver and Haiku's usb stack
svn path=/branches/usb-bringup/; revision=51506
- Port URB_FUNCTION_CLASS_INTERFACE from mjmartin usbehci driver
- Fix typo in interface declaration
- Disable assert for now
- Return irp status pending when irp is added to the queue
- Fix bug in InternalGetPidDirection
- More work on the bulk transfers, not yet working
svn path=/branches/usb-bringup/; revision=51501
- Fix a type causing CommitIrp to fail.
- Add a sanity check in StatusChangeEndpointCallBack to check that a pending SCE irp is queued.
- Start Implementing Bulk Transfers. Needs more work.
svn path=/branches/usb-bringup/; revision=51493
- Set the NakCountReload to 0 in the QueueHead that is set in the Async register, as this is a dead QueueHead marked as halted and does not need it.
- Set the Async register in StartController. Note: The Async and Periodic registers can only be modified when the controller is stopped.
- Driver now works in Qemu.
svn path=/branches/usb-bringup/; revision=51491
- hub_controller.cpp: Change RtlSetBit and RtlClearBit to RtlSetBtis and RtlClearBits for Win2k compatibility.
svn path=/branches/usb-bringup/; revision=51488
- Implement retrieving device / configuration descriptor for usb devices
- Based on mjmartin usbehci driver
- Mass storage device found wizard now pops up (fails to install - WIP)
svn path=/branches/usb-bringup/; revision=51478
- Move error checking if controller reported an error inside the door bell ring check block
- Extend interface of IUSBRequest to include DeviceAddress, which is needed to retrieve configuration descriptor of newly set address
- Allocate CtrlSetup from nonpaged pool
- Release setup packet on cleanup
- Devices now receive an device address
- Currently asserts while retrieving configuration descriptor as this code path is not yet existant
*** Assertion failed: Urb->UrbHeader.UsbdDeviceHandle == NULL
*** Source File: d:\usb-bringup\drivers\usb\usbehci_new\hub_controller.cpp, line 1118
svn path=/branches/usb-bringup/; revision=51477
- Change interface to return real async queue head
- Set the async queue head register after the controller has been started
- Enable async queue in StartController
- Port DumpDeviceDescriptor from mjmartin usbehci driver
- Remove pseudo queue head from usb queue, instead use the real async queue head exported from IUSBHardwareDevice
- Get physical address for transfer data in BuildControlTransferQueueHead
- Retrieving device descriptor now ~works, currently stops at setting device address (needs more work)
svn path=/branches/usb-bringup/; revision=51476
- Check if the current request type is supported (currently only control is supported, bulk will be implemented soon)
- Fix bug in IUSBRequest::CreateQueueHead
- Code runs now until first device descriptor get request (async / periodic queue not yet enabled)
- mjmartin usbehci status not yet reached
- Let the fun now begin ;)
svn path=/branches/usb-bringup/; revision=51474
- Cache port status & port change settings because it appears that some ehci controllers do not store the status reset register bit correctly
- This commit is a temporary solutions, needs to be reworked
- Return correct status from HandleClassOther
- Handle IOCTL_INTERNAL_USB_SUBMIT_IDLE_NOTIFICATION to return status success
svn path=/branches/usb-bringup/; revision=51473
- Return the physical address of the async queue head in CUSBHardwareDevice::GetAsyncListRegister
- Remove superflous entries from queue head structure, they are processed within IUSBRequest class
- Remove USBHI_GetPortHackFlags, this function has been deprecated
- Add interface functions for IUSBRequest / IUSBQueue
- Callback into IUSBQueue when a hardware interrupt arrives
- Implement callback function to check for completed queue heads / free completed queue head depending on the Async Advance interrupt bit
svn path=/branches/usb-bringup/; revision=51466
- Create member for storing the request object
- Add interface function which is invoked when the queue head should be freed
- Add support functions which deal with completed queue heads
svn path=/branches/usb-bringup/; revision=51440
hub_controller:
- Implement StatusChangeEndpointCallBack called by HardwareDevice class when port status has changed on controller.
- Move Status Change Endpoint query code to IQueryStatusChageEndpoint as it is also needed by StatusChangeEndpointCallBack.
usb_request:
- Implement InternalCreateUsbRequest.
usb_queue:
- Implement CreateUsbRequest and AddUsbRequest
hardware:
- Implement GetAsyncListRegister and GetPeriodicListRegister.
- Implement SetStatusChangeEndpointCallBack for setting callback and context. Call the callback when a port status changes.
- Initialize the UsbQueue after creating the AsyncQueueHead, as the UsbQueue calls will call back with GetAsyncListRegister.
svn path=/branches/usb-bringup/; revision=51407
- Fix warning because comparing signed vs unsigned
- Implement function for retrieving the device descriptor
- Implement function for retrieving a configuration descriptor (including contained interface descriptor and endpoint descriptor)
- Cleanup interface for IUSBRequest:
- When caller initializes IUSBRequest with an IRP, then the operation mode is asynchronously. Therefore when the request is completed, IUSBRequest::ShouldReleaseRequestAfterCompletion will return true, which makes IUSBQueue call Release on IUSBRequest
- When the caller initializes IUSBRequest with an setup packet, the operation mode is synchronously. After submitting the IUSBRequest to queue, the caller should call IUSBRequest::GetResultStatus. This function will then block untill the operation has been completed. However, the caller needs to call Release() as those requests are not cleaned up by the IUSBQueue
svn path=/branches/usb-bringup/; revision=51406
- Initialize the MemoryManager only after allocating a CommonBuffer to pass to it.
- Create a QueueHead to put into the AsyncList Register.
svn path=/branches/usb-bringup/; revision=51402
- hub_controller: Implement Status Change Endpoint for RootHub.
Handling the URB can return STATUS_PENDING, as in the new SCE code. Check for this before completing the Irp.
Uncomment calls to PortStatus, SetPortFeature, and ClearPortStatus now that they are implemented.
- For function receiving a port number check that its not larger than the actual number of ports on the controller.
svn path=/branches/usb-bringup/; revision=51401
- Move USB_REQUEST_SET_FEATURE / USB_REQUEST_GET_FEATURE flags to header file.
- Remove QueueHead and Descriptor creation as its in UsbRequest.
- Move DMACommon Buffer allocation back to UsbHardwareDevice class.
- Implement Port Handling functions GetPortStatus, ClearPortStatus and SetPortFeature.
- Implement GetUSBQueue for returning pointer to UsbQueue and GetDMA to return DMAMemoryManager.
- Fix a typo in one of the defines for Port Register Flags.
svn path=/branches/usb-bringup/; revision=51397
- Use PQUEUE_HEAD as the Head of pending list and Async (Active) list vice using PLIST_ENTRY.
- Implement linking/unlinking a QueueHead to these Head QueueHeads.
- Implement chain linking/unlinking of QueueHeads. Thr plan being to used these functions during DMA operations to pull a number of QueueHeads from the pending list to place into the Async list for execution.
- Will look for optimization in these functions later.
svn path=/branches/usb-bringup/; revision=51390
- Use LIST_ENTRY in QueueHeads and Descriptors vice Next and Previous Pointers.
- Add functions to interface for setting AsyncListRegister and PeriodicListRegister.
- USBHardwareDevice: Initialize USBQueue when handling PNPStart.
- USBQueue: Allocate Common Buffer and use it to Create and Initialize DmaMemoryManager object.
- USBQueue: Implement CreateQueueHead and CreateDescriptor.
svn path=/branches/usb-bringup/; revision=51388
- Update interfaces with new methods needed for UsbHardWare class.
- Remove GetDmaMemoryManager as the DmaMemory will only be needed by UsbQueue class.
- GetDeviceDetails: Only fill in a parameter if its not null.
- Start implementing UsbQueue class.
svn path=/branches/usb-bringup/; revision=51386
- Implement IRP_MN_QUERY_DEVICE_RELATIONS for hub controller object
- Implement stub handler for URB_FUNCTION_CLASS_OTHER, URB_FUNCTION_SELECT_CONFIGURATION
- Partly implement URB_FUNCTION_GET_STATUS_FROM_DEVICE
- Return success from unimplemented USBHI_Initialize20Hub routine
- based on mjmartin usbehci driver
- Tested in Windows XP SP2
svn path=/branches/usb-bringup/; revision=51385
- Setup a default device descriptor for the root hub and initialize it with vendor & product id
- Partly implement URB_FUNCTION_GET_DESCRIPTOR_FROM_DEVICE, URB_FUNCTION_CLASS_DEVICE
- based on mjmartin usbehci
svn path=/branches/usb-bringup/; revision=51384
- Fix bug in CDMAMemoryManager initialization, which calculated the bitmap length wrong
- Create interface IUSBDevice, which will be used to abstract connected usb devices
- Implement support functions for the device interface.
- Implement USBHI_CreateUsbDevice, USBHI_InitializeUsbDevice, USBHI_GetUsbDescriptors, USBHI_RemoveUsbDevice, USBHI_GetExtendedHubInformation, USBHI_RootHubInitNotification, USBHI_SetDeviceHandleData, USBDI_GetUSBDIVersion, USBDI_IsDeviceHighSpeed
- Partly implement USBHI_QueryDeviceInformation
- Based on mjmartin usbehci
svn path=/branches/usb-bringup/; revision=51372
- Implement IDMAMemoryManager interface, with IDMAMemoryManager::Allocate, IDMAMemoryManager::Free
- Fix interface of IDMAMemoryManager
- Will be used by IUSBHardwareDevice
svn path=/branches/usb-bringup/; revision=51369
- Add reference count when the hub controller is created. Necessary to prevent the controller from getting deleted when the hub driver performs interface reference removes
- Implement IRP_MN_QUERY_ID, based on mjmartin ehci driver
- Fix bug in IRP_MN_QUERY_BUS_INFORMATION, it is supposed to return a PNP_BUS_INFORMATION not a simple guid
- Implement IOCTL_INTERNAL_USB_GET_DEVICE_HANDLE, IOCTL_INTERNAL_USB_GET_ROOTHUB_PDO, IOCTL_INTERNAL_USB_GET_HUB_COUNT based on mjmartin ehci driver
- Add interfaces for communicating with the hub driver
- Dispatch internal device requests not wmi requests (EHCI_Dispatch)
svn path=/branches/usb-bringup/; revision=51368
- Change VendorId and DeviceId to the same size as PciConfig members, PUSHORT.
- Add support function GetBusInterface.
- Implement GetDeviceDetails and ResetPort.
svn path=/branches/usb-bringup/; revision=51367
- Add flags for Port Status Control Register and remove structiures for Port Status Control Register.
- Remove USB Status Register and use the flags instead.
- Remove functions that are not used and never will be.
- Implement InterruptServiceRoutine and Deffered Procedure Routine.
- Partially implement port status change to detect device insert and removal.
svn path=/branches/usb-bringup/; revision=51366
- Add flags and structures needed for communicating with controller and handling schedules.
- Add support routines for modifying operational registers on controller.
- Implement getting the controller capabilties, starting and stopping the controller.
svn path=/branches/usb-bringup/; revision=51365
- Create Interface IDispatchIrp which is used to handle ioctl requests
- Partly implement IHubController interface
svn path=/branches/usb-bringup/; revision=51355
- Define tag for allocations
- Fixes assert hit in ReactOS
- Fix typo in IHubController interface declaration
svn path=/branches/usb-bringup/; revision=51353
- Fix IOCTL_GET_HCD_DRIVERKEY_NAME implementation
- Now needs IOCTL_USB_GET_ROOT_HUB_NAME to get further in usbview
- Tested in Windows XP SP2
svn path=/branches/usb-bringup/; revision=51350
- Build fix#1 for mingw
- Define cxa_pure_virtual which is required that gcc is aware that it should really use the libc++ instead of falling back to libc
svn path=/branches/usb-bringup/; revision=51348
- Implement CHCDController::Initialize, CHCDController::HandlePnp for PDO / FDO,
- Partly implement CHCDController::HandleDeviceControl
- Based on mjmartin usbehci sources
- Driver now startups and acquires pnp resources
- Fails in HandleDeviceControl with IOCTL_GET_HCD_DRIVERKEY_NAME when usbview is launched
- Tested in Windows XP SP2 + Vmware Server 2.0.2
svn path=/branches/usb-bringup/; revision=51343
- Create empty USB EHCI driver in c++
- Design & review the interfaces with mjmartin
- Create stubs for creating IUSBHardwareDevice / IHCDController classes
- Implement DriverEntry, EHCI_AddDevice and EHCI_Dispatch
svn path=/branches/usb-bringup/; revision=51335
- Add all CD options to "welcome.exe", modify its code a bit to support this.
This is all stuff which has already been done last year, see r46065.
svn path=/branches/ros-branch-0_3_13-clt2011/; revision=51078
Although the file manager didn't become fully usable with this patch, it works better than without and the patch doesn't seem to have negative side effects.
See issue #5503 for more details.
svn path=/branches/ros-branch-0_3_13/; revision=51066
[13:43] <smiley1_> fuck
[13:44] <smiley1_> INVALID_KERNEL_HANDLE ?!?
[13:45] <smiley1_> Caemyr: after my latest commit 5 tests end with this bugcheck
svn path=/branches/ros-branch-0_3_13/; revision=51040
In contrast to my previous commit, this should indeed be merged to Trunk, but please don't forget to get rid of the corresponding FreeLDR code as well then.
svn path=/branches/ros-branch-0_3_13/; revision=51038
- Set "Angelus_02_ROSWP.bmp" as the default wallpaper
- Add a shortcut to RApps to the Desktop
- Change the boot logo to update the copyright year. Done with GIMP this time as it was one of the few tools to create proper 4-bit RLE files.
This logo shall not be merged back to Trunk, because Aleksey wants to have another bitmap ready by the next release.
svn path=/branches/ros-branch-0_3_13/; revision=51037
This is also stuff, which was mostly done by Andrew Greenwood for FOSDEM last year. I just changed it for our needs.
svn path=/branches/ros-branch-0_3_11-clt2010/; revision=46065
Kudos for this go to Andrew Greenwood, I just scripted his way of creating the disc.
- Combining them also requires changing the Live-CD directory in the kernel to "live", which renders regular Live-CDs created in this tree unbootable.
svn path=/branches/ros-branch-0_3_11-clt2010/; revision=46059
This includes:
- Merging 45269,45270,45614,45618,45619,45822,45966.
- Hardcoding NtProductWinNt instead of NtProductServer as the product type. I didn't merge the new code for this as I'm not sure about its dependencies.
- Changing 1.bmp and 6.bmp for CLT2010.
svn path=/branches/ros-branch-0_3_11-clt2010/; revision=46055
- Replace our Japanese "Systema" font added for releases by "Droid Sans Fallback" from the Android project.
This font is licensed under Apache 2.0 license (notice included) and also offers us Chinese and Korean characters.
You have to copy "DroidSansFallback.ttf" from http://android.git.kernel.org/?p=platform/frameworks/base.git;a=tree;f=data/fonts to "modules/optional".
svn path=/branches/ros-branch-0_3_11/; revision=44305
IDS_LICENSE "This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.\r\n\r\nThis program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.\r\n\r\nYou should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA."
END
STRINGTABLE DISCARDABLE
BEGIN
IDS_TOOLTIP_PROP "Vlastnosti"
IDS_TOOLTIP_REFRESH "Obnovit"
IDS_TOOLTIP_HELP "Nápověda"
IDS_TOOLTIP_EXIT "Konec"
END
/* Hints */
STRINGTABLE DISCARDABLE
BEGIN
IDS_APPNAME "ReactOS Správce zařízení"
IDS_HINT_BLANK " "
IDS_HINT_EXIT " Ukončit pogram."
IDS_HINT_REFRESH " Obnovit seznam zařízení."
IDS_HINT_PROP " Zobrazit kartu vlastností pro vybranou položku."
IDS_HINT_HELP " Zobrazit nápovědu."
IDS_HINT_ABOUT " O ReactOS Správci zařízení."
IDS_HINT_SYS_RESTORE " Obnoví normální velikost okna."
@@ -9,56 +9,57 @@ LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL
/* Default settings */
STRINGTABLE DISCARDABLE
BEGIN
IDS_APPTITLE "ReactOS - Willkommen"
IDS_APPTITLE "ReactOS 0.3.14 - CLT 2012"
IDS_DEFAULTTOPICTITLE "ReactOS"
IDS_DEFAULTTOPICDESC "Willkommen in ReactOS.\n\nKlicken Sie auf ein Thema auf der linken Seite."
// IDS_CHECKTEXT "Dialog beim nächsen Start wieder anzeigen"
// IDS_CLOSETEXT "Beenden"
IDS_DEFAULTTOPICDESC "ReactOS ist ein modernes Open-Source-Betriebssystem, welches auf dem Design von Windows® XP/2003 basiert. Dazu gehört sowohl die volle Kompatibilität mit Windows-Anwendungen und -Treibern als auch eine ähnliche Benutzeroberfläche, damit sich die meisten Anwender sofort zurechtfinden. Der Quellcode des gesamten Systems ist frei verfügbar und steht größtenteils unter der GNU General Public License."
IDS_TOPICDESC0 "Installiert ReactOS auf ihrem Computer.\n\nBitte beachten Sie, dass Sie zur Zeit Ihren Computer mit der ReactOS-CD im Laufwerk neu starten müssen, um die Installation zu starten.\n\nAlternativ können Sie ReactOS problemlos in einer virtuellen QEMU-Maschine ausprobieren, wenn Sie den entsprechenden Menüpunkt auf der linken Seite wählen."
IDS_TOPICDESC1 "Möglicherweise möchten Sie ein Betriebssystem im Alpha-Stadium nicht auf Ihrem eigenen Computer testen oder es gibt Probleme bei der Installation. Daher haben wir ReactOS auf einer virtuellen QEMU-Maschine vorinstalliert, mit der Sie das Betriebssystem problemlos testen können, ohne dass es direkt auf Ihrem Computer installiert werden muss.\n\nEin Klick auf diesen Menüpunkt öffnet das QEMU-Paket in Ihrem ZIP-Archivprogramm."
IDS_TOPICDESC2 "Damit ReactOS so einfach wie möglich kompiliert werden kann, wurde das ReactOS Build Environment geschaffen. Dieses enthält die passenden Compiler-Versionen und alle nötigen Tools, um den gesamten ReactOS-Quellcode zu kompilieren.\n\nDie Windows-Version des Build Environments ist kompatibel mit Windows 2000, XP oder neueren Versionen. Sie wird über diesen Menüpunkt installiert.\nDie CD enthält auch das Build Environment für Unix-ähnliche Betriebssysteme, wie z.B. Linux oder Mac OS X.\n\nZusätzlich befindet sich auf dieser CD der Quellcode dieser ReactOS-Version in einer ZIP-Datei."
IDS_TOPICDESC3 "Die CD enthält auch den gesamten Quellcode dieser ReactOS-Version, welcher mit dem ReactOS Build Environment kompiliert werden kann.\nEin Klick auf diesen Menüpunkt öffnet ihn in Ihrem ZIP-Archivprogramm."
IDS_TOPICDESC4 "Die ReactOS-Website liefert viele weitere Informationen über das Projekt. Hier finden Sie die neusten ReactOS-Versionen und Neuigkeiten bezüglich der Entwicklung."
IDS_TOPICDESC5 "Durchsuchen Sie den Inhalt dieser CD."
IDS_TOPICDESC6 "Beendet das AutoRun-Programm."
END
/* Topic actions */
STRINGTABLE DISCARDABLE
BEGIN
IDS_TOPICACTION0 "<msg>Zur Zeit müssen Sie Ihren Computer mit der ReactOS-CD im Laufwerk neu starten, um die Installation zu starten.\n\nBITTE BEACHTEN SIE: Es wird dringend davon abgeraten, ReactOS auf einem Computer zu installieren, welcher wichtige Daten enthält!"
IDS_TOPICACTION1 "..\\ReactOS in QEMU\\ReactOS-0.3.14-CLT2012-QEMU.zip"
HKLM,"SYSTEM\CurrentControlSet\Services\MSIserver","Description",0x00000000,"Controls installation, maintenance, and removal of software packaged as an msi (Windows Installer)"
HKLM,"SYSTEM\CurrentControlSet\Services\MSIserver","Description",0x00000000,"Controls installation, maintenance, and removal of software packaged as an msi (Windows Installer)"
# We may temporarily use just the global defines, but this is not a solution as some modules (minihal for example) apply additional definitions to source files, so we get an incorrect build of such targets.
DPRINT1("Failed to open INF file: %ls\n",&lpSwitch[4]);
returnFALSE;
}
return(hSetupInf!=INVALID_HANDLE_VALUE);
returnTRUE;
}
VOID
@@ -104,6 +101,7 @@ ParseSetupInf(VOID)
&InfContext))
{
SetupCloseInfFile(hSetupInf);
DPRINT1("SetupFindFirstLine failed\n");
return;
}
@@ -111,6 +109,7 @@ ParseSetupInf(VOID)
sizeof(szBuffer)/sizeof(TCHAR),NULL))
{
SetupCloseInfFile(hSetupInf);
DPRINT1("SetupGetStringField failed\n");
return;
}
Some files were not shown because too many files have changed in this diff
Show More
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.