📄 ifsmgr.inc
字号:
;********************************************************************;
;** Copyright(c) Microsoft Corp., 1990-1993 **;
;********************************************************************;
;*** IFSMgr service definitions
ifndef IFSMgr_Device_ID
IFSMgr_Device_ID equ 00040h
else
.errnz IFSMgr_Device_ID - 00040h
endif
Begin_Service_Table IFSMgr
IFSMgr_Service IFSMgr_Get_Version
IFSMgr_Service IFSMgr_RegisterMount
IFSMgr_Service IFSMgr_RegisterNet
IFSMgr_Service IFSMgr_RegisterMailSlot
IFSMgr_Service IFSMgr_Attach
IFSMgr_Service IFSMgr_Detach
IFSMgr_Service IFSMgr_Get_NetTime
IFSMgr_Service IFSMgr_Get_DOSTime
IFSMgr_Service IFSMgr_SetupConnection
IFSMgr_Service IFSMgr_DerefConnection
IFSMgr_Service IFSMgr_ServerDOSCall
IFSMgr_Service IFSMgr_CompleteAsync
IFSMgr_Service IFSMgr_RegisterHeap
IFSMgr_Service IFSMgr_GetHeap
IFSMgr_Service IFSMgr_RetHeap
IFSMgr_Service IFSMgr_CheckHeap
IFSMgr_Service IFSMgr_CheckHeapItem
IFSMgr_Service IFSMgr_FillHeapSpare
IFSMgr_Service IFSMgr_Block
IFSMgr_Service IFSMgr_Wakeup
IFSMgr_Service IFSMgr_Yield
IFSMgr_Service IFSMgr_SchedEvent
IFSMgr_Service IFSMgr_QueueEvent
IFSMgr_Service IFSMgr_KillEvent
IFSMgr_Service IFSMgr_FreeIOReq
IFSMgr_Service IFSMgr_MakeMailSlot
IFSMgr_Service IFSMgr_DeleteMailSlot
IFSMgr_Service IFSMgr_WriteMailSlot
IFSMgr_Service IFSMgr_PopUp
IFSMgr_Service IFSMgr_printf
IFSMgr_Service IFSMgr_AssertFailed
IFSMgr_Service IFSMgr_LogEntry
IFSMgr_Service IFSMgr_DebugMenu
IFSMgr_Service IFSMgr_DebugVars
IFSMgr_Service IFSMgr_GetDebugString
IFSMgr_Service IFSMgr_GetDebugHexNum
IFSMgr_Service IFSMgr_NetFunction
IFSMgr_Service IFSMgr_DoDelAllUses
IFSMgr_Service IFSMgr_SetErrString
IFSMgr_Service IFSMgr_GetErrString
IFSMgr_Service IFSMgr_SetReqHook
IFSMgr_Service IFSMgr_SetPathHook
IFSMgr_Service IFSMgr_UseAdd
IFSMgr_Service IFSMgr_UseDel
IFSMgr_Service IFSMgr_InitUseAdd
IFSMgr_Service IFSMgr_ChangeDir
IFSMgr_Service IFSMgr_DelAllUses
IFSMgr_Service IFSMgr_CDROM_Attach
IFSMgr_Service IFSMgr_CDROM_Detach
IFSMgr_Service IFSMgr_Win32DupHandle
IFSMgr_Service IFSMgr_Ring0_FileIO
IFSMgr_Service IFSMgr_Win32_Get_Ring0_Handle
IFSMgr_Service IFSMgr_Get_Drive_Info
IFSMgr_Service IFSMgr_Ring0GetDriveInfo
IFSMgr_Service IFSMgr_BlockNoEvents
IFSMgr_Service IFSMgr_NetToDosTime
IFSMgr_Service IFSMgr_DosToNetTime
IFSMgr_Service IFSMgr_DosToWin32Time
IFSMgr_Service IFSMgr_Win32ToDosTime
IFSMgr_Service IFSMgr_NetToWin32Time
IFSMgr_Service IFSMgr_Win32ToNetTime
IFSMgr_Service IFSMgr_MetaMatch
IFSMgr_Service IFSMgr_TransMatch
IFSMgr_Service IFSMgr_CallProvider
IFSMgr_Service UniToBCS
IFSMgr_Service UniToBCSPath
IFSMgr_Service BCSToUni
IFSMgr_Service UniToUpper
IFSMgr_Service UniCharToOEM
IFSMgr_Service CreateBasis
IFSMgr_Service MatchBasisName
IFSMgr_Service AppendBasisTail
IFSMgr_Service FcbToShort
IFSMgr_Service ShortToFcb
IFSMgr_Service IFSMgr_ParsePath
IFSMgr_Service Query_PhysLock
IFSMgr_Service _VolFlush
IFSMgr_Service NotifyVolumeArrival
IFSMgr_Service NotifyVolumeRemoval
IFSMgr_Service QueryVolumeRemoval
IFSMgr_Service IFSMgr_FSDUnmountCFSD
IFSMgr_Service IFSMgr_GetConversionTablePtrs
IFSMgr_Service IFSMgr_CheckAccessConflict
IFSMgr_Service IFSMgr_LockFile
IFSMgr_Service IFSMgr_UnlockFile
IFSMgr_Service IFSMgr_RemoveLocks
IFSMgr_Service IFSMgr_CheckLocks
IFSMgr_Service IFSMgr_CountLocks
IFSMgr_Service IFSMgr_ReassignLockFileInst
IFSMgr_Service IFSMgr_UnassignLockList
IFSMgr_Service IFSMgr_MountChildVolume
IFSMgr_Service IFSMgr_UnmountChildVolume
IFSMgr_Service IFSMgr_SwapDrives
IFSMgr_Service IFSMgr_FSDMapFHtoIOREQ
IFSMgr_Service IFSMgr_FSDParsePath
IFSMgr_Service IFSMgr_FSDAttachSFT
IFSMgr_Service IFSMgr_GetTimeZoneBias
IFSMgr_Service IFSMgr_PNPEvent
IFSMgr_Service IFSMgr_RegisterCFSD
IFSMgr_Service IFSMgr_Win32MapExtendedHandleToSFT
IFSMgr_Service IFSMgr_DbgSetFileHandleLimit
IFSMgr_Service IFSMgr_Win32MapSFTToExtendedHandle
IFSMgr_Service IFSMgr_FSDGetCurrentDrive
IFSMgr_Service IFSMgr_InstallFileSystemApiHook
IFSMgr_Service IFSMgr_RemoveFileSystemApiHook
IFSMgr_Service IFSMgr_RunScheduledEvents
IFSMgr_Service IFSMgr_CheckDelResource
IFSMgr_Service IFSMgr_Win32GetVMCurdir
IFSMgr_Service IFSMgr_SetupFailedConnection
IFSMgr_Service _GetMappedErr
IFSMgr_Service ShortToLossyFcb
IFSMgr_Service IFSMgr_GetLockState
IFSMgr_Service BcsToBcs
IFSMgr_Service IFSMgr_SetLoopback
IFSMgr_Service IFSMgr_ClearLoopback
IFSMgr_Service IFSMgr_ParseOneElement
IFSMgr_Service BcsToBcsUpper
IFSMgr_Service IFSMgr_DeregisterFSD
IFSMgr_Service IFSMgr_RegisterFSDWithPriority
IFSMgr_Service IFSMgr_Get_DOSTimeRounded
IFSMgr_Service _LongToFcbOem
IFSMgr_Service IFSMgr_GetRing0FileHandle
IFSMgr_Service IFSMgr_UpdateTimezoneInfo
IFSMgr_Service IFSMgr_Ring0IsCPSingleByte
End_Service_Table IFSMgr
;** IFSMgr_Get_Version - Get version number
;
; This service is always valid.
;
; Entry None
; Exit EAX = version number (3.10 for this release)
; 'C' clear
; Uses EAX, Flags
IFSMGRVERSION equ 022h
;** IFSMgr_RegisterMount - register a filesystem provider
;
; A filesystem provider calls this service to register a mount
; routine with the redirector.
;
; An FSD using this service to register itself always gets a
; priority of FS_DEFAULT_PRIORITY. To specify a priority, the
; FSD must use the service IFSMgr_RegisterFSDWithPriority.
;
; This procedure uses the C6 386 _cdecl calling sequence
;
; Entry TOS = Entrypoint for providers mount routine
; TOS + 4 = Version of IFSMGR provider was built for
; TOS + 8 = 1 if default FSD is requesting mount
; = 0 if normal FSD is requesting mount
; Exit EAX = Provider ID (-1 if error)
; caller clears argument from stack
;
; Uses C Registers
;** MountFS - filesystem provider mount routine
;
; This procedure uses the C6 386 _cdecl calling sequence
;
; Entry TOS = pointer to IOReq
; ir_flags - 0 (indicates MOUNT)
; ir_gi.g_ptr - flat address of BDD (from BlockDev)
; ir_pos - first sector (physical sector # of logical sector 0)
; ir_drv - drive to mount (0=A:, 1=B:, ...)
;
; Exit EAX = 0 if success, non-zero if error
; if success,
; ir_pr = pointer to provider specific information
; ir_gi = flat address of entry point table
; dword number of entries in table
; dword NetDelete
; dword NetDir
; dword NetFileAttributes
; dword NetFileInfo
; dword NetFlush
; dword NetGetDiskInfo
; dword NetOpen
; dword NetRename
; dword NetSearch
; dword ShutDown
;
; Uses C Registers (EAX, ECX, EDX may be stomped)
;** IFSMgr_RegisterNet - register a network provider
;
; A filesystem provider calls this service to register a
; connect routine with the redirector.
;
; An FSD using this service to register itself always gets a
; priority of FS_DEFAULT_PRIORITY. To specify a priority, the
; FSD must use the service IFSMgr_RegisterFSDWithPriority.
;
; Versioning:
; The FSD should first call IFSMgr_Get_Version. If the
; version returned by the IFS Manager is older than the
; FSD is prepared to handle, the FSD should no come up.
;
; The version number the FSD uses when calling IFSMgr_RegisterNet
; should be IFSMGRVERSION for the newest version of the IFS Manager
; that the FSD knows how to handle. If the IFS Manager does not
; support that version, it will return an error for this call.
;
; Entry TOS = Entrypoint for providers connect routine
; TOS + 4 = FSD version number
; Exit EAX = Provider ID (-1 if error)
; caller clears argument from stack
; Uses C Registers
;** IFSMgr_RegisterMailSlot - register a network mailslot provider
;
; A filesystem provider calls this service to register itself as a
; mailslot provider.
;
; An FSD using this service to register itself always gets a
; priority of FS_DEFAULT_PRIORITY. To specify a priority, the
; FSD must use the service IFSMgr_RegisterFSDWithPriority.
;
; The version number the FSD uses when calling this function
; should be IFSMGRVERSION for the newest version of the IFS Manager
; that the FSD knows how to handle. If the IFS Manager does not
; support that version, it will return an error for this call.
;
; This procedure uses the C6 386 _cdecl calling sequence
;
; Entry TOS = Entrypoint for providers mailslot handling routine
; TOS + 4 = FSD version number
; Exit EAX = Provider ID (-1 if error)
; caller clears argument from stack
; Uses C Registers
;** MailSlotFunction - Handle a mailslot request
;
; Entry TOS - pointer to IOReq
; ir_flags = 0 - Mailslot just openned
; ir_options - number of mailslots now openned
; ir_flags = 1 - Mailslot closed
; ir_options - number of mailslots still openned
; ir_flags = 2 - Write remote 2nd class mailslot
; ir_ppath - Unicode string containing \MAILSLOT\<path>
; ir_ppath2 - 16 character remote server name
; ir_length - length of users buffer
; ir_options - priority of message
; ir_timeout - timeout
;** Connect - network provider connect routine
;
; This procedure uses the C6 386 _cdecl calling sequence
;
; Entry TOS = pointer to IOReq
;** IFSMgr_Attach
;** IFSMgr_Detach
;** IFSMgr_InitUseAdd
;** IFSMgr_UseAdd
;
; This procedure uses the C6 386 _cdecl calling sequence
;
; The use_info_2 structure is of the form:
;
; typedef struct _LM_GUID {
; unsigned short guid_uid; /* LM10 style user id */
; unsigned long guid_serial; /* user record serial number */
; unsigned char guid_rsvd[10]; /* pad out to 16 bytes for now */
; } LM_GUID;
;
; struct use_info_2 {
; --> char ui2_local[DEVLEN+1];
; char ui2_pad_1;
; --> char FAR * ui2_remote;
; --> char FAR * ui2_password;
; unsigned short ui2_status;
; --> short ui2_asg_type;
; unsigned short ui2_refcount;
; unsigned short ui2_usecount;
; --> unsigned short ui2_res_type;
; uar FAR * ui2_remote;
; --> char FAR * ui2_password;
; unsigned short ui2_status;
; --> short ui2_asg_type;
; unsigned short ui2_refcount;
; unsigned short ui2_usecount;
; --> unsigned short ui2_res_type;
; unsigned short ui2_flags;
; unsigned short ui2_usrclass;
; void FAR * ui2_dirname;
; struct _LM_GUID ui2_dfs_id;
; }; /* use_info_2 */
;
; This is the netuse_info form:
;
; netuse_info {
; void *nu_data;
; int nu_info;
; unsigned long nu_flags;
; unsigned long nu_rsvd;
; }; /* netuse_info */
;
; The fields marked with --> should be filled in. All other fields should
; be set to zero except ui2_res_type which should be set to USE_RES_UNC
;
; For IFSMgr_InitUseAdd (connection will be set up disconnected)
; Entry TOS = pointer to use_info_2 structure (pointers must be flat)
; TOS + 4 = Provider ID (may be -1 for all providers)
; Exit EAX = error code (0 for success)
;
; The FSD may call this api with a NULL ptr for the IOReq, in this
; case a ptr to a filled in netuse_info struct must be passed as
; the third parameter.
;
; For IFSMgr_UseAdd
; Entry TOS = pointer to IOReq
; ir_data = pointer to use_info_2 structure (pointers must be flat)
; ir_flags = 1 if connection should be set up disconnected, 0 otherwise
; TOS + 4 = Provider ID (may be -1 for all providers)
; TOS + 8 = ptr to netuse_info struct if ptr to IOReq is null otherwise pass null.
; Exit ir_error set properly (0 for success)
;
;** IFSMgr_UseDel
;
; This procedure uses the C6 386 _cdecl calling sequence
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -