| Home | Table of Contents | Please view with Internet Explorer (version 5.00 or higher) and enable scripting. For reasons, see Browsing This Web Site. |
As a condition of the Final Judgment in United States v. Microsoft, CA No. 98-1232, Microsoft is required to disclose “the APIs and related Documentation that are used by Microsoft Middleware to interoperate with a Windows Operating System Product”.
Among the outcomes of the present survey of Windows shell functions is a list of API functions that three important software modules are known to make accessible for use by other modules, and for each function a list of other modules that are known to use the function. These lists would seem well suited to a quick test of whether Microsoft’s API disclosure is credibly complete.
Of course, completeness must be assessed in the sense intended by the judgement. The aim is to extract from the survey’s lists each function for which all the following are true:
The ideal expectation is that no function in the survey should satisfy all these conditions. Note especially that the Joint Status Report on Microsoft’s Compliance with the Final Judgments, dated 3rd July 2003, reports to the court that “to identify the relevant interfaces, Microsoft developed new software tools and drew upon the expertise of more than 50 Windows software developers and program managers.” This seems intended to convey an impression of substantial work, perhaps even of thoroughness, specifically just to enumerate APIs for disclosure. It seems reasonable to expect that the ideal will be at least close to the reality.
Even if some few functions satisfy all the conditions, Microsoft surely has something to explain, if only that slight inaccuracies are inevitable, no matter how hard one works or how much care one takes. If hundreds of functions satisfy all the tests, which they do, then although no appeal to occasional error in good faith would be credible, much might be explained as Microsoft having applied some different interpretation, so that Microsoft enumerated APIs for disclosure by testing against very different conditions. Against that, since Microsoft doesn’t present any such conditions that it tested for, nor say anything in public that might help an assessment of its methods, one might reasonably wonder whether the omissions amount to “knowing, willful or systematic violations”.
To apply the first test to the survey is to ask which of the three shell modules (COMCTL32.DLL, SHELL32.DLL and SHLWAPI.DLL) that supply the surveyed functions qualify as components of a Windows Operating System Product. I contend that the only sensible answer is that all three do.
All three are distributed with all versions of Windows 2000 and Windows XP. The edition used for the survey is Windows XP Service Pack 1a, which certainly qualifies.
Not only are these shell modules distributed in the Windows package, but Microsoft has itself listed all three as core components of Windows, though admittedly for earlier versions of Windows than specified in the judgement. See for instance the MSDN Library from January 1997 for a list of Core Components given as an appendix to the Designed for Microsoft Windows NT and Windows 95 Logo Handbook for Software Applications. Curiously, this appendix does not persist in later descriptions of the logo requirements.
On the other hand, Microsoft has also listed two of these modules, namely COMCTL32.DLL and SHLWAPI.DLL, as core components of Internet Explorer. That Internet Explorer has privileged access to core components of Windows is, to many people, a good brief summary of how all this trouble started.
Perhaps the last word is given by the Settlement Program Interfaces that Microsoft has documented for compliance with the judgement. These include functions exported from each of these three shell modules.
Applicability of the second test is trivial. All functions in the survey are formally exported by the three shell modules in question. Each is therefore locatable and callable from any other module that knows what to locate and how to call. That Microsoft does not document all such functions as Application Program Interfaces or document how to use the functions (at all, let alone safely) does not mean that the functions are not APIs.
Thus, any function that is exported from any of the shell modules for this survey satisfies the first two tests. To apply the third test, examine the list of modules that are known to use the function. The present interest is with functions for which the list of known users includes even one module that is distributed not only with Windows but also with some other Microsoft product that qualifies as Microsoft Middleware.
If a function has no known users, it is eliminated. Most likely, the function is obsolete.
A function is also eliminated if all its known users seem to be distributed only with Windows. Specially prominent examples of such modules are COMDLG32.DLL, EXPLORER.EXE and SHELL32.DLL. Less prominent are PRINTUI.DLL, PROGMAN.EXE, SYNCUI.DLL and TASKMAN.EXE. These seven examples suffice for eliminating numerous shell functions as being in some sense internal to Windows.
An open question in my mind arises from the judgement’s definition of Microsoft Middleware as excluding any “software code described as part of, and distributed separately to update, a Microsoft Middleware Product”. Does this apply to modules that are redistributed with other products apparently only as setup tools, rather than as lasting elements of the installed product? Of particular interest among such setup tools is GRPCONV.EXE, because it uses surprisingly many undocumented shell functions. I have chosen to treat a function’s use by GRPCONV.EXE as an internal Windows matter, not as use that qualifies under the judgement.
Note that all the eliminations so far are generous to Microsoft’s compliance.
That a user is not known for some function does not mean that the function is not used. The known users obtained for the survey are those for which Microsoft distributes symbol files as customer support for Windows, and the modules listed as users of any one function are those that the symbol files show as formally importing the function. A function may be used in some way that does not generate the corresponding import symbol. Such other ways certainly are known, and some are arguably exotic: for instance, the SHLWAPI function EventTraceHandler is used by MSHTML.DLL because the former creates a named memory mapping in which to store the function’s address and the latter knows the name of the memory mapping. For the tables below, I leave such exotica alone, so that they do not count as usage even though they are arguably the most egregious examples.
What remains after the preceding eliminations is a list of functions each of which has at least one known importer that is distributed with some Microsoft product other than Windows. Moreover, it turns out that for every remaining function, at least one of the known importers is a module that is distributed with Internet Explorer (which I take to include Outlook Express), except for some few modules that support the Microsoft Network (MSN). Indeed, almost all the remaining functions are imported by either BROWSEUI.DLL or SHDOCVW.DLL, and a few more by MSHTML.DLL.
If anything, SHDOCVW is not just software code for Internet Explorer: it is the main software code for Internet Explorer. There is even a literal sense to this. Some users start Internet Explorer by running the program IEXPLORE.EXE, and some even consider that this program is the essence of the product. However, IEXPLORE has long been little more than a front end for executing SHDOCVW, and the way that this execution is arranged is that IEXPLORE calls a function named IEWinMain in SHDOCVW (exported as ordinal 101 and apparently, if unsurprisingly, not documented).
Another measure by which SHDOCVW is the essence of Internet Explorer is provided by Microsoft’s own advice on How to Determine Which Version of Internet Explorer is Installed, particularly where a “table lists the different versions of the Shdocvw.dll file and the corresponding versions of Internet Explorer”.
There may be more debate about BROWSEUI. For instance, as a rough analogue of SHDOCVW’s providing a sort of WinMain function for Internet Explorer, BROWSEUI has a function named SHParseIECommandLine (exported as ordinal 125 and apparently undocumented) that gets the job of parsing the IEXPLORE command line. However, BROWSEUI parses the command line for the ordinary Windows Explorer too, through the function SHExplorerParseCmdLine (exported as ordinal 107 and also apparently undocumented). On this matter, and many others, it behaves in part as a component of Windows and in part as a component of Internet Explorer. Is BROWSEUI one or the other, in terms of the judgement’s definitions, or is it both?
Perhaps the last word comes indirectly from Microsoft. If BROWSEUI is not a component of Internet Explorer, then presumably it is a component of Windows, so that its use of undocumented shell functions is an internal Windows matter and does not qualify for documentation under the judgement. But if this is so, then the functions that BROWSEUI exports and Internet Explorer calls (as with SHParseIECommandLine) ought to have been documented for the settlement—and none were.
The last test is whether the function is documented. A function’s status with respect to Microsoft’s documentation has no controversy. The judgement cites the Microsoft Developer Network (MSDN) specifically and the choice of reference for the survey is the January 2004 edition, already at least a year later than Microsoft’s supposed compliance. If a function was not documented by then, yet ought to have been, then Microsoft has a compliance problem to explain and put right—and the compliance authorities create a hostage for the future if they don’t explain the process in public.
All up, I count 363 shell functions as passing all four tests, so that they ought to have been documented by Microsoft but have not been. A large proportion are perhaps dismissable on the grounds that they repackage otherwise well-documented Windows API functions—but even after dismissing these, I still count 196.
The tables that follow show for each function one or more modules that are known to use the function and which I regard as sufficient to qualify the function for documentation under the judgement. These modules are represented according to the following key.
| B | browseui.dll |
| H | one or more Internet Explorer components whose names contain HTML or XML,
e.g., mshtml.dll, mshtmled.dll, msxml2.dll, msxml3.dll |
| I | one or more Internet Explorer components whose names contain IE, e.g.,
ieakeng.dll, iedkcs32.dll, msieftp.dll |
| M | one or more MSN core files, e.g., msmom.dll, msnmetal.dll, msnspell.dll |
| N | one or more Internet Explorer or Outlook Express components whose names
contain INET, e.g., inetcomm.dll, inetcpl.cpl, wininet.dll |
| O | one or more Outlook Express components whose names contain OE, e.g., msoe.dll |
| R | msrating.dll |
| S | shdocvw.dll |
| U | one or more Internet Explorer components whose names contain URL, e.g., url.dll, urlmon.dll |
| W | webcheck.dll |
| X | iexplore.exe |
Unless some argument exists that BROWSEUI.DLL and SHDOCVW.DLL (and to a lesser extent, MSHTML.DLL) are not components of Internet Explorer, which is in turn clearly cited as a Microsoft Middleware Product, one can only wonder at how Microsoft can possibly have omitted from the Settlement Program Interfaces more “shell and common controls” functions than it documented.
Microsoft documented 17 COMCTL32 functions as Settlement Program Interfaces. I count another 17 functions as omitted (and for one more, both the ANSI and Unicode forms ought to qualify but Microsoft documents only the Unicode form).
These missing functions are exported from the COMCTL32.DLL that shippred with Windows XP Service Pack 1a, are each used by at least one of the following three DLLs that were all distributed with that same version of Windows and with the roughly contemporaneous Internet Explorer 6.0:
yet were not documented by Microsoft as late as the January 2004 edition of the MSDN Library on CD.
Note, however, that they have all been documented subsequently. This post-settlement documentation was not done all at once, but as a process of apparently irregular updates. I have not been willing (even if able) to track this process in detail: doing so should be the (paid) work of the compliance authorities, even if Microsoft seems nowhere to have described this post-settlement documentation as rectifying any incompleteness of the original list.
| Undocumented Function | Importers | |
| AddMRUStringW | B | documented in 2004-2006 |
| CreateMRUListW | B | documented in 2004-2006 |
| DPA_Clone | BS | documented in 2005-2006 |
| DPA_CreateEx | W | documented in 2005-2006 |
| DPA_GetPtrIndex | BI | documented in 2005-2006 |
| DPA_LoadStream | BS | documented in 2005 |
| DPA_Merge | BS | documented in 2005-2006 |
| DPA_SaveStream | BS | documented in 2005 |
| DSA_DeleteAllItems | BS | documented in 2006 |
| DSA_DeleteItem | BS | documented in 2004-2006 |
| DSA_GetItem | BIS | documented in 2004-2006 |
| DSA_SetItem | BIS | documented in 2004-2006 |
| EnumMRUListW | B | documented in 2004-2006 |
| FreeMRUList | B | documented in 2004-2006 |
| ImageList_SetColorTable | B | documented in 2004-2006 |
| MirrorIcon | BS | documented in 2004-2006 |
| Str_GetPtrW | B | documented in 2004-2006 |
| Str_SetPtr | IS | only Unicode form documented for settlement; ANSI form documented in 2004-2006 |
Microsoft listed among the Settlement Program Interfaces 110 “shell functions”, almost all of which actually are implemented in SHELL32. Hundreds more SHELL32 functions remain undocumented, but I accept that all but 2 seem either to be used only internally within Windows or to be not used at all. Again, for one more function, Microsoft has documented only the Unicode form, even though both ANSI and Unicode forms surely qualify.
The functions shown below as missing from the Settlement Program Interfaces are exported from the SHELL32.DLL that shipped with Windows XP Service Pack 1a, are each used by at least the following DLL that was distributed with that same version of Windows and with the roughly contemporaneous Internet Explorer 6.0:
yet were not documented by Microsoft in the January 2004 edition of the MSDN Library on CD.
| Undocumented Function | Importers | |
| DDECreatePostNotify | B | |
| DDEHandleViewFolderNotify | B | |
| ILCreateFromPath | BS | only Unicode form documented for settlement; other forms documented in 2004-2006 |
It is with SHLWAPI that Microsoft has, if only as I see it, seriously and perhaps culpably undercounted. Microsoft lists only one SHLWAPI function (namely SHGetViewStatePropertyBag) among the Settlement Program Interfaces. That this might be anywhere near complete is just not credible if SHLWAPI is regarded as a Windows component used by Internet Explorer.
Against this is that Microsoft perhaps deems SHLWAPI to be a component of Internet Explorer but somehow not a component of Windows. With this thinking, bizarre as it would surely seem to many, no SHLWAPI functions used by Internet Explorer would need to be documented for the settlement. Inclusion of SHGetViewStatePropertyBag might have been necessary only because it is used by some Middleware product other than Internet Explorer. Or perhaps it is just that Microsoft was in this one case more generous than the settlement requires. Until Microsoft explains its thinking, which might never happen unless asked by a court, we will never know.
Until then, if I take SHLWAPI as a component of Windows for the purposes of the settlement (even if it is also a component of Internet Explorer), then I count 344 SHLWAPI functions as omitted. Roughly half are so-called wrappers of otherwise well-known API functions, mostly to present a Unicode interface even if the underlying implementation will convert to and from ANSI. Microsoft documents a Microsoft Layer for Unicode (MSLU) that does something similar, though by a significantly different method. Whatever the advantages and disadvantages, these long-standing wrappers in SHLWAPI still find very heavy use by all sorts of modules, including many that surely qualify as components of Microsoft Middleware. Since these wrappers form a set and since many will think them a very uninteresting set, I present them separately, later.
Discounting the wrappers for now, there remain 177 functions that are exported from the SHLWAPI.DLL that shipped with Windows XP Service Pack 1a, are each used by at least one of the following DLLs that were all distributed with that same version of Windows and with the roughly contemporaneous Internet Explorer 6.0:
yet were not documented by Microsoft in the January 2004 edition of the MSDN Library on CD.
Consultation of the MSDN Library on-line in late 2004 revealed that some of the functions in the table below have been documented since this study was first imagined (and the January 2004 edition chosen as the initial point of reference). More have been documented since. This still leaves more than a hundred as missing.
| Undocumented Function | Importers | |
| AssocMakeApplicationByKeyW | B | |
| CompareStringAltW | H | |
| ConnectToConnectionPoint | BMS | documented in 2004 |
| CreateAllAccessSecurityAttributes | NS | |
| CreateURLFileContents | SU | |
| EventTraceHandler | B | |
| FDSA_DeleteItem | B | |
| FDSA_Destroy | B | |
| FDSA_Initialize | B | |
| FDSA_InsertItem | B | |
| GetPerfTime | B | |
| GetUIVersion | BNS | |
| GUIDFromString | BS | documented in 2005-2006 |
| IConnectionPoint_InvokeWithCancel | S | |
| IConnectionPoint_SimpleInvoke | S | |
| IContextMenu_Invoke | B | |
| IsCharBlankW | H | |
| IsCharDigitW | H | |
| IsCharXDigitW | H | |
| IShellFolder_CompareIDs | S | |
| IShellFolder_EnumObjects | B | |
| IShellFolder_GetDisplayNameOf | S | |
| IShellFolder_ParseDisplayName | B | |
| IsOS | BIMNORSWX | documented in 2004 |
| IsQSForward | B | |
| IStream_Read | BS | documented in 2004 |
| IStream_Size | S | documented in 2004 |
| IStream_Write | BS | documented in 2006 |
| IUnknown_CPContainerOnChanged | S | |
| IUnknown_EnableModeless | BIS | |
| IUnknown_Exec | BHS | |
| IUnknown_GetClassID | BS | |
| IUnknown_GetSite | B | documented in 2004 |
| IUnknown_GetWindow | BIS | documented in 2004 |
| IUnknown_HandleIRestrict | B | |
| IUnknown_HasFocusIO | B | |
| IUnknown_OnFocusChangeIS | BS | |
| IUnknown_OnFocusOCS | S | |
| IUnknown_ProfferService | B | |
| IUnknown_QueryServiceExec | BS | |
| IUnknown_QueryServiceForWebBrowserApp | BS | |
| IUnknown_QueryStatus | BHS | |
| IUnknown_Set | BS | documented in 2004 |
| IUnknown_SetOwner | BS | |
| IUnknown_SetSite | BIS | documented in 2004 |
| IUnknown_ShowBrowserBar | S | |
| IUnknown_TranslateAcceleratorIO | B | |
| IUnknown_TranslateAcceleratorOCS | S | |
| IUnknown_UIActivateIO | BS | |
| MayExecForward | B | |
| MayQSForward | B | |
| MIME_GetExtensionW | S | |
| MLBuildResURLW | BS | |
| MLClearMLHInstance | BNRSUW | |
| MLFreeLibrary | BHINS | documented in 2004 |
| MLGetUILanguage | BHNORSX | documented in 2005-2006 |
| MLHtmlHelpW | HS | documented in 2005-2006 |
| MLWinHelp | HU | |
| ParseURL | BHISU | documented in 2004 |
| PathFileExistsAndAttributesW | B | |
| PathFindOnPathExW | B | |
| QISearch | BIS | documented in 2004 |
| RegisterDefaultAcceptHeaders | HS | |
| RegisterGlobalHotkeyW | S | |
| SHAboutInfoW | S | |
| SHAnsiToUnicode | BINRSUW | documented in 2004 |
| SHAnsiToUnicodeCP | IS | |
| SHBoolSystemParametersInfo | B | |
| SHCancelTimerQueueTimer | M | documented in 2005-2006 |
| SHCheckDiskForMediaW | IS | |
| SHCheckMenuItem | B | |
| SHCoCreateInstanceAC | BS | |
| SHCreateMemStream | BS | documented in 2004 |
| SHCreatePropertyBagOnMemory | S | |
| SHCreatePropertyBagOnRegKey | S | |
| SHCreateWorkerWindowW | BIS | |
| SHDefWindowProc | BS | |
| SHDeleteOrphanKeyA | SU | |
| SHEnableMenuItem | BS | |
| SHExpandEnvironmentStringsW | BS | |
| SHFillRectClr | BS | |
| SHFormatDateTime | ISW | documented in 2004 |
| SHForwardContextMenuMsg | B | |
| SHGetAppCompatFlags | S | |
| SHGetCurColorRes | BS | |
| SHGetIniStringW | ISW | |
| SHGetMachineInfo | HW | |
| SHGetMenuFromID | BS | |
| SHGetObjectCompatFlags | BS | |
| SHGetPerScreenResName | B | |
| SHGetRestriction | I | |
| SHGetShellKey | BS | |
| SHGetValueGoodBootW | BS | |
| SHGetWebFolderFilePathW | BIU | |
| SHGlobalCounterCreate | BRS | |
| SHGlobalCounterCreateNamedW | S | |
| SHGlobalCounterGetValue | BRS | |
| SHGlobalCounterIncrement | R | |
| SHHtmlHelpOnDemandW | BSW | |
| SHInterlockedCompareExchange | HINS | documented in 2005-2006 |
| SHInvokeCommandOnContextMenu | S | |
| SHInvokeDefaultCommand | BS | |
| SHIsChildOrSelf | BS | documented in 2004 |
| SHIsEmptyStream | B | |
| SHIsExpandableFolder | BS | |
| SHIsSameObject | BS | |
| SHLoadFromPropertyBag | BS | |
| SHLoadMenuPopup | B | |
| SHLoadRegUIStringW | BIS | |
| SHMenuIndexFromID | B | |
| SHMessageBoxCheck | BS | documented in 2004 |
| SHMessageBoxCheckExW | I | |
| SHMirrorIcon | B | |
| SHPackDispParamsV | HS | |
| SHPinDllOfCLSID | BS | |
| SHPropagateMessage | BS | |
| SHPropertyBag_Delete | B | |
| SHPropertyBag_ReadBOOL | BS | |
| SHPropertyBag_ReadBSTR | S | |
| SHPropertyBag_ReadDWORD | BS | |
| SHPropertyBag_ReadGUID | BS | |
| SHPropertyBag_ReadInt | BS | |
| SHPropertyBag_ReadPOINTL | B | |
| SHPropertyBag_ReadRECTL | B | |
| SHPropertyBag_ReadStr | B | |
| SHPropertyBag_WriteBOOL | B | |
| SHPropertyBag_WriteDWORD | B | |
| SHPropertyBag_WriteGUID | BS | |
| SHPropertyBag_WritePOINTL | B | |
| SHPropertyBag_WriteRECTL | B | |
| SHQueueUserWorkItem | BHNS | documented in 2005-2006 |
| SHRegGetCLSIDKeyW | BN | |
| SHRegisterClassW | BS | |
| SHRemoveDefaultDialogFont | BNS | |
| SHRestrictedMessageBox | BS | |
| SHRestrictionLookup | S | |
| SHRunIndirectRegClientCommand | BS | |
| SHSearchMapInt | BS | |
| SHSendMessageBroadcast | NOS | documented in 2004 |
| SHSetDefaultDialogFont | BNS | |
| SHSetIniStringW | IS | |
| SHSetParentHwnd | BS | |
| SHSetTimerQueueTimer | MS | documented in 2005-2006 |
| SHSetWindowBits | BS | |
| SHSimulateDrop | BS | |
| SHStringFromGUID | BISUW | |
| SHStripMneumonicW | B | documented in 2004 |
| SHUnicodeToAnsi | BHINSW | documented in 2004 |
| SHUnicodeToAnsiCP | BIS | |
| SHUnicodeToUnicode | BISW | documented in 2004 |
| SHUnregisterClassesW | BS | |
| SHWaitForSendMessageThread | B | |
| SHWeakQueryInterface | BS | |
| SHWeakReleaseInterface | BS | |
| SHWinHelpOnDemand | BNRSUW | |
| SKGetValueW | BS | |
| SKSetValueW | B | |
| StopWatch_CheckMsg | B | |
| StopWatch_DispatchTime | B | |
| StopWatch_MarkFrameStart | B | |
| StopWatch_MarkJavaStop | S | |
| StopWatch_MarkSameFrameStart | S | |
| StopWatch_SetMsgLastLocation | B | |
| StopWatch_TimerHandler | B | |
| StopWatch | BSX | |
| StopWatchFlush | S | documented in 2004 |
| StopWatchMode | BSX | documented in 2004 |
| StrCmpNCA | HNU | documented in 2004 |
| StrCmpNIC | HNSU | documented in 2004 |
| UrlCrackW | HS | |
| UrlFixupW | BMS | documented in 2004 |
| WhichPlatform | BINSWX | documented in 2004 |
| ZoneCheckHost | IS | |
| ZoneCheckUrlW | S | |
| ZoneCheckUrlExW | HS | |
| ZoneComputePaneSize | IS | |
| ZoneConfigureW | BS |
The Unicode wrapper functions exported from SHLWAPI are numerous. The January 2004 edition of the MSDN Library on CD troubles to document only nine of them. Since nine is not zero, it is not as if Microsoft has always discounted these wrappers as being entirely unworthy of comment. None, however, were documented for the settlement.
The 167 wrapper functions listed below are all exported from the SHLWAPI.DLL that shipped with Windows XP Service Pack 1a, are each used by at least one of the following DLLs that were all distributed with that same Windows version and with the roughly contemporaneous Internet Explorer 6.0:
yet were not documented by Microsoft as late as the January 2004 edition of the MSDN Library on CD.
Many, but nowhere near all, have been documented since, not by the end of 2004 but in time at least for the January 2007 edition of the Windows Vista Software Development Kit (SDK). Microsoft’s selection is at best capricious. How, for instance, does anyone with the slightest appreciation of logic and consistency decide to document IsCharUpperWrapW but leave IsCharLowerWrapW alone, except if instructed to document only those functions that meet some very strict criteria however absurd may be the outcome.
| Undocumented Function | Importers | |
| AppendMenuWrapW | BHOS | documented in 2005-2006 |
| CallMsgFilterWrapW | B | |
| CallWindowProcWrapW | BHIMNOS | documented in 2005-2006 |
| CharLowerBuffWrapW | HS | |
| CharNextWrapW | BHIMNSW | |
| CharPrevWrapW | BISW | |
| CharToOemWrapW | H | |
| CharUpperWrapW | BHIS | documented in 2005-2006 |
| CLSIDFromProgIDWrap | HIU | |
| CLSIDFromStringWrap | HISUW | |
| CopyAcceleratorTableWrapW | H | |
| CopyFileWrapW | HINOSW | documented in 2005-2006 |
| CreateAcceleratorTableWrapW | H | |
| CreateDCWrapW | HIMS | |
| CreateDialogParamWrapW | BOS | |
| CreateDirectoryWrapW | BHIMSW | |
| CreateEventWrapW | BHMS | documented in 2005-2006 |
| CreateFontWrapW | B | |
| CreateFontIndirectWrapW | HINS | |
| CreateICWrapW | HI | |
| CreateMetaFileWrapW | S | |
| CreateMutexWrapW | BS | |
| CreateProcessWrapW | INS | |
| CreateSemaphoreWrapW | B | |
| CreateWindowExWrapW | BHIMNOSW | documented in 2005-2006 |
| DdeCreateStringHandleWrapW | S | |
| DdeInitializeWrapW | S | |
| DdeQueryStringWrapW | S | |
| DefWindowProcWrapW | BHMOSW | documented in 2005-2006 |
| DeleteFileWrapW | HIMNOSW | documented in 2005-2006 |
| DeleteMenuWrap | BHIS | |
| DestroyMenuWrap | BHNSW | |
| DialogBoxParamWrapW | BHIMNORSUW | documented in 2005-2006 |
| DispatchMessageWrapW | BHIMOSW | documented in 2005-2006 |
| DragQueryFileWrapW | BHOSW | documented in 2005-2006 |
| DrawTextWrapW | BHINOS | documented in 2005-2006 |
| DrawTextExWrapW | N | documented in 2005-2006 |
| EnumFontFamiliesExWrapW | HN | |
| ExpandEnvironmentStringsWrapW | HINO | |
| ExtractIconWrapW | HSW | |
| ExtractIconExWrapW | BHI | |
| ExtTextOutWrapW | BNOS | documented in 2005-2006 |
| FindFirstFileWrapW | BHIMOSU | |
| FindNextFileWrapW | IMOS | |
| FindWindowWrapW | BHSW | |
| FindWindowExWrapW | BNS | |
| FormatMessageWrapW | BHNSW | documented in 2005-2006 |
| GetCharacterPlacementWrapW | H | |
| GetCharWidth32WrapW | H | |
| GetClassInfoWrapW | HMNO | documented in 2005-2006 |
| GetClassInfoExWrapW | BHMS | |
| GetClassNameWrapW | BHNS | |
| GetClipboardFormatNameWrapW | S | |
| GetCurrentDirectoryWrapW | BNS | |
| GetDlgItemTextWrapW | BIMNOSW | documented in 2005-2006 |
| GetFileAttributesWrapW | BHIMNOSUW | documented in 2005-2006 |
| GetFileVersionInfoWrapW | HS | |
| GetFileVersionInfoSizeWrapW | HS | |
| GetFullPathNameWrapW | HS | |
| GetLongPathNameWrap | SU | |
| GetMenuItemInfoWrapW | BIOSW | documented in 2005-2006 |
| GetMenuStringWrapW | BH | |
| GetMessageWrapW | BHIMOS | |
| GetModuleFileNameWrapW | BHIMNRSUWX | documented in 2005-2006 |
| GetModuleHandleWrapW | BHIMNRSUW | documented in 2005-2006 |
| GetObjectWrapW | BHINS | documented in 2005-2006 |
| GetOpenFileNameWrapW | HIMNOS | documented in 2005-2006 |
| GetPrivateProfileIntWrapW | IMS | |
| GetPrivateProfileStringWrapW | BIMSW | |
| GetPrivateProfileStructWrapW | S | |
| GetPropWrapW | BHNSW | |
| GetSaveFileNameWrapW | HMNS | documented in 2005-2006 |
| GetShortPathNameWrapW | HMW | |
| GetStringTypeExWrapW | BN | |
| GetSystemDirectoryWrapW | HINOSW | documented in 2005-2006 |
| GetTempFileNameWrapW | HIS | |
| GetTempPathWrapW | HIS | |
| GetTextExtentPoint32WrapW | BINS | |
| GetTextFaceWrapW | H | |
| GetTextMetricsWrapW | BHINS | |
| GetUserNameWrapW | IS | |
| GetWindowLongWrapW | BHIMNSW | documented in 2005-2006 |
| GetWindowsDirectoryWrapW | BHINRSUW | documented in 2005-2006 |
| GetWindowTextWrapW | BHINOSW | documented in 2005-2006 |
| GetWindowTextLengthWrapW | BINOS | documented in 2005-2006 |
| GlobalAddAtomWrapW | H | |
| GlobalFindAtomWrapW | H | |
| InsertMenuWrapW | BHOS | |
| InsertMenuItemWrapW | BOS | documented in 2005-2006 |
| IsBadStringPtrWrapW | BNS | |
| IsCharAlphaWrapW | H | documented in 2005-2006 |
| IsCharLowerWrapW | H | |
| IsCharUpperWrapW | H | documented in 2005-2006 |
| IsDialogMessageWrapW | BMOS | |
| LoadAcceleratorsWrapW | BHOS | |
| LoadBitmapWrapW | BHS | |
| LoadCursorWrapW | BHIMNSW | |
| LoadIconWrapW | BHNSW | |
| LoadImageWrapW | BHISW | |
| LoadLibraryWrapW | BHIMNRSUW | documented in 2005-2006 |
| LoadLibraryExWrapW | BHIMS | |
| LoadMenuWrapW | BHNSW | |
| LoadStringWrapW | BHIMNOSUW | documented in 2005-2006 |
| MessageBoxWrapW | BHIMNSW | documented in 2005-2006 |
| MessageBoxIndirectWrapW | BISW | |
| MoveFileWrapW | IMS | documented in 2005-2006 |
| OpenEventWrapW | B | |
| PageSetupDlgWrapW | S | |
| PeekMessageWrapW | BHIMNOSW | documented in 2005-2006 |
| PlaySoundWrapW | BS | |
| PostMessageWrapW | BHINMSW | documented in 2005-2006 |
| PostThreadMessageWrapW | BHM | |
| PrintDlgWrapW | HS | |
| RegCreateKeyWrapW | BS | |
| RegCreateKeyExWrapW | BHIMNSW | documented in 2005-2006 |
| RegDeleteKeyWrapW | HIMNS | |
| RegDeleteValueWrapW | BHIMNSW | |
| RegEnumKeyWrapW | HINSW | |
| RegEnumKeyExWrapW | BHIMNSW | |
| RegEnumValueWrapW | BIMNSW | |
| RegisterClassWrapW | BHMNOSW | documented in 2005-2006 |
| RegisterClassExWrapW | BHMS | |
| RegisterClipboardFormatWrapW | BHSW | |
| RegisterWindowMessageWrapW | BHS | |
| RegOpenKeyWrapW | BHSW | |
| RegOpenKeyExWrapW | BHIMNSUW | documented in 2005-2006 |
| RegQueryInfoKeyWrapW | HIMSW | |
| RegQueryValueWrapW | HMNSW | documented in 2005-2006 |
| RegQueryValueExWrapW | BHIMNOSUW | documented in 2005-2006 |
| RegSetValueWrapW | NS | |
| RegSetValueExWrapW | BHIMNOSW | documented in 2005-2006 |
| RemoveDirectoryWrapW | ISW | |
| RemovePropWrapW | BHNSW | |
| SearchPathWrapW | H | |
| SendDlgItemMessageWrapW | HINSW | |
| SendMessageWrapW | BHIMNOSW | documented in 2005-2006 |
| SendMessageTimeoutWrapW | BIS | |
| SetCurrentDirectoryWrapW | NS | |
| SetDlgItemTextWrapW | BHIMNOSUW | documented in 2005-2006 |
| SetFileAttributesWrapW | INSW | |
| SetMenuItemInfoWrapW | BSW | |
| SetPropWrapW | BHNSW | |
| SetWindowLongWrapW | BHIMNSW | documented in 2005-2006 |
| SetWindowsHookExWrapW | BH | |
| SetWindowTextWrapW | BHIMNOSU | documented in 2005-2006 |
| SHBrowseForFolderWrapW | BINS | |
| SHChangeNotifyWrap | BINSW | |
| ShellExecuteExWrapW | BHIMNOSUW | documented in 2005-2006 |
| Shell_GetCachedImageIndexWrapW | H | |
| SHFileOperationWrapW | S | |
| SHFlushSFCacheWrap | N | |
| SHGetFileInfoWrapW | BHNOSW | documented in 2005-2006 |
| SHGetNewLinkInfoWrapW | S | |
| SHGetPathFromIDListWrapW | BIMNS | documented in 2005-2006 |
| StartDocWrapW | I | |
| SystemParametersInfoWrapW | BHNW | |
| TrackPopupMenuExWrap | B | |
| TrackPopupMenuWrap | BHNS | |
| TranslateAcceleratorWrapW | BNOS | documented in 2005-2006 |
| UnregisterClassWrapW | HO | documented in 2005-2006 |
| VerQueryValueWrapW | HS | |
| VkKeyScanWrapW | H | |
| WinHelpWrapW | HS | |
| WNetGetLastErrorWrapW | B | |
| WritePrivateProfileStringWrapW | IMNSW | |
| WritePrivateProfileStructWrapW | S | |
| wvsprintfWrapW | H |