亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? filemon.c

?? File System Driver for monitorinf File system Activity.
?? C
字號:
/*
FILEMON.C -- File monitoring VxD for Windows 95
For Win32 app: CONLDR.C
Stan Mitchell

See Stan Mitchell, "Monitoring Windows 95 File Activity in Ring 0,"
Windows/DOS Developer's Journal, July 1995, pp. 6-24.

Also see ftp://ftp.ora.com/pub/examples/windows/win95.update/regwiz.html
*/

/*****    Listing 1    FILEMON.C   *****/
#include <string.h>
#define WANTVXDWRAPS
#include <basedef.h>
#include <vmm.h>
#include <debug.h>
#include <vwin32.h>
#include <winerror.h>
#include <vxdwraps.h>
#include <ifs.h>
enum IFSMGR_SERVICES { __UniToBCSPath=0x00400041,
    __IFSMgr_InstallFileSystemApiHook=0x00400067,
    __IFSMgr_RemoveFileSystemApiHook=0x00400068 };

/* The buffer contains 256 LINEs, the first is reserved */
/* for status, lines 0 through 254 are used for output lines */
#define MAXLINE 254
typedef char LINE[128];

#pragma VxD_LOCKED_DATA_SEG

char* szOp[] = { "Read", "Write", "FndNext", "FcnNext",
  "?","?","?","?","?","?", "Seek", "Close", "Commit",
  "FLocks", "FTimes", "PipeReq", "HdlInfo", "EnumHdl",
  "FndClose", "FcnClose", "?","?","?","?","?","?","?",
  "?","?","?", "Conn", "Delete", "Dir", "FAttrib",
  "Flush", "DiskInfo", "Open", "Rename", "Search",
  "Query", "DisConn", "UNCPipeReq", "Ioctl", "DiskParm",
  "FndOpen", "Dasdio" };

ppIFSFileHookFunc ppPrevHook; /* the previous hooker */
HTIMEOUT hTimeOut  = 0;
DWORD hVMEvent     = 0;
HANDLE hEventRing0 = 0;
HVM hSysVM;
LINE* pLineBuf     = NULL; /* buffer for output lines */
DWORD* pdw         = NULL;
int nLastLine      = -1;

#define DIOC_REQEVENTS 1
#define DIOC_SHUTDOWN  2

#pragma VxD_LOCKED_CODE_SEG

#pragma intrinsic(strcpy,strcat,memcpy)

/* Wrapper for the IFS Mgr Service, UniToBCSPath */
UINT __declspec( naked )
UniToBCSDrvPath( UCHAR* pStr, PathElement* pPth,
                 UINT maxL, int cSet, int drv ) {
    _asm push ebp      _asm mov ebp,esp
    _asm push ebx
    _asm mov  ebx,[pStr]
    _asm mov  eax,[drv]
    _asm cmp  al,0ffh /* UNC volume? */
    _asm jz   skipdrv
    _asm add  al,'@'
    _asm mov  byte ptr [ebx],al
    _asm inc  ebx
    _asm mov  byte ptr [ebx],':'
    _asm inc  ebx
 skipdrv:
    _asm push [cSet]  /* Arguments pushed */
    _asm push [maxL]  /* in cdecl order */
    _asm push [pPth]
    _asm push ebx
    VxDCall( UniToBCSPath );
    _asm add esp,4*4
    _asm pop ebx      /* eax returns byte cnt */
    _asm leave   _asm ret
    }

/* Called as System VM Event */
void __declspec( naked ) SetWin32Event( void ) {
    _asm push ebp   _asm mov ebp,esp
    _asm mov eax,[edx]
    VxDCall( _VWIN32_SetWin32Event );
    hVMEvent = 0;
    _asm leave   _asm ret
    }

#define LPtr(a)        (&pLineBuf[idx][a])
#ifdef SHOW_HANDLES
#define AddResHdl(a)   _Sprintf(LPtr(a),"{%08lx} ",pir->ir_rh)
#define AddFileHdl(a)  _Sprintf(LPtr(a),"[%08lx] ",pir->ir_fh)
#define SkpFileHdl(a)  _Sprintf(LPtr(a), "%11s"," ")
#else
#define AddResHdl(a)   0
#define AddFileHdl(a)  0
#define SkpFileHdl(a)  0
#endif
#define AddUniPath(a,n) UniToBCSDrvPath( LPtr(a), pUniPath,\
                                       n, BCS_WANSI, drv)
