Pointers
VPB field vpb_FSC points to the associated FSC_ENTRY.
CDS field cd_ownerFSC points to the associated FSC_ENTRY.
SAS field SAS_dd_FSC contains the selector for FSCSEG.
GDT_FSC locates the GDT descriptor for the FSCSEG.
FSCSEG
┌─────────────────┬──────┬──────┬────┬───────────────────────────────────┐│Field Name │Offset│Length│Type│Description │ ├─────────────────┼──────┼──────┼────┼───────────────────────────────────┤ │fss_Limit │0 │2 │W │Offset PAST last allocated byte │ ├─────────────────┼──────┼──────┼────┼───────────────────────────────────┤ │fss_ShutdownFlags│2 │2 │W │flags for shutdown │ ├─────────────────┼──────┼──────┼────┼───────────────────────────────────┤ │fss_SDWaitCount │4 │2 │W │number of processes pending before │ ├─────────────────┼──────┼──────┼────┼───────────────────────────────────┤ │fss_pad │6 │2 │W │shutdown can commence (DWORD align)│ └─────────────────┴──────┴──────┴────┴───────────────────────────────────┘
FS_ENTRY
┌────────────────────┬──────┬──────┬────┬──────────────────────────────────┐ │Field Name │Offset│Length│Type│Description │ ├────────────────────┼──────┼──────┼────┼──────────────────────────────────┤ │FS_ATTRIBUTE │0 │4 │D │-> FSD attribute. (in FSD memory) │ ├────────────────────┼──────┼──────┼────┼──────────────────────────────────┤ │FS_NAME │4 │4 │D │-> FSD name. (in FSD memory) │ ├────────────────────┼──────┼──────┼────┼──────────────────────────────────┤ │FS_ATTACH │8 │4 │D │DosQFsAttach, DosFsAttach │ ├────────────────────┼──────┼──────┼────┼──────────────────────────────────┤ │FS_CHDIR │C │4 │D │DosChdir │ ├────────────────────┼──────┼──────┼────┼──────────────────────────────────┤ │FS_CHGFILEPTR │10 │4 │D │DosChgFilePtr │ ├────────────────────┼──────┼──────┼────┼──────────────────────────────────┤ │FS_CLOSE │14 │4 │D │DosClose │ ├────────────────────┼──────┼──────┼────┼──────────────────────────────────┤ │FS_COPY │18 │4 │D │DosCopy │ ├────────────────────┼──────┼──────┼────┼──────────────────────────────────┤ │FS_DELETE │1C │4 │D │DosDelete │ ├────────────────────┼──────┼──────┼────┼──────────────────────────────────┤ │FS_EXIT │20 │4 │D │DosExit │ ├────────────────────┼──────┼──────┼────┼──────────────────────────────────┤ │FS_FILEATTRIBUTE │24 │4 │D │DosFileInfo, DosSetFileMode │ ├────────────────────┼──────┼──────┼────┼──────────────────────────────────┤ │FS_FILEINFO │28 │4 │D │DosQFileInfo, DosSetFileInfo │ ├────────────────────┼──────┼──────┼────┼──────────────────────────────────┤ │FS_FILEIO │2C │4 │D │DosFileIO │ ├────────────────────┼──────┼──────┼────┼──────────────────────────────────┤ │FS_FINDCLOSE │30 │4 │D │DosFindClose │ ├────────────────────┼──────┼──────┼────┼──────────────────────────────────┤ │FS_FINDFIRST │34 │4 │D │DosFindFirst │ ├────────────────────┼──────┼──────┼────┼──────────────────────────────────┤ │FS_FINDFROMNAME │38 │4 │D │DosFindFromName-Private to server │ ├────────────────────┼──────┼──────┼────┼──────────────────────────────────┤ │FS_FINDNEXT │3C │4 │D │DosFindNext │ ├────────────────────┼──────┼──────┼────┼──────────────────────────────────┤ │FS_FINDNOTIFYCLOSE │40 │4 │D │DosFindNotifyClose │ ├────────────────────┼──────┼──────┼────┼──────────────────────────────────┤ │FS_FINDNOTIFYFIRST │44 │4 │D │DosFindNotifyFirst │ ├────────────────────┼──────┼──────┼────┼──────────────────────────────────┤ │FS_FINDNOTIFYNEXT │48 │4 │D │DosFindNotifyNext │ ├────────────────────┼──────┼──────┼────┼──────────────────────────────────┤ │FS_FSINFO │4C │4 │D │DosQFsInfo, DosSetFsInfo │ ├────────────────────┼──────┼──────┼────┼──────────────────────────────────┤ │FS_INIT │50 │4 │D │-- No corresponding API │ ├────────────────────┼──────┼──────┼────┼──────────────────────────────────┤ │FS_IOCTL │54 │4 │D │DosDevIoctl │ ├────────────────────┼──────┼──────┼────┼──────────────────────────────────┤ │FS_MKDIR │58 │4 │D │DosMkdir │ ├────────────────────┼──────┼──────┼────┼──────────────────────────────────┤ │FS_MOUNT │5C │4 │D │-- No corresponding API │ ├────────────────────┼──────┼──────┼────┼──────────────────────────────────┤ │FS_MOVE │60 │4 │D │DosMove │ ├────────────────────┼──────┼──────┼────┼──────────────────────────────────┤ │FS_NEWSIZE │64 │4 │D │DosNewsize │ ├────────────────────┼──────┼──────┼────┼──────────────────────────────────┤ │FS_NMPIPE │68 │4 │D │All named pipe related API's │ ├────────────────────┼──────┼──────┼────┼──────────────────────────────────┤ │FS_OPENCREATE │6C │4 │D │DosOpen │ ├────────────────────┼──────┼──────┼────┼──────────────────────────────────┤ │FS_PATHINFO │70 │4 │D │DosQPathInfo, DosSetPathInfo │ ├────────────────────┼──────┼──────┼────┼──────────────────────────────────┤ │FS_PROCESSNAME │74 │4 │D │-- No corresponding API │ ├────────────────────┼──────┼──────┼────┼──────────────────────────────────┤ │FS_READ │78 │4 │D │DosRead, DosReadAsync │ ├────────────────────┼──────┼──────┼────┼──────────────────────────────────┤ │FS_RMDIR │7C │4 │D │DosRmdir │ ├────────────────────┼──────┼──────┼────┼──────────────────────────────────┤ │FS_SETSWAP │80 │4 │D │-- No correcponding API │ ├────────────────────┼──────┼──────┼────┼──────────────────────────────────┤ │FS_WRITE │84 │4 │D │DosWrite, DosWriteAsync │ ├────────────────────┼──────┼──────┼────┼──────────────────────────────────┤ │FS_OPENPAGEFILE │88 │4 │D │init time only │ ├────────────────────┼──────┼──────┼────┼──────────────────────────────────┤ │FS_ALLOCATEPAGESPACE│8C │4 │D │size swap file │ ├────────────────────┼──────┼──────┼────┼──────────────────────────────────┤ │FS_CANCELLOCKREQUEST│90 │4 │D │DosCancelLockRequest │ ├────────────────────┼──────┼──────┼────┼──────────────────────────────────┤ │FS_FILELOCKS │94 │4 │D │DosSetFileLocks │ ├────────────────────┼──────┼──────┼────┼──────────────────────────────────┤ │FS_VERIFYUNCNAME │98 │4 │D │Used to save function addresses │ ├────────────────────┼──────┼──────┼────┼──────────────────────────────────┤ │FS_COMMIT │9C │4 │D │DosBufReset, DosClose │ ├────────────────────┼──────┼──────┼────┼──────────────────────────────────┤ │FS_DOPAGEIO │A0 │4 │D │perform paging │ ├────────────────────┼──────┼──────┼────┼──────────────────────────────────┤ │FS_FSCTL │A4 │4 │D │DosFsCtl │ ├────────────────────┼──────┼──────┼────┼──────────────────────────────────┤ │FS_FLUSHBUF │A8 │4 │D │DosBufReset │ ├────────────────────┼──────┼──────┼────┼──────────────────────────────────┤ │FS_SHUTDOWN │AC │4 │D │DosShutdown │ ├────────────────────┼──────┼──────┼────┼──────────────────────────────────┤ │FS_SDCHGFILEPTR │B0 │4 │D │Used to save function addresses │ ├────────────────────┼──────┼──────┼────┼──────────────────────────────────┤ │FS_SDFSINFO │B4 │4 │D │at shutdown time. These functions│ ├────────────────────┼──────┼──────┼────┼──────────────────────────────────┤ │FS_SDREAD │B8 │4 │D │will only be called by shutdown │ ├────────────────────┼──────┼──────┼────┼──────────────────────────────────┤ │FS_SDWRITE │BC │4 │D │filters. │ └────────────────────┴──────┴──────┴────┴──────────────────────────────────┘
FS_ATTRIBUTE flag definitions
┌────────────────┬────────┬─────────────────────────────────┐ │Name │Bit Mask│Description │ ├────────────────┼────────┼─────────────────────────────────┤ │FS_ATTR_REMOTE │0x0001 │0 = local FSD, 1 = remote FSD │ ├────────────────┼────────┼─────────────────────────────────┤ │FS_ATTR_UNC │0x0002 │0 = normal, 1 = this is UNC FSD │ ├────────────────┼────────┼─────────────────────────────────┤ │FS_ATTR_LOCKINFO│0x0004 │0 = no notice, 1=notify filelocks│ ├────────────────┼────────┼─────────────────────────────────┤ │FS_ATTR_LVL7 │0x0008 │0 = no level 7 requests, 1 = yes │ ├────────────────┼────────┼─────────────────────────────────┤ │FS_ATTR_PIPESVR │0x0010 │0 = don't FSD on PIPE req,1 = yes│ ├────────────────┼────────┼─────────────────────────────────┤ │FS_ATTR_VERNO │0x7000 │bits 28-30 version no │ ├────────────────┼────────┼─────────────────────────────────┤ │FS_ATTR_EA │0x8000 │bit 31 -> 1 = extended attribute │ └────────────────┴────────┴─────────────────────────────────┘
FS_COMMIT flag definitions
┌─────────────┬────────┬──────────────────┐ │Name │Bit Mask│Description │ ├─────────────┼────────┼──────────────────┤ │FS_COMMIT_ALL│2 │all handles commit│ ├─────────────┼────────┼──────────────────┤ │FS_COMMIT_ONE│1 │one handle commit │ └─────────────┴────────┴──────────────────┘
Euqates for close type
┌──────────────┬────────┬───────────────────────┐ │Name │Bit Mask│Description │ ├──────────────┼────────┼───────────────────────┤ │FS_CL_ORDINARY│0 │ordinary close │ ├──────────────┼────────┼───────────────────────┤ │FS_CL_FORPROC │1 │final close for process│ ├──────────────┼────────┼───────────────────────┤ │FS_CL_FORSYS │2 │final close for system │ └──────────────┴────────┴───────────────────────┘
fscnameentstruc
┌──────────────────┬──────┬──────┬────┬────────────┐ │Field Name │Offset│Length│Type│Description │ ├──────────────────┼──────┼──────┼────┼────────────┤ │FSCNmEnt_Emulation│0 │4 │D │ │ ├──────────────────┼──────┼──────┼────┼────────────┤ │FSCNmEnt_Group │4 │1 │B │ │ ├──────────────────┼──────┼──────┼────┼────────────┤ │FSCNmEnt_NameLen │5 │1 │B │ │ ├──────────────────┼──────┼──────┼────┼────────────┤ │FSCNmEnt_ProcName │6 │1 │B │ │ └──────────────────┴──────┴──────┴────┴────────────┘
mFS_ENTRY
┌──────────────┬──────┬──────┬────┬───────────────────────┐ │Field Name │Offset│Length│Type│Description │ ├──────────────┼──────┼──────┼────┼───────────────────────┤ │MFS_CHGFILEPTR│0 │4 │D │DosChgFilePtr │ ├──────────────┼──────┼──────┼────┼───────────────────────┤ │MFS_CLOSE │4 │4 │D │DosClose │ ├──────────────┼──────┼──────┼────┼───────────────────────┤ │MFS_INIT │8 │4 │D │-- No corresponding API│ ├──────────────┼──────┼──────┼────┼───────────────────────┤ │MFS_OPEN │C │4 │D │DosOpen │ ├──────────────┼──────┼──────┼────┼───────────────────────┤ │MFS_READ │10 │4 │D │DosRead, DosReadAsync │ ├──────────────┼──────┼──────┼────┼───────────────────────┤ │MFS_TERM │14 │4 │D │DosRead, DosReadAsync │ └──────────────┴──────┴──────┴────┴───────────────────────┘
uncfscentrstruc
┌─────────────┬──────┬──────┬────┬─────────────────────────────────────┐ │Field Name │Offset│Length│Type│Description │ ├─────────────┼──────┼──────┼────┼─────────────────────────────────────┤ │UNCfsc_VpbID │0 │4 │D │Unique ID UNC VPB │ ├─────────────┼──────┼──────┼────┼─────────────────────────────────────┤ │UNCfsc_FSCptr│4 │4 │D │Hold Seg:ofs to UNC FSD's FSC │ ├─────────────┼──────┼──────┼────┼─────────────────────────────────────┤ │UNCfsc_hVPB │8 │2 │W │Handle to VPB in VPB Seg(offset) │ ├─────────────┼──────┼──────┼────┼─────────────────────────────────────┤ │UNCfsc_Active│A │2 │W │Does this entry contain UNC FSD Info?│ └─────────────┴──────┴──────┴────┴─────────────────────────────────────┘
uncliststruc
┌─────────────┬──────┬──────┬────┬─────────────────────────────────────┐ │Field Name │Offset│Length│Type│Description │ ├─────────────┼──────┼──────┼────┼─────────────────────────────────────┤ │UNCfsc_1 │0 │C │B │ │ ├─────────────┼──────┼──────┼────┼─────────────────────────────────────┤ ├─────────────┼──────┼──────┼────┼─────────────────────────────────────┤ │UNCfsc_VpbID │0 │4 │D │Unique ID UNC VPB │ ├─────────────┼──────┼──────┼────┼─────────────────────────────────────┤ │UNCfsc_FSCptr│4 │4 │D │Hold Seg:ofs to UNC FSD's FSC │ ├─────────────┼──────┼──────┼────┼─────────────────────────────────────┤ │UNCfsc_hVPB │8 │2 │W │Handle to VPB in VPB Seg(offset) │ ├─────────────┼──────┼──────┼────┼─────────────────────────────────────┤ │UNCfsc_Active│A │2 │W │Does this entry contain UNC FSD Info?│ ├─────────────┼──────┼──────┼────┼─────────────────────────────────────┤ │UNCfsc_2 │C │C │B │ │ ├─────────────┼──────┼──────┼────┼─────────────────────────────────────┤ ├─────────────┼──────┼──────┼────┼─────────────────────────────────────┤ │UNCfsc_VpbID │C │4 │D │Unique ID UNC VPB │ ├─────────────┼──────┼──────┼────┼─────────────────────────────────────┤ │UNCfsc_FSCptr│10 │4 │D │Hold Seg:ofs to UNC FSD's FSC │ ├─────────────┼──────┼──────┼────┼─────────────────────────────────────┤ │UNCfsc_hVPB │14 │2 │W │Handle to VPB in VPB Seg(offset) │ ├─────────────┼──────┼──────┼────┼─────────────────────────────────────┤ │UNCfsc_Active│16 │2 │W │Does this entry contain UNC FSD Info?│ ├─────────────┼──────┼──────┼────┼─────────────────────────────────────┤ │UNCfsc_3 │18 │C │B │ │ ├─────────────┼──────┼──────┼────┼─────────────────────────────────────┤ ├─────────────┼──────┼──────┼────┼─────────────────────────────────────┤ │UNCfsc_VpbID │18 │4 │D │Unique ID UNC VPB │ ├─────────────┼──────┼──────┼────┼─────────────────────────────────────┤ │UNCfsc_FSCptr│1C │4 │D │Hold Seg:ofs to UNC FSD's FSC │ ├─────────────┼──────┼──────┼────┼─────────────────────────────────────┤ │UNCfsc_hVPB │20 │2 │W │Handle to VPB in VPB Seg(offset) │ ├─────────────┼──────┼──────┼────┼─────────────────────────────────────┤ │UNCfsc_Active│22 │2 │W │Does this entry contain UNC FSD Info?│ ├─────────────┼──────┼──────┼────┼─────────────────────────────────────┤ │UNCfsc_4 │24 │C │B │ │ ├─────────────┼──────┼──────┼────┼─────────────────────────────────────┤ ├─────────────┼──────┼──────┼────┼─────────────────────────────────────┤ │UNCfsc_VpbID │24 │4 │D │Unique ID UNC VPB │ ├─────────────┼──────┼──────┼────┼─────────────────────────────────────┤ │UNCfsc_FSCptr│28 │4 │D │Hold Seg:ofs to UNC FSD's FSC │ ├─────────────┼──────┼──────┼────┼─────────────────────────────────────┤ │UNCfsc_hVPB │2C │2 │W │Handle to VPB in VPB Seg(offset) │ ├─────────────┼──────┼──────┼────┼─────────────────────────────────────┤ │UNCfsc_Active│2E │2 │W │Does this entry contain UNC FSD Info?│ └─────────────┴──────┴──────┴────┴─────────────────────────────────────┘