BASESRV API Routines

As a CSRSS Server DLL, BASESRV implements API routines which a CSRSS client can call through the NTDLL function CsrClientCallServer and which other DLLs in the server process may be allowed to call through the CSRSRV function CsrCallServerFromServer.

The base server’s API routines each have the prototype

ULONG ApiRoutine (CSR_API_MSG *, CSR_REPLY_STATUS *);

The caller selects a routine by specifying an API number. The high word is a 0-based index for the base server as a CSRSS server DLL. Known clients and BASESRV itself (for the slightly different matter of accessing server-specific per-process data) assume that this index is 1. Whatever symbolic names Microsoft has for the API numbers as constants to use when calling the corresponding API routines are not known. The table below gives only the name of each API routine as known from public symbol files for BASESRV.DLL.

API Number API Routine Versions Remarks
0x00000000 (3.10 to 3.51) BaseSrvGlobalAddAtom 3.10 to 3.51  
0x00010001 (3.10 to 3.51) BaseSrvGlobalFindAtom 3.10 to 3.51 invalid as server call
0x00010002 (3.10 to 3.51) BaseSrvGlobalDeleteAtom 3.10 to 3.51  
0x00010003 (3.10 to 3.51) BaseSrvGlobalGetAtomName 3.10 to 3.51  
0x00010004 (3.10 to 3.51) BaseSrvProfileOperation 3.10 only  
0x00010005 (3.10);
0x00010004 (3.51);
0x00010000
BaseSrvCreateProcess all  
0x00010006 (3.10);
0x00010005 (3.51);
0x00010001
BaseSrvCreateThread 3.10 to 6.1  
BaseSrvDeadEntry 6.2 and higher invalid as server call;
fails trivially
0x00010007 (3.10);
0x00010006 (3.51);
0x00010002
BaseSrvGetTempFile 3.10 to 5.2  
BaseSrvDeadEntry 6.0 and higher invalid as server call;
fails trivially
0x00010008 (3.10);
0x00010007 (3.51);
0x00010003
BaseSrvExitProcess 3.10 to 6.1 invalid as server call
BaseSrvDeadEntry 6.2 and higher invalid as server call;
fails trivially
0x00010009 (3.10);
0x00010008 (3.51);
0x00010004
BaseSrvDebugProcess 3.10 to 5.2 invalid as server call;
fails trivially in 5.1 to 5.2
BaseSrvDeadEntry 6.0 and higher invalid as server call;
fails trivially
0x0001000A (3.10);
0x00010009 (3.51);
0x00010005
BaseSrvCheckVDM all  
0x0001000B (3.10);
0x0001000A (3.51);
0x000100006
BaseSrvUpdateVDMEntry all  
0x0001000C (3.10);
0x0001000B (3.51);
0x00010007
BaseSrvGetNextVDMCommand all  
0x0001000D (3.10);
0x0001000C (3.51);
0x00010008
BaseSrvExitVDM all  
0x0001000E (3.10);
0x0001000D (3.51);
0x00010009
BaseSrvIsFirstVDM all  
0x0001000F (3.10);
0x0001000E (3.51);
0x0001000A
BaseSrvGetVDMExitCode all  
0x00010010 (3.10);
0x0001000F (3.51);
0x0001000B
BaseSrvSetReenterCount all  
0x00010011 (3.10);
0x00010010 (3.51);
0x0001000C
BaseSrvSetProcessShutdownParam all  
0x00010012 (3.10);
0x00010011 (3.51);
0x0001000D
BaseSrvGetProcessShutdownParam all  
0x00010012 (3.51);
0x0001000E (4.0 to 5.2)
BaseSrvNlsSetUserInfo 3.51 to 5.2 next as 0x0001001C
0x00010013 (3.51);
0x0001000F (4.0 to 5.2)
BaseSrvNlsSetMultipleUserInfo 3.51 to 5.2  
0x00010013 (3.10);
0x00010014 (3.51);
0x00010010 (4.0 to 5.2)
BaseSrvNlsCreateSortSection 3.10 to 4.0  
BaseSrvNlsCreateSection 5.0 to 5.2  
0x00010014 (3.10);
0x00010015 (3.51);
0x00010011 (4.0)
BaseSrvNlsPreserveSection 3.10 to 4.0  
0x00010015 (3.10);
0x00010016 (3.51)
BaseSrvDefineDosDevice 3.10 to 3.51 next as 0x00010018
0x00010016 (3.10);
0x00010017 (3.51);
0x00010012 (4.0);
0x00010011 (5.0 to 5.2);
0x0001000E
BaseSrvSetVDMCurDirs all  
0x00010017 (3.10);
0x00010018 (3.51);
0x00010013 (4.0);
0x00010012 (5.0 to 5.2);
0x0001000F
BaseSrvGetVDMCurDirs all  
0x00010018 (3.10);
0x00010019 (3.51);
0x00010014 (4.0);
0x00010013 (5.0 to 5.2);
0x00010010
BaseSrvBatNotification all  
0x0001001A (3.51);
0x00010015 (4.0);
0x00010014 (5.0 to 5.2);
0x00010011
BaseSrvRegisterWowExec 3.51 and higher  
0x0001001B (3.51);
0x00010016 (4.0);
0x00010015 (5.0 to 5.2);
0x00010012
BaseSrvSoundSentryNotification 3.51 and higher  
0x0001001C (3.51);
0x00010017 (4.0);
0x00010016 (5.0 to 5.2);
0x00010013
BaseSrvRefreshIniFileMapping 3.51 and higher  
0x0001001D (3.51) BaseSrvRefreshDriveType 3.51 only  
0x00010018 (4.0);
0x00010017 (5.0 to 5.2);
0x00010014
BaseSrvDefineDosDevice 4.0 and higher previously 0x00010016
0x00010018 (5.0 to 5.2);
0x00010015
BaseSrvSetTermsrvAppInstallMode 5.0 and higher  
0x00010019 (5.0 to 5.2) BaseSrvNlsUpdateCacheCount 5.0 to 5.2 next as 0x0001001D
0x0001001A (5.1 to 5.2);
0x00010016
BaseSrvSetTermsrvClientTimeZone 5.1 and higher  
0x0001001B (5.1 to 5.2);
0x00010017
BaseSrvSxsCreateActivationContext 5.1 to 6.0  
BaseSrvCreateActivationContext 6.1 and higher  
0x0001001C (5.1 to 5.2);
0x00010018
BaseSrvDebugProcessStop 5.1 to 5.2 fails trivially
BaseSrvDeadEntry 6.0 and higher fails trivially
0x0001001D (5.1 to 5.2);
0x00010019
BaseSrvRegisterThread 5.1 and higher  
0x0001001A BaseSrvDeferredCreateProcess 6.0 and higher  
0x0001001E (early 5.2) BaseSrvCheckApplicationCompatibility early 5.2 only  
0x0001001E (5.1);
0x0001001F (early 5.2);
0x0001001E (late 5.2);
0x0001001B
BaseSrvNlsGetUserInfo 5.1 and higher  
0x0001001F (late 5.1) BaseSrvAppHelpQueryModuleData late 5.1 only  
0x0001001C (6.0) BaseSrvNlsSetUserInfo 6.0 only previously 0x0001000E
0x0001001D (6.0);
0x0001001C
BaseSrvNlsUpdateCacheCount 6.0 and higher previoously 0x00010019