#define CatStr(s)      strcat(pLineBuf[idx],s)

/* The FileSystem Hook Function */
int __cdecl FileHook( pIFSFunc pfn,
    int fn, int drv, int res,
    int cp, pioreq pir )
    {
    int retc, idx, i;
    PathElement* pUniPath;
    unsigned short preOptions;

    /* Go ahead and call down the chain to the FSD ...
     *   we look at the IFSFunc only if it succeeds */
    preOptions = pir->ir_options;

    retc = (*(*ppPrevHook))( pfn, fn, drv, res, cp, pir );
    if ( !hEventRing0 ) return retc;

    // Functions which are included in this switch statement
    //  are not monitored
    switch( fn ) {

        case IFSFN_FILETIMES:   /* "GetFTimes" */
            if ( (pir->ir_flags != GET_MODIFY_DATETIME) &&
                 (pir->ir_flags != GET_LAST_ACCESS_DATETIME) &&
                 (pir->ir_flags != GET_CREATION_DATETIME) )
                break;

        case IFSFN_READ:        /* "Read" */
        case IFSFN_WRITE:       /* "Write" */
        case IFSFN_SEEK:        /* "Seek" */
        case IFSFN_CLOSE:       /* "Close" */
        case IFSFN_FINDCLOSE:
        case IFSFN_FCNCLOSE:
        case IFSFN_FINDNEXT:    /* "Next" */
        case IFSFN_FCNNEXT:
            return retc;
        }

    /* Point to the Unicode path components of the file */
    pUniPath = pir->ir_ppath->pp_elements;

    _asm pushfd
    _asm cli
    if ( ++nLastLine > MAXLINE ) nLastLine=0;
    idx = nLastLine;
    _asm popfd
    i = _Sprintf( pLineBuf[idx], " %3d %c %10s %c ",
            idx, pir->ir_error ? 'e' : ' ', szOp[fn],
            res & IFSFH_RES_CFSD ? 'c' : ' ' );

    switch( fn )
        {
    case IFSFN_READ:    case IFSFN_WRITE:
        i+=AddFileHdl(i); i+=AddResHdl(i);
        _Sprintf( LPtr(i), "leng: %08lx %c%c",
            pir->ir_length,
            (preOptions & R0_SWAPPER_CALL) ? 's' : ' ',
            (preOptions & R0_MM_READ_WRITE) ? 'm' : ' ' );
        break;
    case IFSFN_SEEK:        case IFSFN_CLOSE:
    case IFSFN_FINDNEXT:    case IFSFN_FINDCLOSE:
    case IFSFN_FCNNEXT:     case IFSFN_FCNCLOSE:
    case IFSFN_COMMIT:      case IFSFN_ENUMHANDLE:
    case IFSFN_FILELOCKS:
        i+=AddFileHdl(i);  AddResHdl(i);
        break;
    case IFSFN_IOCTL16DRIVE: case IFSFN_SEARCH:
        i+=SkpFileHdl(i);  i+=AddResHdl(i);
        _Sprintf(LPtr(i),"SubFunction: %04X",pir->ir_flags);
        break;
    case IFSFN_QUERY:
        i+=SkpFileHdl(i);  i+=AddResHdl(i);
        i+=_Sprintf(LPtr(i),"Level %d ",preOptions);
        break;
    case IFSFN_DELETE:  case IFSFN_FINDOPEN:
    case IFSFN_RENAME:
        i+=SkpFileHdl(i);  i+=AddResHdl(i);
        if ( fn == IFSFN_RENAME ) {
            i+=AddUniPath(i,45);
            pUniPath = pir->ir_ppath2->pp_elements;
            if ( drv != 0xff ) i+=2;
            CatStr(" -> "); i+=4;
            AddUniPath(i,45);
            }
        else i+=AddUniPath(i,80);
        break;
    case IFSFN_CONNECT:
        i+=SkpFileHdl(i);  AddResHdl(i);
        switch( pir->ir_flags ) {
        case RESTYPE_WILD:
            CatStr("wild card"); break;
        case RESTYPE_DISK:
            CatStr("disk"); break;
        case RESTYPE_SPOOL:
            CatStr("spooled printer"); break;
        case RESTYPE_CHARDEV:
            CatStr("char device"); break;
        case RESTYPE_IPC:
            CatStr("ipc"); break;
            }
        break;
    case IFSFN_FILEATTRIB:
        if ( pir->ir_flags == GET_ATTRIBUTES )
            memcpy( &pLineBuf[idx][8], "Get", 3 );
        else memcpy( &pLineBuf[idx][8], "Set", 3 );
        i+=SkpFileHdl(i);  i+=AddResHdl(i);
        AddUniPath(i,80);
        break;
    case IFSFN_FILETIMES:
        if ( (pir->ir_flags == GET_MODIFY_DATETIME) ||
             (pir->ir_flags == GET_LAST_ACCESS_DATETIME) ||
             (pir->ir_flags == GET_CREATION_DATETIME) )
            memcpy( &pLineBuf[idx][9], "Get", 3 );
        else memcpy( &pLineBuf[idx][9], "Set", 3 );
        i+=AddFileHdl(i);  i+=AddResHdl(i);
        break;
    case IFSFN_DIR:
        if ( pir->ir_flags == CREATE_DIR )
            memcpy( &pLineBuf[idx][12], "Mk", 2 );
        else if ( pir->ir_flags == DELETE_DIR )
            memcpy( &pLineBuf[idx][12], "Rd", 2 );
        else if ( pir->ir_flags == CHECK_DIR )
            memcpy( &pLineBuf[idx][12], "Ck", 2 );
        else memcpy( &pLineBuf[idx][11], "Qry", 3 );
        i+=SkpFileHdl(i);  i+=AddResHdl(i);
        AddUniPath(i,80);
        break;
    case IFSFN_OPEN:
        i+=AddFileHdl(i); i+=AddResHdl(i);
        AddUniPath(i,80);
        if ( pir->ir_options == ACTION_CREATED )
            memcpy( &pLineBuf[idx][11], "Create", 6 );
        break;
    case IFSFN_DISCONNECT:   case IFSFN_FLUSH:
    case IFSFN_GETDISKINFO:  case IFSFN_GETDISKPARMS:
    case IFSFN_DASDIO:
        i+=SkpFileHdl(i);  AddResHdl(i);
        break;
        }

    _asm pushfd
    _asm cli
    *pdw = idx; /* last completed line */
    _asm popfd

    return retc; /* make sure we return what the FSD did */
    }

