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

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

?? filemon.c

?? filemon的源碼
?? C
?? 第 1 頁 / 共 4 頁
字號:
//
// If the name matches the exclusion mask, we do not log it. Else if
// it doesn't match the inclusion mask we do not log it. 
//
//----------------------------------------------------------------------
BOOLEAN
ApplyFilters( 
    PCHAR Text
    )
{
    ULONG    i;

    //   
    // If it matches the exclusion string, do not log it
    //
    Wait_Semaphore( FilterMutex, BLOCK_SVC_INTS );
    for( i = 0; i < NumExcludeFilters; i++ ) {

        if( MatchWithPattern( ExcludeFilters[i], Text ) ) {

            Signal_Semaphore( FilterMutex );
            return FALSE;
        }
    }
 
    //
    // If it matches an include filter then log it
    //
    for( i = 0; i < NumIncludeFilters; i++ ) {

        if( MatchWithPattern( IncludeFilters[i], Text )) {

            Signal_Semaphore( FilterMutex );
            return TRUE;
        }
    }

    //
    // It didn't match any include filters so don't log
    //
    Signal_Semaphore( FilterMutex );
    return FALSE;
}

//----------------------------------------------------------------------
//                 P A T H   P A R S I N G
//----------------------------------------------------------------------

//----------------------------------------------------------------------
//
// FilemonConvertUnparsedPath
//
// Converts an unparsed unicode path to ANSI. This is only used for
// UNC paths except for the special cases of renames and findopens.
//
//----------------------------------------------------------------------
VOID
FilemonConvertUnparsedPath(
    pioreq pir,
    PCHAR fullpathname
    )
{
    _QWORD  result;

    UniToBCS( fullpathname, pir->ir_upath, wstrlen( pir->ir_upath ),
              MAXPATHLEN, BCS_WANSI, &result );
    fullpathname[ result.ddLower ] = 0;
}


//----------------------------------------------------------------------
//
// FilemonConvertParsedPath
// 
// Converts a parsed unicode path to ANSI.
//
//----------------------------------------------------------------------
VOID
FilemonConvertParsedPath(
    int drive,
    path_t ppath,
    int codepage,
    PCHAR fullpathname 
    )
{
    int  i = 0;
    _QWORD  result;

    if( drive != 0xFF ) {

        //
        // Its a volume-based path
        // 
        fullpathname[0] = drive+'A'-1;
        fullpathname[1] = ':';
        i = 2;
    }
    fullpathname[i] = 0;
    UniToBCSPath( &fullpathname[i], ppath->pp_elements, 
                  MAXPATHLEN-1, codepage, &result );
    fullpathname[ i + result.ddLower ] = 0;
}


//----------------------------------------------------------------------
//
// FilemonConvertMixedPath
//
// This converts a mix of unparsed and parsed paths to ANSI. The 
// unparsed path is used for server/share, whereas the parsed
// path is used for the directory/file. Only UNC rename and findopen 
// use this.
// 
//----------------------------------------------------------------------
VOID
FilemonConvertMixedPath(
    pioreq pir,
    path_t ppath,
    int codepage,
    PCHAR fullpathname
    )
{
    int     i, slashes;
    _QWORD  result;

    UniToBCS( fullpathname, pir->ir_upath, wstrlen( pir->ir_upath ), MAXPATHLEN-1,
              codepage, &result );
    fullpathname[ result.ddLower ] = 0;

    slashes = 0;
    for( i = 0; i < result.ddLower; i++ ) {
            
        //
        // We find the 4th slash: \\Server\share\...
        //
        if( fullpathname[i] == '\\' && ++slashes == 4 ) break;
    }
    if( slashes == 4 ) {

        FilemonConvertParsedPath( 0xFF, ppath, codepage, &fullpathname[i]);
    }
}


//----------------------------------------------------------------------
//
// FilemonConvertPath
//
// Converts a unicode path name to ANSI.
//
//----------------------------------------------------------------------
PCHAR 
FilemonConvertPath( 
    CONVERT_TYPE converttype,
    int drive, 
    pioreq pir,
    int codepage,
    PCHAR fullpathname 
    )
{
    if( drive != 0xFF ) {

        //
        // Its a volume-based path
        // 
        switch( converttype ) {
        case CONVERT_RENAME_TARGET:
            FilemonConvertParsedPath( drive, pir->ir_ppath2, codepage, fullpathname );
            break;

        default:
            FilemonConvertParsedPath( drive, pir->ir_ppath, codepage, fullpathname );
            break;
        }

    } else {
        
        //
        // Its a UNC path. The parsed path doesn't include the
        // server/share, so we get that from the unparsed path.
        //
        switch( converttype ) {
        case CONVERT_STANDARD:
            FilemonConvertUnparsedPath( pir, fullpathname );
            break;

        case CONVERT_FINDOPEN:
        case CONVERT_RENAME_SOURCE:
            FilemonConvertMixedPath( pir, pir->ir_ppath, codepage, fullpathname );
            break;

        case CONVERT_RENAME_TARGET:
            FilemonConvertMixedPath( pir, pir->ir_ppath2, codepage, fullpathname );
            break;
        }
    }
    return fullpathname;
}


//----------------------------------------------------------------------
//
// FilemonGetFullPath
//
// Returns the full pathname of a file, if we can obtain one, else
// returns a handle.
//
//----------------------------------------------------------------------
PCHAR 
FilemonGetFullPath(  
    fh_t filenumber, 
    PCHAR fullname,
    int Drive, 
    int ResType, 
    int CodePage, 
    pioreq pir 
    )
{
    PHASH_ENTRY		hashEntry;
    pIFSFunc        enumFunc;
    ifsreq          ifsr;
    path_t          uniFullName;
    int             retval;

    //
    // See if we find the key in the hash table.
    //
    Wait_Semaphore( HashMutex, BLOCK_SVC_INTS );

    hashEntry = HashTable[ HASHOBJECT( filenumber ) ];

    while( hashEntry && 
           hashEntry->filenumber != filenumber &&
           hashEntry->drive != (Drive & 0xFF)) {

        hashEntry = hashEntry->Next;
    }

    Signal_Semaphore( HashMutex );

    fullname[0] = 0;
    if( hashEntry ) {

        strcpy( fullname, hashEntry->FullName );

    } else {

        //
        // File name isn't in the table, so ask the
        // underlying file system
        //
        sprintf( fullname, "0x%X", filenumber );

        uniFullName = IFSMgr_GetHeap( MAXPATHLEN * sizeof(WCHAR) + sizeof( path_t));
        if( uniFullName ) {
            
            //
            // Send a query file name request
            //
            memcpy( &ifsr, pir, sizeof( ifsreq ));
            ifsr.ifsir.ir_flags = ENUMH_GETFILENAME;
            ifsr.ifsir.ir_ppath = uniFullName;
            enumFunc = ifsr.ifs_hndl->hf_misc->hm_func[HM_ENUMHANDLE];

            retval = (*PrevIFSHookProc)(enumFunc, IFSFN_ENUMHANDLE, 
                                        Drive, ResType, CodePage, 
                                        (pioreq) &ifsr);

            if( retval == ERROR_SUCCESS ) {
                
                FilemonConvertParsedPath( Drive, uniFullName, CodePage, fullname );
                FilemonLogHash( Drive, filenumber, fullname );
            }
            IFSMgr_RetHeap( (void *) uniFullName );
        } 
    }
    return fullname;
}


//----------------------------------------------------------------------
//                     H O O K   R O U T I N E
//----------------------------------------------------------------------

