Ordinal-Only Exports Added For APPHELP 6.2

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.