shell32 Export Master Table
What is it?
The shell32 master table is the checklist of shell32.dll exports that Windows programs and installers use for paths, icons, known folders and launching files with ShellExecute. Each row names an export, its category, its owning roadmap, whether it is done, and notes. It holds 482 rows and none is done: there is no shell32.dll today. Explorer's own shell host has its gates in the Explorer Shell Host roadmap, which consumes this table.
How does it work?
| Tier | Rows | What it covers |
|---|---|---|
| Tier 1 | 19 | Paths, icons and folders: ExtractIconExA/W, SHGetFileInfoA/W, SHGetStockIconInfo, LoadIconA/W, LoadImageA/W, DestroyIcon, SHGetFolderPathA/W, PathCombine, PathAppend, PathFileExists and CommandLineToArgvW |
| Tier 1b | 12 | ShellExecuteA/W, ShellExecuteExA/W and path helpers such as PathIsRelative, PathStripPath and GetFullPathNameA/W |
| Tier 2 | none | Families still to be split into exports: the folder browser, known folders v2, drag and drop, property sheets and file associations |
| Tier 3 | 451 | Every other named export, parsed from Wine's shell32.spec as a scaffold |
What the columns mean. Done is [x] only when a PE program can call the export and it behaves as documented, [/] when partial and [ ] when missing. Owner names the roadmap section that will implement it, or NO_OWNING_TODO.
Where the code stands.
- The PE loader's built-in import tables cover only
kernel32.dllandntdll.dll(pe.c), so ashell32import resolves to 0. - The
CommandLineToArgvWquoting rules are already implemented in the kernel ascmdline_to_argv()inenv.c(declared inenv.h), owned by the environment variables roadmap. It is a kernel primitive, not a callable shell32 export, so its row stays open. - The shell icon index maps (the fixed
shell32.dllandimageres.dllicon numbers) are owned by section 1 of the Win32 GDI and USER32 roadmap.
What are its interfaces?
| Interface | Status |
|---|---|
C:\Windows\System32\shell32.dll |
Planned |
| Tier 1 and Tier 1b exports | Planned; 0 of 31 done |
| Tier 3 exports | Planned; 0 of 451 done |
cmdline_to_argv(), the kernel decoder behind CommandLineToArgvW |
Shipped in the kernel, not exported |
How do I use it?
Before adding a shell32 export, find its row and give it a real owner. Two rows need care: LoadIconA/W also appear in the user32 table, deliberately, and GetFullPathNameA/W are kernel32.dll exports on Windows, so a program will import them from kernel32 rather than shell32. Refresh the table against a pinned Windows 11 shell32.dll export dump.
What is not implemented yet?
- Tier 1, owned by Shell and Icon API (
shell32.dll) - Tier 1b, owned by Win32 Shell Integration
- Tier 2 and Tier 3
How does it compare with Windows 11 and Linux?
On Windows 11, shell32 provides the SH* path and folder APIs, ShellExecute, icon extraction and the shell's icon index maps, and Explorer is built on it. Linux desktops use XDG user directories, .desktop files and xdg-open for the same jobs, and Wine reimplements shell32 for Windows programs. The Impossible OS plan keeps one owned row per export, with ShellExecute routed to its own file association engine.