试一试DLL的调用方法
Function IFSMgr_InstallFileSystemApiHook(Paramstr...):...;stdcall,external 'DDK的Lib'

解决方案 »

  1.   

    你只能先LOADLIBERY,在试一试了
      

  2.   

    我以前的做法是按照DDK提供的头文件自己写一个接口单元。把函数定位到相关的动态库上。.Lib文件好象也只是一个接口包装,并不是真正的实现功能的代码。
      

  3.   

    哎,还有没有更详细的指教啊?
    2 GoodHope:
      就以上面的函数为例,给我上一课好吗?该如何做?
      

  4.   

    我记得IFSMgr_InstallFileSystemApiHook应该是RING0的函数啊,RING0的函数是不能在DELPHI、BCB中编译的,也就是说DELPHI、BCB无法编译成VXD文件,听说是由于版权关系。
    如果真的要用RING0的函数,必须使用非法进入RING0在调用RING0的函数,但是由于是非法进入的很多函数不能用。
    建议用汇编或者VC写个VXD,然后在DELPHI中就可以调用VXD了。:)
      

  5.   

    楼上那位,你错了。用 Delphi 和 C++Builder 可以编写 Ring0 级别的函数。简单说一点,如果你的函数作为 Ring0 级别调用,函数需要加修饰字(当然,函数内部的代码要很精炼):在 Delphi 中:
    procedure Ring0Proc(var msg: TDDMsg); stdcall; // 假设这个函数需要参数在 C++Builder 中:
    void __declspec(naked) Ring0Proc(TDDmsg &msg); // 假设这个函数需要参数说明:以上的参数类型是我假设的。具体请参见 DDK 文档。
    要编译生成 VxD 文件,只能使用微软的 MS Link 连接程序,这一点是肯定的,涉及到授权问题。但是二进制目标文件却可以由其他的编译器产生,我的意思是说,你可以用 Delphi 编译一个单元文件,这个单元文件中用 Object Pascal 实现了 VxD 的核心函数(当然是 Ring0 级别),你可以使用 Delphi 的 DCC32.EXE 编译程序编译产生 OBJ 文件(使用 -J 编译开关),然后用微软的 MASM 6.x 版本编译一个由汇编语言写成的 VxD 启动模块,将它与 Delphi 生成的 VxD 核心实现模块共同由 MS Link 连接组成 VxD。虽然过程看似麻烦,但是这是真正的 VxD DIY!用 VC++ 结合 VxDTools这类方式开发 VxD 仅仅是 VxDTools 已经为 VC++ 做好了这些我们自己做的工作,实际上是差不多的。其实仅用 C/C++ 是不能生成 VxD 的,必须借用汇编语言。但是像 VxD 启动模块这样的玩艺 VxDTools 已经为 VC++ 做好了。不要忘了,所有的 C/C++ 编译器在编译连接 C/C++ 源代码时都要先根据目标平台以及程序的内存模式选择连接一个叫 C0x.obj 的启动模块(x 为特定的字母),这个模块只可能使用汇编实现,一是因为效率,二是因为 C/C++ 编译器的实现过程。好了,扯得太远了,用 Delphi 开发 VxD 的问题网上有很多文章和源码,去找找吧。
      

  6.   

    thk Phoenix2000(Phoenix2000) 
    但我认为不要在应用系统中随便编写Vxd。它的通用性不好,容易破坏整个win98,另外我也不希望在我安装你的应用系统时给我装上Vxd。
      

  7.   

    多谢Phoenix2000(Phoenix2000)!
    问题继续!
      

  8.   

    2 wenzm(错误代码) :
      多谢!
      

  9.   

    TO :Phoenix2000(Phoenix2000)
    麻烦看一下我的问题,看看有没有什么好的解决办法
    我现在的解决办法会出现消息错判的问题
    烦死我了
      

  10.   

    这几天我很忙,这个问题的例子可能要在过几天了。不过那个NT直接操作端口的东西我找到了。好几百K呢,怎么给你?
      

  11.   

    我的DDK是2K的,不知道有没有这个函数。现在事情比较多,大致说一下吧。根据.h或者.inc文件找到函数对应的Lib文件。如果,确定不了,就在所有的Lib文件里面搜索吧^_^找到后,用二进制编辑器打开文件。开头应该是:!<arch>在文件中部会发现如下定义:
    __imp__ZwEnumerateValueKey@24。__IMPORT_DESCRIPTOR_NTOSKRNL..NTOSKRNL.EXE就是说EnumerateValueKey在NTOSKRNL.exe中,id是24,真实名字是:__imp__ZwEnumerateValueKey。
      

  12.   

    果然高手。我按照你的方法测试了一下,但是居然没有找到这个函数跟上面类似的Lib文件。
    __imp__ZwEnumerateValueKey@24。__IMPORT_DESCRIPTOR_NTOSKRNL..NTOSKRNL.EXE
    能够找到这个函数的LIB,但是我还是搞不清楚IFSMgr_InstallFileSystemApiHook怎么来的。
    只找到一个还有他的文件,但是即使这个文件,我也看不出有什么特别的地方。
    //faint
    太菜了.......
      

  13.   

    你用的是98的DDK吗?MSDN中说这个函数是98下的。
      

  14.   

    咦,结果怎么和Win2k DDK一样呢?都是在IFSMGR.INC里面有3个。再看看例子。
      

  15.   

    我明白了。这个函数并不是独立的函数。而是类似于以前中断调用的一个功能,要通过VxDCall调用来实现(DDK在VMM.inc中定义)。VxDCall(IFSMgr_InstallFileSystemApiHook);所以应该这样:int IFSMgrInstallFileSystemApiHook(pIFSFileHookFunc HookFunc)
    {
        int iResult;
        _asm mov eax [HookFunc]
        VxDCall(IFSMgr_InstallFileSystemApiHook);
        _asm mov [iResult], eax
        return(iResult);
    } 我只是大意示范一下,C++里面的内嵌汇编已经忘记该怎么写了。
      

  16.   

    哪儿不明白?
    刚才又看了一下VMM.Inc中VxD的声明。VxDCall是一个宏,我没全看明白。反正里面有句int Dyna_Link_Int,说明VxDCall就是一个软中断。IFSMgr_InstallFileSystemApiHook是一个中断功能。前面一段初始调用参数,后面一段取得返回值。
      

  17.   

    D5中根本没有VxDCall这个函数啊。
      

  18.   

    哎,还是不明白怎么调用这个函数,是不是要用汇编:
    asm
      mov eax [hookfunc]
      mov ....
      int 20
    end;
    我看了那个inc文件,好像是调用了20中断?
      

  19.   

    Inc是C格式的,可以用C++编译一下,看一下函数接口是什么。
      

  20.   

    气死我了!!!!我说怎么老编译不过去,原来是把警告当成错误了!看着编译输出窗口一阵乱滚,心也乱了,竟然没有注意到是只是警告。真真气死我了!!!!代码见下,可实现你的调用要求。IFSMgr_InstallFileSystemApiHook函数体内部汇编未经调试,纯属虚构。编译警告可以通过在每个IFSMgr_Service定义体内增加一个参数(第二个)LOCAL来消除,不过拿不准是否应该添加。#include <VMM.h>#ifndef IFSMGR_DEVICE_ID#define IFSMGR_DEVICE_ID    0x00040 /* Installable File System Manager */#define IFSMGR_INIT_ORDER   0x10000 + V86MMGR_Init_Order
    #define FSD_INIT_ORDER      0x00100 + IFSMgr_Init_Order#else
    /* ASMifdef MASM
    .errnz IFSMgr_Device_ID - 0040h
    endif
    */
    #endif
    #define IFSMgr_Service Declare_Service
    #define IFSMgr_StdCall_Service Declare_SCService
    #define IFSMgr_FastCall_Service Declare_SCServiceBegin_Service_Table(IFSMGR, 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)// 这个函数是根据MSDN给出的IFSMgr_InstallFileSystemApiHook的入口和出口参数写的
    // 除了那两句_asm语句,别的都应该没有什么问题。
    int VXDINLINE
    IFSMgr_InstallFileSystemApiHook(int HookFunc)
    {
        int iResult;
        _asm mov eax, [HookFunc]  //  也许应该是_asm mov edx, [HookFunc]
        VxDCall (IFSMgr_InstallFileSystemApiHook)
        _asm mov [iResult], eax
        return(iResult);
      

  21.   

    气死我了!!!!我说怎么老编译不过去,原来是把警告当成错误了!看着编译输出窗口一阵乱滚,心也乱了,竟然没有注意到是只是警告。真真气死我了!!!!代码见下,可实现你的调用要求。IFSMgr_InstallFileSystemApiHook函数体内部汇编未经调试,纯属虚构。编译警告可以通过在每个IFSMgr_Service定义体内增加一个参数(第二个)LOCAL来消除,不过拿不准是否应该添加。#include <VMM.h>#ifndef IFSMGR_DEVICE_ID#define IFSMGR_DEVICE_ID    0x00040 /* Installable File System Manager */#define IFSMGR_INIT_ORDER   0x10000 + V86MMGR_Init_Order
    #define FSD_INIT_ORDER      0x00100 + IFSMgr_Init_Order#else
    /* ASMifdef MASM
    .errnz IFSMgr_Device_ID - 0040h
    endif
    */
    #endif
    #define IFSMgr_Service Declare_Service
    #define IFSMgr_StdCall_Service Declare_SCService
    #define IFSMgr_FastCall_Service Declare_SCServiceBegin_Service_Table(IFSMGR, 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)// 这个函数是根据MSDN给出的IFSMgr_InstallFileSystemApiHook的入口和出口参数写的
    // 除了那两句_asm语句,别的都应该没有什么问题。
    int VXDINLINE
    IFSMgr_InstallFileSystemApiHook(int HookFunc)
    {
        int iResult;
        _asm mov eax, [HookFunc]  //  也许应该是_asm mov edx, [HookFunc]
        VxDCall (IFSMgr_InstallFileSystemApiHook)
        _asm mov [iResult], eax
        return(iResult);