⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ifsmgr.h

📁 EZ-USB系列固件下载VC++程序源码
💻 H
📖 第 1 页 / 共 2 页
字号:
// IFSMGR.H -- Declarations for Installable File System Manager Calls
// Copyright (C) 1996 by Walter Oney
// All rights reserved

#ifndef IFSMGR_H
#define IFSMGR_H

#ifdef __cplusplus
extern "C" {
#endif

#include "ifs.h"

#define IFSMGRVERSION 0x22

///////////////////////////////////////////////////////////////////////////////
// IFSMgr services

#ifndef IFSMgr_DEVICE_ID
#define IFSMgr_DEVICE_ID 0x0040
#endif

#ifndef Not_VxD

#undef IFSMgr_Service
#define IFSMgr_Service Declare_Service
#pragma warning(disable:4003)	// not enough parameters

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)

End_Service_Table(IFSMgr)

#pragma warning(default:4003)

#endif // Not_VxD

///////////////////////////////////////////////////////////////////////////////
// Inline service function definitions:

#ifndef Not_VxD
#pragma warning(disable:4035)	// missing return value

#undef NAKED
#define NAKED __declspec(naked)

DWORD VXDINLINE IFSMgr_Get_Version()
	{
	VxDCall(IFSMgr_Get_Version)
	_asm jnc okay
	_asm xor eax, eax
	_asm okay:
	}

#define NORMAL_FSD 0
#define DEFAULT_FSD 1

int NAKED IFSMgr_RegisterCFSD(pIFSFunc fcn, UINT version, string_t* ppDeviceNames)
	{
	VxDJmp(IFSMgr_RegisterCFSD)
	}

// Command codes in ir_flags for calls to mailslot procedure:

#define MSLOT_CREATE 0
#define MSLOT_DELETE 1
#define MSLOT_WRITE 2

int NAKED IFSMgr_RegisterMailSlot(pIFSFunc fcn, UINT version)
	{
	VxDJmp(IFSMgr_RegisterMailSlot)
	}

int NAKED IFSMgr_RegisterMount(pIFSFunc fcn, UINT version, UINT defoption)
	{
	VxDJmp(IFSMgr_RegisterMount)
	}

int NAKED IFSMgr_RegisterNet(pIFSFunc fcn, UINT version, UINT netid)
	{
	VxDJmp(IFSMgr_RegisterNet)
	}

#define DEBUG_FENCE_ON 1

#ifdef DEBUG
VOID NAKED IFSMgr_RegisterHeap(pIFSFunc fcn, UINT flag)
	{
	VxDJmp(IFSMgr_RegisterHeap)
	}
#else
#define IFSMgr_RegisterHeapUser(a1,a2)
#endif

PVOID NAKED IFSMgr_GetHeap(UINT size)
	{
	VxDJmp(IFSMgr_GetHeap)
	}

VOID NAKED IFSMgr_RetHeap(PVOID p)
	{
	VxDJmp(IFSMgr_RetHeap)
	}

#ifdef DEBUG
#define CHECKHEAP(p) IFSMgr_CheckHeap(p, __FILE__, __LINE__);
#define CHECKHEAPITEM(p) IFSMgr_CheckHeapItem(p, __FILE__, __LINE__);
int NAKED IFSMgr_CheckHeap(PVOID pmem, char* filename, UINT line)
	{
	VxDJmp(IFSMgr_CheckHeap)
	}
int NAKED IFSMgr_CheckHeapItem(PVOID pmem, char* filename, UINT line)
	{
	VxDJmp(IFSMgr_CheckHeapItem)
	}
#else
#define CHECKHEAP(p)
#define CHECKHEAPITEM(p)
#define IFSMgr_CheckHeap(a1, a2, a3)
#define IFSMgr_CheckHeapItem(a1, a2, a3)
#endif

VOID NAKED IFSMgr_FillHeapSpare()
	{
	VxDJmp(IFSMgr_FillHeapSpare)
	}

typedef DWORD nettime_t;		// # seconds since 1/1/1970

typedef struct nettimex_t
	{
	DWORD dwSeconds;			// # seconds since 1/1/1970
	DWORD dwMilliseconds;		// milliseconds in last second
	} nettimex_t;

typedef struct dostimex_t
	{
	dos_time dostime;			// time & data in DOS format
	DWORD dwMilliseconds;		// # milliseconds in last 2-sec interval
	} dostimex_t;

nettimex_t NAKED IFSMgr_Get_NetTimeEx()
	{
	VxDJmp(IFSMgr_Get_NetTime)
	}

nettime_t NAKED IFSMgr_Get_NetTime()
	{
	VxDJmp(IFSMgr_Get_NetTime)
	}

dostimex_t NAKED IFSMgr_Get_DOSTimeEx()
	{
	VxDJmp(IFSMgr_Get_DOSTime)
	}

typedef dos_time dostime_t;

dostime_t NAKED IFSMgr_Get_DOSTime()
	{
	VxDJmp(IFSMgr_Get_DOSTime)
	}