void __declspec( naked ) DisplayFSDEvent( void )  {
    _asm push ebp   _asm mov ebp,esp
    hTimeOut = 0;
    if ( hEventRing0 != 0 ) { 
        _asm mov ebx,[hSysVM]
        _asm mov esi,offset SetWin32Event
        _asm mov edx,offset hEventRing0
        VxDCall( Schedule_VM_Event );
        _asm mov [hVMEvent],esi
        }
    _asm leave   _asm ret
    }

DWORD __stdcall W32_RequestEvents( DWORD dwDDB,
                                   PDIOCPARAMETERS pD )
    {
    DWORD* pdwArgs;

    if ( pdw == NULL ) { /* First time */
        /* Check for valid arguments */
        if ( pD->cbInBuffer != sizeof(DWORD)*2 )
            return 1;

        /* Get the parameters passed by the caller */
        pdwArgs = (DWORD*)pD->lpvInBuffer;

        /* hEventRing0, the handle to the ring 0 event */
        hEventRing0 = (HANDLE)pdwArgs[0];

        /* First line reserved for pointers */
        pdw = (DWORD*)pdwArgs[1];
        *pdw = *(pdw+1) = -1;

        /* pLineBuf, circular buffer in which to
         * store the file activity events */
        pLineBuf = ((LINE*)pdwArgs[1])+1;

        if (!_LinPageLock((DWORD)pdw>>12,8,PAGEMAPGLOBAL))
            return 1; /* lock failed */
        }

    hTimeOut = Set_Global_Time_Out( DisplayFSDEvent, 250, 0 );
    return 0;
    }

DWORD __stdcall
W32_Shutdown( DWORD dwDDB, PDIOCPARAMETERS pD ) {
    /* Remove our filesystem API hook */
    _asm mov eax,OFFSET FileHook
    _asm push eax
    VxDCall( IFSMgr_RemoveFileSystemApiHook );
    _asm add esp,4
    return 0;
    }

/* Win32 interface for FileMon */
int __stdcall
CtrlMsg_W32DeviceIoControl( DWORD dwIoCtrlCode, /*ecx*/
                            DWORD dwDDB,        /*ebx*/
                            DWORD pDIOCParams ) /*esi*/
    {
    if ( dwIoCtrlCode == DIOC_OPEN ||
         dwIoCtrlCode == DIOC_CLOSEHANDLE)
        return 0L; /* tell Win32, VxD supports DEVIOCTL */

    /* private Win32 API provided by FileMon */
    if ( dwIoCtrlCode == DIOC_REQEVENTS )
        return W32_RequestEvents(dwDDB,(PDIOCPARAMETERS)pDIOCParams);
    if ( dwIoCtrlCode == DIOC_SHUTDOWN )
        return W32_Shutdown(dwDDB,(PDIOCPARAMETERS)pDIOCParams);
    return ERROR_NOT_SUPPORTED;
    }

#pragma VxD_PAGEABLE_CODE_SEG
/*  Called when device is unloaded */
int __stdcall CleanUp( void ) {
    if (hTimeOut) Cancel_Time_Out(hTimeOut);
    if (hVMEvent)  { _asm mov ebx,[hSysVM]
                     _asm mov esi,[hVMEvent]
                     VxDCall(Cancel_VM_Event);
                   }
    if (hEventRing0) { _asm mov eax,[hEventRing0]
                       VxDCall(_VWIN32_CloseVxDHandle);
                     }
    _LinPageUnlock((DWORD)pdw>>12,8,PAGEMAPGLOBAL);
    return(VXD_SUCCESS);
    }

/* Called when device is unloaded by VXDLDR */
int __stdcall CtrlMsg_DynDeviceExit( void ) {
    return CleanUp();
    }

/* Always called when the system is normally shutting down */
int __stdcall
CtrlMsg_SysVMTerminate( DWORD hSysVMHandle ) {
    return CleanUp();
    }

#pragma VxD_ICODE_SEG
/*  Called when Device is loaded by VXDLDR */
int __stdcall CtrlMsg_DynDeviceInit( void ) {
    /* Install the filesystem API hook */
    hSysVM = Get_Sys_VM_Handle();
    _asm mov eax,OFFSET FileHook
    _asm push eax
    VxDCall( IFSMgr_InstallFileSystemApiHook );
    _asm add esp,4
    _asm mov ppPrevHook,eax
    return( ppPrevHook == 0 ? VXD_FAILURE
                            : VXD_SUCCESS );
    }
/***************** end of file ******************/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕一区二区三区四区不卡| 在线观看国产日韩| 国产综合久久久久影院| 成人免费高清视频在线观看| 欧美日韩精品电影| 国产日韩欧美综合一区| 日韩成人午夜精品| 91啪九色porn原创视频在线观看| 日韩欧美国产一区二区三区| 亚洲视频免费在线观看| 国产风韵犹存在线视精品| 欧美探花视频资源| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 天堂一区二区在线| 91麻豆6部合集magnet| 久久综合九色综合久久久精品综合 | 亚洲高清中文字幕| 91免费观看在线| 国产日韩影视精品| 激情久久五月天| 日韩欧美第一区| 丝袜美腿亚洲一区二区图片| 欧美曰成人黄网| 一区二区三区在线免费观看| av资源站一区| 国产精品灌醉下药二区| 国产不卡一区视频| 久久久久久久精| 国产成人aaa| 日本一区免费视频| 成人成人成人在线视频| **网站欧美大片在线观看| 成人国产精品免费网站| 国产精品久久久久天堂| 94-欧美-setu| 亚洲亚洲精品在线观看| 欧美亚洲国产bt| 午夜精品久久久久久久久久久 | 亚洲第一精品在线| 欧美精品乱码久久久久久按摩 | 亚洲综合视频在线观看| 色婷婷香蕉在线一区二区| 伊人一区二区三区| 精品视频一区 二区 三区| 亚洲成人资源在线| 日韩欧美一区二区视频| 激情深爱一区二区| 中文字幕国产一区二区| 色一区在线观看| 日韩精品国产欧美| 欧美精品一区二区精品网| 国产乱人伦偷精品视频不卡| 国产精品久久久久久久久久免费看 | 国产乱码精品一区二区三区av | www激情久久| 国产精品一区免费在线观看| 国产精品理伦片| 欧美色成人综合| 国产一区二区三区黄视频 | 久久精品在线免费观看| 成人久久18免费网站麻豆| 亚洲视频你懂的| 日韩欧美色综合网站| 粉嫩欧美一区二区三区高清影视 | 在线看日本不卡| 久久99九九99精品| 国产精品视频九色porn| 欧美日韩在线播| 国产电影一区在线| 天天色天天操综合| 国产精品第五页| 日韩欧美不卡在线观看视频| 成人白浆超碰人人人人| 日本午夜精品视频在线观看| 国产精品丝袜一区| 欧美精品久久天天躁| 成人精品电影在线观看| 亚洲成a人片在线观看中文| 国产欧美日韩综合| 日韩手机在线导航| 色偷偷久久一区二区三区| 久久69国产一区二区蜜臀| 亚洲精品高清视频在线观看| 久久久夜色精品亚洲| 欧美男女性生活在线直播观看| 国产在线视频精品一区| 亚洲午夜在线视频| 国产精品久久久久久久裸模| 精品国产一区二区三区久久影院| 色婷婷久久久久swag精品| 韩国女主播一区| 美女一区二区久久| 日韩在线卡一卡二| 亚洲日本青草视频在线怡红院| 亚洲精品一区二区三区香蕉| 欧美日韩国产综合视频在线观看| www.欧美.com| 成人午夜看片网址| 国产一区二区精品在线观看| 男男成人高潮片免费网站| 亚洲一区二区三区免费视频| 亚洲女人****多毛耸耸8| 日本一区二区免费在线| 久久综合国产精品| 欧美不卡一二三| 精品免费视频.| 日韩午夜激情免费电影| 69堂精品视频| 欧美一级二级三级乱码| 欧美一区国产二区| 欧美一区二区性放荡片| 宅男噜噜噜66一区二区66| 欧美日韩精品一区二区三区| 色94色欧美sute亚洲线路一久| av亚洲产国偷v产偷v自拍| 成年人午夜久久久| 91视频免费看| 色婷婷av一区| 欧美日韩一区视频| 在线成人免费视频| 日韩免费观看高清完整版在线观看| 91精品欧美久久久久久动漫| 制服丝袜亚洲网站| 日韩欧美一二区| 国产午夜精品久久久久久免费视| 久久综合色鬼综合色| 国产免费久久精品| 亚洲视频在线一区| 午夜欧美一区二区三区在线播放| 午夜不卡av免费| 久久99精品久久只有精品| 国产成人av自拍| 99re成人在线| 欧美猛男男办公室激情| 日韩欧美的一区| 中文字幕精品三区| 亚洲午夜电影在线观看| 看电影不卡的网站| 成人黄色综合网站| 日本高清不卡aⅴ免费网站| 欧美久久久久免费| 久久久综合视频| 一区二区久久久久| 另类专区欧美蜜桃臀第一页| 懂色一区二区三区免费观看 | 欧美日韩不卡视频| 日韩免费一区二区| 亚洲欧洲精品成人久久奇米网| 一区二区在线观看免费 | 亚洲激情校园春色| 日韩av在线发布| thepron国产精品| 欧洲国产伦久久久久久久| 欧美刺激午夜性久久久久久久| 国产精品日日摸夜夜摸av| 亚洲五码中文字幕| 成人午夜激情在线| 88在线观看91蜜桃国自产| 国产偷国产偷精品高清尤物| 一区二区三区在线视频观看| 国产真实精品久久二三区| 在线观看视频欧美| 国产亚洲一区二区在线观看| 亚洲第一久久影院| 99精品视频在线观看免费| 日韩一区二区免费高清| 亚洲欧美区自拍先锋| 美女在线观看视频一区二区| 91激情五月电影| 中文字幕欧美三区| 激情文学综合插| 9191国产精品| 亚洲精品成人少妇| 成人中文字幕合集| 精品国产制服丝袜高跟| 亚洲成a人片综合在线| 成人成人成人在线视频| 久久这里都是精品| 奇米精品一区二区三区在线观看| 日本高清不卡aⅴ免费网站| 久久久久久免费| 精品一区二区免费看| 欧美在线视频不卡| 亚洲精品五月天| 97精品国产露脸对白| 国产精品久久久久久亚洲毛片| 极品少妇xxxx偷拍精品少妇| 欧美男人的天堂一二区| 亚洲国产精品久久一线不卡| 91色porny在线视频| 国产精品久久午夜夜伦鲁鲁| 国产成人午夜99999| 久久品道一品道久久精品| 久久se精品一区二区| 精品久久久久久久久久久久久久久 | 亚洲国产美女搞黄色| 91免费视频观看| 亚洲欧洲综合另类| 日本精品视频一区二区三区| 亚洲视频在线观看一区|