ReactOS 0.4.16-dev-287-g2d3f3a1
Todo List
Member _tWinMain (HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nShowCmd)

save previous shell application in config file

save previous shell application in config file

Member abort (void)
unimplemented
Member BackgroundWindow::WndProc (UINT nmsg, WPARAM wparam, LPARAM lparam)
Changing the PaintDesktopVersion-Flag needs a restart of the shell -> display a message box
Member BookmarkList::import_IE_favorites (struct ShellDirectory &dir, HWND hwnd)
read shell links
Module bridgeif
:
  • compact static FDB entries (instead of walking the whole array)
  • add FDB query/read access
  • add FDB change callback (when learning or dropping auto-learned entries)
  • prefill FDB with MAC classes that should never be forwarded
  • multicast snooping? (and only forward group addresses to interested ports)
  • support removing ports
  • check SNMP integration
  • VLAN handling / trunk ports
  • priority handling? (although that largely depends on TX queue limitations and lwIP doesn't provide tx-done handling)
Member BrowserNavigator::navigated (LPCTSTR url)
move this into DocumentComplete() ?
Member ChildWindow::WndProc (UINT nmsg, WPARAM wparam, LPARAM lparam)
Member DC_vCopyState (PDC pdcSrc, PDC pdcDst, BOOL To)
should aways be != NULL
Member DesktopBar::ControlResize (WPARAM wparam, LPARAM lparam)

Taskbar is at the left of the screen

Taskbar is at the top of the screen

write code for taskbar being at sides or top.

Taskbar is at the right of the screen

Member DesktopBar::ProcessHotKey (int id_hotkey)
implement all common hotkeys
Member DesktopBar::RegisterHotkeys ()
register all common hotkeys
Member DesktopBar::Resize (int cx, int cy)
general children resizing algorithm
Member DesktopBar::WndProc (UINT nmsg, WPARAM wparam, LPARAM lparam)
read desktop bar settings
Member DesktopDropTarget::OnDrop (FORMATETC *pFmtEtc, STGMEDIUM &medium, DWORD *pdwEffect)

Add the code to handle Copy

Add the code to handle Move

Member DesktopShellView::PositionIcons (int dir=1)
Member DesktopShellView::refresh ()
Member DesktopWindow::Init (LPCREATESTRUCT pcs)
use IShellBrowser::GetViewStateStream() to restore previous view state -> see SHOpenRegStream()
Member DesktopWindow::WndProc (UINT nmsg, WPARAM wparam, LPARAM lparam)
use IShellBrowser::GetViewStateStream() and _pShellView->SaveViewState() to store view state
Module dhcp4
:
  • Support for interfaces other than Ethernet (SLIP, PPP, ...)
Member Dialog::DoModal (UINT nid, CREATORFUNC creator, HWND hwndParent=0)
call Window::pretranslate_msg()
Member Dialog::DoModal (UINT nid, CREATORFUNC_INFO creator, const void *info, HWND hwndParent=0)
call Window::pretranslate_msg()
Member Entry::read_directory_base (SORT_ORDER sortOrder=SORT_NAME, int scan_flags=0)
_prescan_nodes should not be used for reading the start menu.
Member Entry::smart_scan (SORT_ORDER sortOrder=SORT_NAME, int scan_flags=0)
We could use IShellFolder2::GetDefaultColumn to determine sort order.
Member ExecuteDialog::cmd [MAX_PATH]
use class Dialog
Member FileChildWindow::activate_entry (Pane *pane)
enable using RETURN key accelerator
Member FileChildWindow::FileChildWindow (HWND hwnd, const FileChildWndInfo &info)

use OWM_ROOTED flag

Is not-explore-mode for FileChildWindow completely implemented?

Member FileChildWindow::jump_to_int (LPCTSTR url)
use fname
Member FileChildWindow::scan_entry (Entry *entry)
use modifyable sort order instead of fixed file system default
Member FileChildWindow::set_curdir (Entry *entry)
make configurable (This call takes really very long compared to all other processing!)
Member FindProgramDlg::CheckEntries ()
check all entries for existing targets, display a list of not working entries and ask the user for permission to delete them
Member GDI_InternalBezier (POINT *Points, POINT **PtsOut, INT *dwOut, INT *nPtsOut, INT level)
FIXME!
Module httpc
:
  • persistent connections
  • select outgoing http version
  • optionally follow redirect
  • check request uri for invalid characters? (e.g. encode spaces)
  • IPv6 support
Member IconCache::extract (LPCITEMIDLIST pidl, ICONCACHE_FLAGS flags=ICF_NORMAL)

limit cache size

limit cache size

Member IconCache::extract (LPCTSTR path, int icon_idx, ICONCACHE_FLAGS flags=ICF_HICON)
retreive "http://.../favicon.ico" format icons
Member IconCache::extract (LPCTSTR path, ICONCACHE_FLAGS flags=ICF_NORMAL)

limit cache size

limit cache size

Member InstallBootManagerAndBootEntries (_In_ ARCHITECTURE_TYPE ArchType, _In_ PCUNICODE_STRING SystemRootPath, _In_ PCUNICODE_STRING SourceRootPath, _In_ PCUNICODE_STRING DestinationArcPath, _In_ ULONG_PTR Options)
Split this function into just the InstallBootManager, and a separate one for just the boot entries.
Member IntCreateNewRegistryPath (PVIDEO_PORT_DEVICE_EXTENSION DeviceExtension)
HACK
Member IntGdiFillRgn (_In_ PDC pdc, _In_ PREGION prgn, _In_opt_ PBRUSH pbrFill)
Check parameters
Module iperf
:
  • implement UDP mode
  • protect combined sessions handling (via 'related_master_state') against reallocation (this is a pointer address, currently, so if the same memory is allocated again, session pairs (tx/rx) can be confused on reallocation)
Member IShellBrowserImpl::Exec (const GUID *pguidCmdGroup, DWORD nCmdID, DWORD nCmdexecopt, VARIANT *pvaIn, VARIANT *pvaOut)
implement IOleCommandTarget
Member IShellBrowserImpl::QueryService (REFGUID guidService, REFIID riid, void **ppvObject)
use guidService
Member IShellBrowserImpl::QueryStatus (const GUID *pguidCmdGroup, ULONG cCmds, OLECMD prgCmds[], OLECMDTEXT *pCmdText)
implement IOleCommandTarget
Member KiGetFeatureBits (VOID)
  • KF_VIRT_FIRMWARE_ENABLED 0x08000000 (see notes from Geoff Chappell)
  • KF_FPU_LEAKAGE 0x0000020000000000ULL
  • KF_CAT 0x0000100000000000ULL
  • KF_CET_SS 0x0000400000000000ULL
File lowpan6.c
: RFC 6775.
File lowpan6_common.c
: RFC 6775.
Member MainFrameBase::go_to (LPCTSTR url, bool new_window)
SDI implementation
Member MAKEFS_SUPPORT_DEFLATE
:
  • take TCP_MSS, LWIP_TCP_TIMESTAMPS and PAYLOAD_ALIGN_TYPE/PAYLOAD_ALIGNMENT as arguments
Member MDIMainFrame::Command (int id, int code)

There are even more menu items!

prompt for image file

store last directory per drive

Member MDIMainFrame::WndProc (UINT nmsg, WPARAM wparam, LPARAM lparam)
read paths and window placements from registry
Member MDIShellBrowserChild::jump_to_int (LPCTSTR url)
use fname
Member MDIShellBrowserChild::WndProc (UINT nmsg, WPARAM wparam, LPARAM lparam)
refresh shell child
Member MI_IS_MAPPED_PTE (PMMPTE PointerPte)
Make this reasonable code, this is UGLY!
Member NotifyArea::ProcessTrayNotification (int notify_code, NOTIFYICONDATA *pnid)

This is a fix for Windows Task Manager.

call only if really changes occurred

Member NotifyArea::read_config ()

read default setting from registry

read default setting from registry

Member NotifyInfo::modify (NOTIFYICONDATA *pnid)
compare icon
Member NtAllocateVirtualMemory (IN HANDLE ProcessHandle, IN OUT PVOID *UBaseAddress, IN ULONG_PTR ZeroBits, IN OUT PSIZE_T URegionSize, IN ULONG AllocationType, IN ULONG Protect)
HACK: pretend success
Member NtGdiGetRandomRgn (HDC hdc, HRGN hrgnDest, INT iCode)
FIXME This is not really correct, since we already modified the region
Member NtUserCreateWindowEx (DWORD dwExStyle, PLARGE_STRING plstrClassName, PLARGE_STRING plstrClsVersion, PLARGE_STRING plstrWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hWndParent, HMENU hMenu, HINSTANCE hInstance, LPVOID lpParam, DWORD dwFlags, PVOID acbiBuffer)
Allow passing plstrClassName as ANSI.
Member NtUserSelectPalette (HDC hDC, HPALETTE hpal, BOOL ForceBackground)
implement ForceBackground == TRUE
Member Pane::draw_item (LPDRAWITEMSTRUCT dis, Entry *entry, int calcWidthCol=-1)
not in every case time enough
Member PiUpdateDeviceState (_In_ PDEVICE_NODE DeviceNode)
Do not return STATUS_SUCCESS if nothing is changed.
Member QuickLaunchBar::AddShortcuts ()
perhaps also look into CSIDL_COMMON_APPDATA ?
Member RecentStartMenu::AddEntries ()
read max. count of entries from registry
Member RegDirectory::read_directory (int scan_flags=0)
This can also be done in the RegEnumValue() call if we dynamically adjust the return buffer size.
Module rfc7668if
:
  • further testing
  • support compression contexts
  • support multiple addresses
  • support multicast
  • support neighbor discovery
Member RtlLookupFunctionEntry (IN DWORD64 ControlPc, OUT PDWORD64 ImageBase, OUT PUNWIND_HISTORY_TABLE HistoryTable)
Implement HistoryTable
Member RtlpTryToUnwindEpilog (_Inout_ PCONTEXT Context, _In_ ULONG64 ControlPc, _Inout_opt_ PKNONVOLATILE_CONTEXT_POINTERS ContextPointers, _In_ ULONG64 ImageBase, _In_ PRUNTIME_FUNCTION FunctionEntry)
  • Test and compare with Windows behaviour
Member SdbMakeIndexKeyFromString (LPCWSTR str)
: Fix this for unicode strings.
Member SDIMainFrame::_split_pos
focus handling for TAB switching int _focus_pane; // 0: left 1: right
Member SDIMainFrame::WndProc (UINT nmsg, WPARAM wparam, LPARAM lparam)

read paths and window placements from registry

content of 'path' not used any more

Member ShellBrowser::MessageSFVCB (UINT uMsg, WPARAM wParam, LPARAM lParam)
never reached
Member ShellBrowser::OnDefaultCommand (LPIDA pida)
look for hidden or new subfolders and refresh/add new entry instead of opening a new window
Member ShellBrowser::refresh ()
Module smtp
:
  • attachments (the main difficulty here is streaming base64-encoding to prevent having to allocate a buffer for the whole encoded file at once)
  • test with more mail servers...
File snmp_asn1.c
not optimised (yet), favor correctness over speed, favor speed over size
Module sntp
:
  • complete SNTP_CHECK_RESPONSE checks 3 and 4
Member SNTP_CHECK_RESPONSE

: discard reply if any of the VN, Stratum, or Transmit Timestamp fields is 0 or the Mode field is not 4 (unicast) or 5 (broadcast).

  • >= 4

: to check that the Root Delay and Root Dispersion fields are each greater than or equal to 0 and less than infinity, where infinity is currently a cozy number like one second. This check avoids using a server whose synchronization source has expired for a very long time.

Member StartMenu::ActivateEntry (int id, const ShellEntrySet &entries)

launch in the background; specify correct HWND for error message box titles

If the user explicitly clicked on a submenu, display this folder as floating start menu.

Member StartMenu::AddEntry (const String &title, ICON_ID icon_id, Entry *entry)
speed up by using a map indexed by name
Member StartMenu::WndProc (UINT nmsg, WPARAM wparam, LPARAM lparam)

use TrackMouseEvent() and WM_MOUSEHOVER to wait a bit before opening submenus

do something similar to StartMenuRoot::TrackStartmenu() in order to automatically close submenus when clicking on the desktop background

Member StartMenuHandler::Command (int id, int code)

use printer start menu folder per default and allow opening "printers" cabinet window using the context menu

to be removed when network browsing will be implemented in shell namespace

exclude removable drives

Member StartMenuHandler::ShowSearchComputer ()
to be removed when SHFindComputer() will be implemented in shell32.dll
Member StartMenuHandler::ShowSearchDialog ()
to be removed when SHFindFiles() will be implemented in shell32.dll
Namespace This
  • missing conversion functions
  • multiplication functions
  • signed add, sub and multiply functions
Member ToolTip::add (HWND hparent, HWND htool, LPCTSTR txt=LPSTR_TEXTCALLBACK, LPARAM lparam=0)
Why is it neccesary to try both TTM_ADDTOOLW and TTM_ADDTOOLW ?!
Member TrayNotifyDlg::Refresh ()
refresh incrementally
Member TrayNotifyDlg::SetIconMode (NOTIFYICONMODE mode)
select treeview item at new position in tree view -> refresh HTREEITEM in _selectedItem
Member TreeDropTarget::OnDrop (FORMATETC *pFmtEtc, STGMEDIUM &medium, DWORD *pdwEffect)

Add the code to handle Move

Add the code to handle Copy

Member WebChildWindow::WndProc (UINT nmsg, WPARAM wparam, LPARAM lparam)