dostime_t NAKED IFSMgr_NetToDosTime(DWORD nettime)
	{
	VxDJmp(IFSMgr_NetToDosTime)
	}

DWORD NAKED IFSMgr_DosToNetTime(dostime_t dostime)
	{
	VxDJmp(IFSMgr_DosToNetTime)
	}

_FILETIME NAKED IFSMgr_DosToWin32Time(dostime_t dostime)
	{
	VxDJmp(IFSMgr_DosToWin32Time)
	}

dostime_t NAKED IFSMgr_Win32ToDosTime(_FILETIME win32time)
	{
	VxDJmp(IFSMgr_Win32ToDosTime)
	}

_FILETIME NAKED IFSMgr_NetToWin32Time(DWORD nettime)
	{
	VxDJmp(IFSMgr_NetToWin32Time)
	}

DWORD NAKED IFSMgr_Win32ToNetTime(_FILETIME win32time)
	{
	VxDJmp(IFSMgr_Win32ToNetTime)
	}

int NAKED IFSMgr_GetTimeZoneBias()
	{
	VxDJmp(IFSMgr_GetTimeZoneBias)
	}

VOID NAKED IFSMgr_SetupConnection(pioreq pir, UINT resopt, UINT restype)
	{
	VxDJmp(IFSMgr_SetupConnection)
	}

VOID NAKED IFSMgr_DerefConnection(pioreq pir)
	{
	VxDJmp(IFSMgr_DerefConnection)
	}

typedef union tagDPL32
	{
	struct DPL32_DW 
		{
		DWORD DPL32_EAX;
		DWORD DPL32_EBX;
		DWORD DPL32_ECX;
		DWORD DPL32_EDX;
		DWORD DPL32_ESI;
		DWORD DPL32_EDI;
		DWORD DPL32_EBP;
		WORD  DPL32_UID;
		WORD  DPL32_PID;
		DWORD DPL32_DTA;
		BYTE  DPL32_FLAGS;
		BYTE  DPL32_PAD[3];
		};
	struct DPL32_W
		{
		WORD DPL32_AX, junk1;
		WORD DPL32_BX, junk2;
		WORD DPL32_CX, junk3;
		WORD DPL32_DX, junk4;
		WORD DPL32_SI, junk5;
		WORD DPL32_DI, junk6;
		WORD DPL32_BP, junk7;
		DWORD DPL32_PID32;
		};
	struct DPL32_B
		{
		BYTE DPL32_AL, APL32_AH;
		WORD junk8;
		BYTE DPL32_BL, APL32_BH;
		WORD junk9;
		BYTE DPL32_CL, APL32_CH;
		WORD junk10;
		BYTE DPL32_DL, APL32_DH;
		WORD junk11;
		};
	} DPL32, *PDPL32;

#define DPL32_USE_MASK		0x03
#define DPL32_USE_ANSI		0
#define DPL32_USE_OEM		1
#define DPL32_USE_UNICODE	2

#define DPL32_8_3_MATCHING	0x04

BOOL VXDINLINE IFSMgr_ServerDOSCall(HVM hVM, UINT fcn, PDPL32 dpl, PCRS pRegs)
	{
	_asm push ebp
	_asm mov ebx, hVM
	_asm mov ecx, fcn
	_asm mov esi, dpl
	_asm mov ebp, pRegs
	VxDCall(IFSMgr_ServerDOSCall)
	_asm pop ebp
	_asm cmc
	_asm sbb eax, eax
	}

typedef int (_cdecl *pMSFunc)(PVOID pdata, UINT len, BYTE lana);

int NAKED IFSMgr_MakeMailSlot(pMSFunc fcn, path_t pmsname, PDWORD pmshand)
	{
	VxDJmp(IFSMgr_MakeMailSlot)
	}

int NAKED IFSMgr_DeleteMailSlot(DWORD mshand)
	{
	VxDJmp(IFSMgr_DeleteMailSlot)
	}

int NAKED IFSMgr_WriteMailSlot(path_t pmsname, char* pdata, WORD len, BYTE lana, string_t rname, PVOID xtra)
	{
	VxDJmp(IFSMgr_WriteMailSlot)
	}

int NAKED IFSMgr_SetErrString(char* errstr, UINT errorcode, UINT table)
	{
	VxDJmp(IFSMgr_SetErrString)
	}

NAKED PCHAR IFSMgr_GetErrString(UINT errorcode, UINT table)
	{
	VxDJmp(IFSMgr_GetErrString)
	}

typedef void (__cdecl *PPREAMBLE)(); 

NAKED PPREAMBLE IFSMgr_SetReqHook(UINT request, PPREAMBLE preamble)
	{
	VxDJmp(IFSMgr_SetReqHook)
	}

typedef void (__cdecl *PPATHCHECKER)();

NAKED PPATHCHECKER IFSMgr_SetPathHook(PPATHCHECKER fcn)
	{
	VxDJmp(IFSMgr_SetPathHook)
	}

#endif // Not_VxD

typedef struct _LM_GUID {
	WORD			guid_uid;		// LM10 style user id
	DWORD			guid_serial;	// user record serial number
	BYTE			guid_rsvd[10];	// pad to 16 bytes
	} _LM_GUID;

typedef struct use_info_2 {
	char            ui2_local[9];
	char            ui2_pad_1;
	char*			ui2_remote;
	char*			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*		    ui2_dirname;        
	struct _LM_GUID ui2_dfs_id;         
	} use_info_2, *puse_info_2;

#ifndef Not_VxD

int NAKED IFSMgr_UseAdd(pioreq pir, int proId, netuse_info* pinfo)
	{
	VxDJmp(IFSMgr_UseAdd)
	}

int NAKED IFSMgr_InitUseAdd(puse_info_2 pui2, int proId, int lana)
	{
	VxDJmp(IFSMgr_InitUseAdd)
	}

int NAKED IFSMgr_UseDel(pioreq pir, int proId, netuse_info* pinfo)
	{
	VxDJmp(IFSMgr_UseDel)
	}

int NAKED IFSMgr_DelAllUses(int proId, int force)
	{
	VxDJmp(IFSMgr_DelAllUses)
	}

VOID NAKED IFSMgr_DoDelAllUses(pioreq pir)
	{
	VxDJmp(IFSMgr_DoDelAllUses)
	}

#if 0
int VXDLINLINE NAKED IFSMgr_FSDMapFHtoIOREQ(pioreq pir, WORD doshandle)
	{
	VxDJmp(IFSMgr_FSDMapFHtoIOREQ)
	}
#endif

int NAKED IFSMgr_CheckDelResource(PVOID rh, int force, BOOL fDelFlag)
	{
	VxDJmp(IFSMgr_CheckDelResource)
	}

int NAKED IFSMgr_SetupFailedConnection(pioreq pir, PDWORD pProId)
	{
	VxDJmp(IFSMgr_SetupFailedConnection)
	}

int NAKED IFSMgr_SetLoopback(char* pszUNCPath, char* pszLocalPath)
	{
	VxDJmp(IFSMgr_SetLoopback)
	}

int NAKED IFSMgr_ClearLoopback(char* pszUNCPath)
	{
	VxDJmp(IFSMgr_ClearLoopback)
	}

VOID NAKED IFSMgr_Block(DWORD key)
	{
	VxDJmp(IFSMgr_Block)
	}

VOID NAKED IFSMgr_BlockNoEvents(DWORD key)
	{
	VxDJmp(IFSMgr_BlockNoEvents)
	}

VOID NAKED IFSMgr_Wakeup(DWORD key)
	{
	VxDJmp(IFSMgr_Wakeup)
	}

VOID NAKED IFSMgr_Yield()
	{
	VxDJmp(IFSMgr_Yield)
	}

VOID NAKED IFSMgr_SchedEvent(pevent pev, DWORD time)
	{
	VxDJmp(IFSMgr_SchedEvent)
	}

VOID NAKED IFSMgr_QueueEvent(pevent pev)
	{
	VxDJmp(IFSMgr_QueueEvent)
	}

VOID NAKED IFSMgr_KillEvent(pevent pev)
	{
	VxDJmp(IFSMgr_KillEvent)
	}

VOID NAKED IFSMgr_FreeIOReq(pioreq pir)
	{
	VxDJmp(IFSMgr_FreeIOReq)
	}

VOID NAKED IFSMgr_RunScheduledEvents()
	{
	VxDJmp(IFSMgr_RunScheduledEvents)
	}

UINT NAKED IFSMgr_MetaMatch(string_t pUniPattern, string_t pUniName, int matchSem)
	{
	VxDJmp(IFSMgr_MetaMatch)
	}

int NAKED IFSMgr_TransMatch(pioreq pir, srch_entry* pse, string_t pattern, _WIN32_FIND_DATA* pFindBuf)
	{
	VxDJmp(IFSMgr_TransMatch)
	}

UINT NAKED UniToBCSPath(PBYTE pBCSPath, PathElement* pUniPath, UINT maxLength, int charSet)
	{
	VxDJmp(UniToBCSPath)
	}

UINT NAKED UniToBCS(PBYTE pBCSPath, string_t pUniPath, UINT length, UINT maxLength, UINT charSet)
	{
	VxDJmp(UniToBCS)
	}

UINT NAKED BCSToUni(string_t pUniStr, PBYTE pBCSStr, UINT length, int charSet)
	{
	VxDJmp(BCSToUni)
	}

UINT NAKED BcsToBcs(PBYTE pDest, PBYTE pSrc, UINT dstCharSet, UINT srcCharSet, UINT MaxLen)
	{
	VxDJmp(BcsToBcs)
	}

UINT NAKED BcsToBcsUpper(PBYTE pDest, PBYTE pSrc, UINT dstCharSet, UINT srcCharSet, UINT MaxLen)
	{
	VxDJmp(BcsToBcsUpper)
	}

UINT NAKED UniCharToOEM(WORD uniChar)
	{
	VxDJmp(UniCharToOEM)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -