Geoff Chappell, Software Analyst
For its version 6.2, APPHELP exports a few dozen functions by ordinal only. The names are known from symbol files. Functions that are exported only by ordinal tend to be undocumented, much of the point to exporting only by ordinal being to keep the names out of public use.
Ordinal | Function | Remarks |
---|---|---|
1 | DlCreate | discontinued in 10.0 |
2 | DlDelete | discontinued in 10.0 |
3 | DlDebugPrintf | discontinued in 10.0 |
4 | DlDebugVPrintf | discontinued in 10.0 |
5 | DlDebugSetListener | discontinued in 10.0 |
6 | DlGetState | discontinued in 10.0 |
7 | DlSetState | discontinued in 10.0 |
8 | DlSetFlags | discontinued in 10.0 |
9 | DlGetQuota | discontinued in 10.0 |
10 | DlSetQuota | discontinued in 10.0 |
11 | DlGetFlagsMask | discontinued in 10.0 |
12 | DlSetFlagsMask | discontinued in 10.0 |
13 | DlSetLevel | discontinued in 10.0 |
14 | DlSetFileName | discontinued in 10.0 |
17 | DlPrintf | discontinued in 10.0 |
18 | DlVPrintf | discontinued in 10.0 |
19 | SdbDeclareIndexEx | |
20 | SdbMakeIndexKeyFromStringEx | also kernel-mode in 6.2 and higher |
21 | SdbActivateIndex | |
22 | SdbDeactivateIndex | |
23 | SdbFindFirstLayer | |
24 | SdbFindNextLayer | |
25 | SdbGetLayerOsVersionValue | |
26 | SdbGetAppCompatData | discontinued in 6.3 |
27 | SdbGetLayerCommandLine | ordinal 26 in 6.3 and higher |
28 | SdbGetPermLayerPath | ordinal 27 in 6.3 and higher |
29 | SdbInitDatabaseInMemory | ordinal 28 in 6.3 and higher; also kernel-mode in 5.1 and higher |
30 | SdbTagExeForReinstallUpgrade | ordinal 29 in 6.3 and higher |
31 | SdbUntagExeForReinstallUpgrade | ordinal 30 in 6.3 and higher |
32 | SdbIsExeTaggedForReinstallUpgrade | ordinal 31 in 6.3 and higher |
33 | SdbSetPermLayerState | ordinal 32 in 6.3 and higher |
34 | SdbSetPermLayerStateEx | ordinal 33 in 6.3 and higher |
When SdbGetAppCompatData was dropped for version 6.3, the ordinals of higher-numbered functions were allowed to slip. This is unusual from Microsoft for a DLL that might be called from software that’s intended to run on arbitrary Windows versions. The strong suggestion is that APPHELP should not have such callers.
Although SdbInitDatabaseInMemory is not an APPHELP export until version 6.2, it exists all along in the statically linked library that APPHELP incorporates and is used in kernel mode, as a routine that’s internal to the kernel, even from the first release of Windows XP so that the kernel can interpret the contents of drvmain.sdb as passed from the loader.