//----------------------------------------------------------------------
//
// FilemonHookProc
//
// All (most) IFS functions come through this routine for us to look
// at.
//
//----------------------------------------------------------------------
#pragma optimize("", off)
int 
_cdecl 
FilemonHookProc(
    pIFSFunc pfn, 
    int fn, 
    int Drive, 
    int ResType,
    int CodePage,
    pioreq pir
    )
{
    int                retval;
    char               fullpathname[MAXPATHLEN];
    char               processname[64];
    char               data[MAXPATHLEN];
    char               drivestring[4];
    ifsreq             origifsr;
    pioreq             origir;
    _WIN32_FIND_DATA   *finddata;
    struct srch_entry  *search;
    BOOLEAN            log;
    _QWORD             result;
    DWORD              timelo, timehi;
    DWORD              timelo1, timehi1;
    DWORD              dostime, dosdate;
    DWORD              datetimelo, datetimehi;
    int                i, j;

    // 
    // Inititlize default data.
    //
    data[0] = 0;

    //
    // Save original iorequest because some entries get modified.
    //
    origir = (pioreq) &origifsr;
    memcpy( &origifsr, pir, sizeof( ifsreq ));

    //
    // Get the current process name.
    //
    FilemonGetProcess( processname );

    //
    // Get the time
    //
    VTD_Get_Real_Time( &timehi, &timelo );
    datetimehi = IFSMgr_Get_DOSTime( &datetimelo );
    dostime = VTD_Get_Date_And_Time( &dosdate );
    datetimelo = dostime - ((datetimehi >> 11)& 0x1F)*60*60*1000 - 
            ((datetimehi >> 5) & 0x3F)*60*1000 - 
            ((datetimehi & 0x1F)*2000);

    //
    // Special case for close call, since after the file's closed 
    // we can't query its name
    //
    if( fn == IFSFN_CLOSE ) {

        FilemonGetFullPath( origir->ir_fh, fullpathname, Drive, ResType, CodePage, origir );
    }

    //
    // Call the previous hooker first, to get the return code.
    //
    retval = (*PrevIFSHookProc)(pfn, fn, Drive, ResType, CodePage, pir);

    //
    // Now extract parameters based on the function type.
    //
    dprintf("%d: %d\n", fn, pir->ir_fh ); 
    switch( fn ) {

    case IFSFN_OPEN:

        FilemonConvertPath( CONVERT_STANDARD, Drive, origir, CodePage, fullpathname );

        TIME_DIFF();
        sprintf(data,"");
        if( origir->ir_options & ACTION_CREATENEW ) strcat(data,"CREATENEW ");
        if( origir->ir_options & ACTION_OPENEXISTING ) strcat(data,"OPENEXISTING ");
        if( origir->ir_options & ACTION_REPLACEEXISTING ) strcat(data,"REPLACEEXISTING ");
        switch (origir->ir_flags & ACCESS_MODE_MASK) {

        case ACCESS_READONLY:
            strcat(data,"READONLY ");
            break;
        case ACCESS_WRITEONLY:
            strcat(data,"WRITEONLY ");
            break;
        case ACCESS_READWRITE:
            strcat(data,"READWRITE ");
            break;
        case ACCESS_EXECUTE:
            strcat(data,"EXECUTE ");
            break;
        default:
            break;
        }
        switch (origir->ir_flags & SHARE_MODE_MASK) {
        case SHARE_COMPATIBILITY:
            strcat(data,"COMPATIBILITY ");
            break;
        case SHARE_DENYREADWRITE:
            strcat(data,"DENYREADWRITE ");
            break;
        case SHARE_DENYWRITE:
            strcat(data,"DENYWRITE ");
            break;
        case SHARE_DENYREAD:
            strcat(data,"DENYREAD ");
            break;
        case SHARE_DENYNONE:
            strcat(data,"DENYNONE ");
            break;
        default:
            break;
        }
        LogRecord( timelo, datetimelo, datetimehi, "%s\tOpen\t%s\t%s\t%s", 
                   processname, fullpathname,
                   data, ErrorString( retval ));
        FilemonLogHash( Drive, pir->ir_fh, fullpathname );
        break;

    case IFSFN_READ:
    case IFSFN_WRITE:
        FilemonGetFullPath( origir->ir_fh, fullpathname, Drive, ResType, CodePage, origir );
        if( ((fn == IFSFN_READ && FilterDef.logreads ) ||
             (fn == IFSFN_WRITE && FilterDef.logwrites )) ) {

            TIME_DIFF();
            sprintf( data, "Offset: %ld Length: %ld", origir->ir_pos, origir->ir_length );
            LogRecord( timelo, datetimelo, datetimehi, "%s\t%s\t%s\t%s\t%s", 
                       processname, fn == IFSFN_READ? "Read" : "Write", 
                       fullpathname,
                       data, ErrorString( retval ));
        }
        break;

    case IFSFN_CLOSE:
        if( FilterDef.logreads ) {

            TIME_DIFF();
            switch( origir->ir_flags ) {
            case CLOSE_HANDLE:      sprintf(data, "CLOSE_HANDLE");      break;
            case CLOSE_FOR_PROCESS: sprintf(data, "CLOSE_FOR_PROCESS"); break;
            case CLOSE_FINAL:       sprintf(data, "CLOSE_FINAL");       break;
            default: sprintf(data,"0x%02X",origir->ir_flags);            break;
            }
            LogRecord( timelo, datetimelo, datetimehi, "%s\tClose\t%s\t%s\t%s", processname, 
                       fullpathname, data, ErrorString( retval ));
        }
        if( origir->ir_flags == CLOSE_FINAL ) FilemonFreeHashEntry( Drive, origir->ir_fh);
        break;

    case IFSFN_DIR:

        //
        // This works around a special case I've seen when hiting the "browse" button in the 
        // "have disk" dialog of the hardware wizard
        //
        if( origir->ir_flags != 0xFF ) {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本在线不卡视频| 精品日韩欧美一区二区| 91一区在线观看| 成人免费看的视频| 国产乱对白刺激视频不卡| 裸体一区二区三区| 毛片不卡一区二区| 狠狠色丁香九九婷婷综合五月| 三级欧美在线一区| 蜜臀精品一区二区三区在线观看 | aaa亚洲精品| 国产超碰在线一区| 91一区在线观看| 色噜噜夜夜夜综合网| 欧洲一区二区三区免费视频| 欧美视频中文字幕| 欧美精品xxxxbbbb| 欧美一级淫片007| 久久天堂av综合合色蜜桃网| 国产亚洲欧美日韩日本| 国产精品视频看| 亚洲欧美日韩中文播放 | 青娱乐精品视频| 精品在线亚洲视频| 懂色一区二区三区免费观看| 91蜜桃在线免费视频| 欧美日韩一区高清| 精品国产凹凸成av人导航| 久久综合色婷婷| 国产精品无圣光一区二区| 亚洲欧洲在线观看av| 亚洲国产美女搞黄色| 秋霞国产午夜精品免费视频| 国产成人亚洲综合a∨猫咪| 波多野结衣欧美| 欧美三级韩国三级日本三斤| 日韩欧美一二区| 欧美国产欧美综合| 亚洲线精品一区二区三区| 免费观看在线综合色| 成人激情黄色小说| 欧美视频一区在线| 国产亚洲欧洲997久久综合| 亚洲欧美综合色| 日本不卡免费在线视频| 成人免费视频视频| 在线观看亚洲精品| 精品毛片乱码1区2区3区| 国产精品成人在线观看| 婷婷综合五月天| 成人网页在线观看| 69堂国产成人免费视频| 国产欧美日韩在线视频| 香蕉影视欧美成人| 亚洲成人免费在线观看| 91在线观看高清| 久久婷婷成人综合色| 亚洲综合男人的天堂| 九九**精品视频免费播放| 91在线观看视频| 偷拍一区二区三区四区| 欧美三级电影一区| 精品日韩一区二区三区免费视频| 亚洲欧洲日本在线| 另类中文字幕网| 精品视频在线免费看| 国产精品久久久久天堂| 香蕉成人啪国产精品视频综合网 | 欧美日韩国产综合久久| 精品少妇一区二区三区日产乱码 | 亚洲美女淫视频| 福利91精品一区二区三区| 欧美日本国产视频| 亚洲成av人片一区二区梦乃| 成人免费视频免费观看| 欧美麻豆精品久久久久久| 国产精品久久久久久久久快鸭 | 在线不卡中文字幕播放| 亚洲国产成人av网| 欧美中文字幕一二三区视频| 亚洲电影一区二区三区| 日韩欧美一级二级三级久久久| 亚洲激情第一区| 精品一区二区在线播放| 3d动漫精品啪啪1区2区免费| 亚洲欧美色图小说| 欧美精品一区二区精品网| 日韩一区二区精品| 日本欧洲一区二区| 国产精品一区二区三区99| 91精品国产一区二区三区香蕉| 亚洲国产成人av网| 日本韩国欧美三级| 亚洲免费高清视频在线| 91蝌蚪porny成人天涯| 国产精品日韩成人| 成人免费视频一区二区| 国产精品视频免费看| 一区二区三区加勒比av| 精品污污网站免费看| 国产伦精品一区二区三区视频青涩| 欧美一区二区二区| 国产成人精品影视| 亚洲宅男天堂在线观看无病毒| 欧美最猛性xxxxx直播| 国产综合久久久久影院| 色屁屁一区二区| 26uuu精品一区二区三区四区在线| 日本视频一区二区三区| 在线观看91精品国产麻豆| 午夜久久久久久久久 | 欧美一区二区在线不卡| 午夜私人影院久久久久| 欧美日本在线播放| 另类欧美日韩国产在线| 欧美成人综合网站| 国模少妇一区二区三区| 欧美国产一区在线| 成人国产免费视频| 亚洲人成网站色在线观看| 91福利在线导航| 免费观看久久久4p| 久久午夜电影网| 99久久精品免费精品国产| 亚洲精品自拍动漫在线| 欧美军同video69gay| 久久国产麻豆精品| 欧美韩国日本一区| 欧美三级欧美一级| 久久99精品久久久久婷婷| 国产视频一区在线播放| 欧洲一区二区三区在线| 麻豆免费看一区二区三区| 中文字幕精品在线不卡| 日本伦理一区二区| 免费观看成人av| 日本一区二区不卡视频| 欧美三级一区二区| 国内久久精品视频| 亚洲日本护士毛茸茸| 欧美一区二区成人| 国产高清亚洲一区| 亚洲成人免费看| 久久婷婷国产综合国色天香 | 国产婷婷一区二区| 色偷偷久久一区二区三区| 蜜臀av亚洲一区中文字幕| 欧美经典一区二区| 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 日日夜夜精品视频天天综合网| 国产欧美一区二区三区在线看蜜臀 | 日韩在线a电影| 国产婷婷精品av在线| 欧美三级电影网站| 国产成人免费网站| 亚洲成人777| 国产精品护士白丝一区av| 欧美一区二区三区在线观看| 99精品热视频| 精品一区二区三区在线播放| 一区二区日韩av| 26uuu欧美日本| 欧美美女黄视频| 91蜜桃在线免费视频| 国产一级精品在线| 午夜成人免费电影| 亚洲欧美在线高清| 欧美精品一区二区三| 欧美日韩国产综合一区二区| 99久久免费精品| 国产成人精品午夜视频免费| 日韩国产精品久久久久久亚洲| 日韩一区在线播放| 国产亚洲制服色| 在线综合亚洲欧美在线视频| 在线亚洲一区二区| 国产成人精品免费视频网站| 日本欧美大码aⅴ在线播放| 亚洲人123区| 国产精品国产馆在线真实露脸 | 人禽交欧美网站| 亚洲一区二区在线免费看| 欧美极品aⅴ影院| 久久久久成人黄色影片| 日韩欧美国产精品| 欧美一区二区在线观看| 欧美专区在线观看一区| 97se亚洲国产综合自在线 | 久久尤物电影视频在线观看| 欧美日韩高清影院| 在线观看日韩高清av| 91丨porny丨首页| 福利一区二区在线观看| 国产91清纯白嫩初高中在线观看| 国内成人自拍视频| 久久精品99国产精品日本| 日本欧美一区二区三区| 丝袜亚洲另类丝袜在线| 性久久久久久久久久久久| 午夜精品福利在线|