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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? operations.c

?? miniFilter 文件系統(tǒng)過(guò)濾驅(qū)動(dòng)
?? C
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
/*++

Copyright (c) 1999 - 2002  Microsoft Corporation

Module Name:

    operations.c

Abstract:

    This is the i/o operations module of the kernel mode filter driver implementing
    context sample


Environment:

    Kernel mode


--*/

#include "pch.h"


//
//  Assign text sections for each routine.
//

#ifdef ALLOC_PRAGMA
#pragma alloc_text(PAGE, CtxPreCreate)
#pragma alloc_text(PAGE, CtxPostCreate)
#pragma alloc_text(PAGE, CtxPreCleanup)
#pragma alloc_text(PAGE, CtxPreClose)
#pragma alloc_text(PAGE, CtxPreSetInfo)
#pragma alloc_text(PAGE, CtxPostSetInfo)
#endif


FLT_PREOP_CALLBACK_STATUS
CtxPreCreate (
    __inout PFLT_CALLBACK_DATA Cbd,
    __in PCFLT_RELATED_OBJECTS FltObjects,
    __deref_out_opt PVOID *CompletionContext
    )
{     
    UNREFERENCED_PARAMETER( Cbd );
    UNREFERENCED_PARAMETER( FltObjects );
    UNREFERENCED_PARAMETER( CompletionContext );
        
    PAGED_CODE();
    
    DebugTrace( DEBUG_TRACE_ALL_IO,
                ("[Ctx]: CtxPreCreate -> Enter (Cbd = %p, FileObject = %p)\n",
                 Cbd,
                 FltObjects->FileObject) );


    DebugTrace( DEBUG_TRACE_ALL_IO,
                ("[Ctx]: CtxPreCreate -> Exit (Cbd = %p, FileObject = %p)\n",
                 Cbd,
                 FltObjects->FileObject) );

    //
    //  Force a post-op callback so we can add our contexts to the opened 
    //  objects
    //

    return FLT_PREOP_SUCCESS_WITH_CALLBACK;

}


FLT_POSTOP_CALLBACK_STATUS
CtxPostCreate (
    __inout PFLT_CALLBACK_DATA Cbd,
    __in PCFLT_RELATED_OBJECTS FltObjects,
    __inout_opt PVOID CbdContext,
    __in FLT_POST_OPERATION_FLAGS Flags
    )
{

    PCTX_FILE_CONTEXT fileContext = NULL;    
    PCTX_STREAM_CONTEXT streamContext = NULL;    
    PCTX_STREAMHANDLE_CONTEXT streamHandleContext = NULL;    
    PFLT_FILE_NAME_INFORMATION nameInfo = NULL;
    UNICODE_STRING fileName;

    NTSTATUS status;
    BOOLEAN fileContextCreated, streamContextCreated, streamHandleContextReplaced;


    UNREFERENCED_PARAMETER( FltObjects );
    UNREFERENCED_PARAMETER( Flags );
    UNREFERENCED_PARAMETER( CbdContext );

    PAGED_CODE();

    DebugTrace( DEBUG_TRACE_ALL_IO,
                ("[Ctx]: CtxPostCreate -> Enter (Cbd = %p, FileObject = %p)\n",
                 Cbd,
                 FltObjects->FileObject) );

    //
    // Initialize defaults
    //

    status = STATUS_SUCCESS;

    //
    //  If the Create has failed, do nothing
    //

    if (!NT_SUCCESS( Cbd->IoStatus.Status )) {
        
        goto CtxPostCreateCleanup;        
    }


    //
    // Get the file name
    //
    
    status = FltGetFileNameInformation( Cbd,
                                        FLT_FILE_NAME_NORMALIZED |
                                        FLT_FILE_NAME_QUERY_DEFAULT,
                                        &nameInfo );    

    if (!NT_SUCCESS( status )) {

        DebugTrace( DEBUG_TRACE_ERROR | DEBUG_TRACE_STREAM_CONTEXT_OPERATIONS | DEBUG_TRACE_STREAMHANDLE_CONTEXT_OPERATIONS,
                    ("[Ctx]: CtxPostCreate -> Failed to get name information (Cbd = %p, FileObject = %p)\n",
                     Cbd,
                     FltObjects->FileObject) );

        goto CtxPostCreateCleanup;
    }

    
    //
    // Find or create a stream context
    //

    status = CtxFindOrCreateStreamContext(Cbd, 
                                          TRUE,
                                          &streamContext,
                                          &streamContextCreated);
    if (!NT_SUCCESS( status )) {

        //
        //  This failure will most likely be because stream contexts are not supported
        //  on the object we are trying to assign a context to or the object is being 
        //  deleted
        //  
                
        DebugTrace( DEBUG_TRACE_ERROR | DEBUG_TRACE_STREAM_CONTEXT_OPERATIONS,
                    ("[Ctx]: CtxPostCreate -> Failed to find or create stream context (Cbd = %p, FileObject = %p)\n",
                     Cbd,
                     FltObjects->FileObject) );
    
        goto CtxPostCreateCleanup;
    }        

    DebugTrace( DEBUG_TRACE_STREAM_CONTEXT_OPERATIONS,
                ("[Ctx]: CtxPostCreate -> Getting/Creating stream context for file %wZ (Cbd = %p, FileObject = %p, StreamContext = %p. StreamContextCreated = %x)\n",
                 &nameInfo->Name,
                 Cbd,
                 FltObjects->FileObject,
                 streamContext,
                 streamContextCreated) );

    //
    //  Acquire write acccess to the context
    //
    
    CtxAcquireResourceExclusive(streamContext->Resource);

    //
    //  Increment the create count
    //

    streamContext->CreateCount++;
    
    //
    //  Update the file name in the context
    //
    
    status = CtxUpdateNameInStreamContext( &nameInfo->Name, 
                                                  streamContext);


    DebugTrace( DEBUG_TRACE_STREAM_CONTEXT_OPERATIONS,
                ("[Ctx]: CtxPostCreate -> Stream context info for file %wZ (Cbd = %p, FileObject = %p, StreamContext = %p) \n\tName = %wZ \n\tCreateCount = %x \n\tCleanupCount = %x, \n\tCloseCount = %x\n",
                 &nameInfo->Name,
                 Cbd,
                 FltObjects->FileObject,
                 streamContext,
                 &streamContext->FileName,
                 streamContext->CreateCount,
                 streamContext->CleanupCount,
                 streamContext->CloseCount) );

    //
    //  Relinquish write acccess to the context
    //
    
    CtxReleaseResource(streamContext->Resource);

    //
    //  Quit on failure after we have given up
    //  the resource
    //

    if (!NT_SUCCESS( status )) {
    
        DebugTrace( DEBUG_TRACE_ERROR | DEBUG_TRACE_STREAM_CONTEXT_OPERATIONS,
                    ("[Ctx]: CtxPostCreate -> Failed to update name in stream context for file %wZ (Cbd = %p, FileObject = %p)\n",
                     &nameInfo->Name,
                     Cbd,
                     FltObjects->FileObject) );

        goto CtxPostCreateCleanup;
    }
            


    //
    // Create or replace a stream handle context
    //

    status = CtxCreateOrReplaceStreamHandleContext(Cbd, 
                                                   TRUE,
                                                   &streamHandleContext,
                                                   &streamHandleContextReplaced);
    if (!NT_SUCCESS( status )) {

        //
        //  This failure will most likely be because stream contexts are not supported
        //  on the object we are trying to assign a context to or the object is being 
        //  deleted
        //  
                
        DebugTrace( DEBUG_TRACE_ERROR | DEBUG_TRACE_STREAMHANDLE_CONTEXT_OPERATIONS,
                    ("[Ctx]: CtxPostCreate -> Failed to find or create stream handle context (Cbd = %p, FileObject = %p)\n",
                     Cbd,
                     FltObjects->FileObject) );

        goto CtxPostCreateCleanup;
    }        

    DebugTrace(  DEBUG_TRACE_STREAMHANDLE_CONTEXT_OPERATIONS,
                ("[Ctx]: CtxPostCreate -> Creating/Replacing stream handle context for file %wZ (Cbd = %p, FileObject = %p StreamHandleContext = %p, StreamHandleContextReplaced = %x)\n",
                 &nameInfo->Name,
                 Cbd,
                 FltObjects->FileObject,
                 streamHandleContext,
                 streamHandleContextReplaced) );

    //
    //  Acquire write acccess to the context
    //

    CtxAcquireResourceExclusive( streamHandleContext->Resource );

    //
    //  Update the file name in the context
    //

    status = CtxUpdateNameInStreamHandleContext( &nameInfo->Name, 
                                                 streamHandleContext);

    DebugTrace( DEBUG_TRACE_STREAMHANDLE_CONTEXT_OPERATIONS,
                ("[Ctx]: CtxPostCreate -> Stream handle context info for file %wZ (Cbd = %p, FileObject = %p, StreamHandleContext = %p) \n\tName = %wZ\n",
                 &nameInfo->Name,
                 Cbd,
                 FltObjects->FileObject,
                 streamHandleContext,
                 &streamHandleContext->FileName) );

    //
    //  Relinquish write acccess to the context
    //

    CtxReleaseResource(streamHandleContext->Resource);

    //
    //  Quit on failure after we have given up
    //  the resource
    //

    if (!NT_SUCCESS( status )) {

        DebugTrace( DEBUG_TRACE_ERROR | DEBUG_TRACE_STREAMHANDLE_CONTEXT_OPERATIONS,
                    ("[Ctx]: CtxPostCreate -> Failed to update name in stream handle context for file %wZ (Cbd = %p, FileObject = %p)\n",
                     &nameInfo->Name,
                     Cbd,
                     FltObjects->FileObject) );

        goto CtxPostCreateCleanup;
    }
    
    //
    //  After FltParseFileNameInformation, nameInfo->Name also
    //  contains the stream name. We need only the filename and do
    //  not want to include the stream name in the file context
    //

    fileName.Buffer = nameInfo->Name.Buffer;
    fileName.Length = nameInfo->Name.Length - nameInfo->Stream.Length;
    fileName.MaximumLength = fileName.Length;

    //
    // Find or create a file context
    //

    status = CtxFindOrCreateFileContext( Cbd, 
                                         TRUE,
                                         &fileName,
                                         &fileContext,
                                         &fileContextCreated);
    if (!NT_SUCCESS( status )) {

        //
        //  This failure will most likely be because file contexts are not supported
        //  on the object we are trying to assign a context to or the object is being 
        //  deleted
        //  
                
        DebugTrace( DEBUG_TRACE_ERROR | DEBUG_TRACE_FILE_CONTEXT_OPERATIONS,
                    ("[Ctx]: CtxPostCreate -> Failed to find or create file context (Cbd = %p, FileObject = %p)\n",
                     Cbd,
                     FltObjects->FileObject) );

        goto CtxPostCreateCleanup;
    }        

    DebugTrace( DEBUG_TRACE_FILE_CONTEXT_OPERATIONS,
                ("[Ctx]: CtxPostCreate -> Getting/Creating file context for file %wZ (Cbd = %p, FileObject = %p, FileContext = %p. FileContextCreated = %x)\n",
                 &nameInfo->Name,
                 Cbd,
                 FltObjects->FileObject,
                 fileContext,
                 fileContextCreated) );


    DebugTrace( DEBUG_TRACE_FILE_CONTEXT_OPERATIONS,
                ("[Ctx]: CtxPostCreate -> File context info for file %wZ (Cbd = %p, FileObject = %p, FileContext = %p) \n\tName = %wZ\n",
                 &nameInfo->Name,
                 Cbd,
                 FltObjects->FileObject,
                 fileContext,
                 &fileContext->FileName) );


CtxPostCreateCleanup:
    
    
    //
    // Release the references we have acquired
    //    
        
    if (nameInfo != NULL) {

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美精品一区二区久久久| av不卡一区二区三区| 九九精品视频在线看| 国产一区二区毛片| proumb性欧美在线观看| 欧美日韩国产一二三| 精品入口麻豆88视频| 国产精品久久久久久亚洲伦| 亚洲午夜免费视频| 精品一区二区三区香蕉蜜桃| 99视频在线精品| 欧美电视剧免费全集观看| 国产精品人妖ts系列视频| 午夜精品一区二区三区免费视频 | 99国产一区二区三精品乱码| 欧美日韩日日摸| 久久久精品国产免费观看同学| 一级做a爱片久久| 久久超碰97人人做人人爱| 国产一区在线精品| 在线日韩国产精品| 国产亚洲一区二区在线观看| 亚洲九九爱视频| 国产在线看一区| 欧美视频三区在线播放| 久久在线免费观看| 亚洲激情综合网| 国产美女久久久久| 欧洲av一区二区嗯嗯嗯啊| 2023国产精品自拍| 亚洲高清免费在线| 成人av在线播放网站| 精品欧美一区二区在线观看| 亚洲激情校园春色| 成人黄色一级视频| 日韩精品在线一区二区| 亚洲综合丝袜美腿| 不卡高清视频专区| 亚洲视频一区在线观看| 美女视频黄a大片欧美| 日本高清不卡在线观看| 欧美极品aⅴ影院| 久久99精品久久久| 欧美日韩激情一区二区三区| 日韩一区日韩二区| 国产91色综合久久免费分享| 日韩午夜激情电影| 亚洲h在线观看| 93久久精品日日躁夜夜躁欧美| 久久麻豆一区二区| 久久99国产乱子伦精品免费| 欧美福利视频一区| 亚洲综合偷拍欧美一区色| 99久久久国产精品免费蜜臀| 国产亚洲1区2区3区| 韩国v欧美v亚洲v日本v| 在线综合视频播放| 亚洲国产精品久久人人爱蜜臀 | 夜夜嗨av一区二区三区四季av| 成人免费视频视频| 久久久不卡网国产精品二区| 麻豆视频观看网址久久| 欧美二区在线观看| 午夜精品一区二区三区免费视频| 欧洲激情一区二区| 亚洲综合久久久| 日本高清不卡一区| 亚洲图片一区二区| 欧美日韩一区二区欧美激情| 夜夜亚洲天天久久| 欧美中文字幕久久| 亚洲国产日韩a在线播放| 欧美亚洲综合在线| 亚洲国产成人av网| 欧美美女网站色| 日产欧产美韩系列久久99| 69精品人人人人| 美女一区二区久久| 亚洲精品一区二区三区四区高清| 韩国三级中文字幕hd久久精品| 精品电影一区二区| 国产一区二区三区蝌蚪| 久久精品在这里| 国产suv精品一区二区6| 国产精品护士白丝一区av| av不卡一区二区三区| 亚洲一区在线视频观看| 欧美精品乱人伦久久久久久| 日韩vs国产vs欧美| 日韩免费在线观看| 国产精品一区免费视频| 国产精品久久久久久福利一牛影视 | 色哟哟一区二区| 亚洲国产精品久久不卡毛片 | 经典一区二区三区| 久久久久久影视| 91美女视频网站| 午夜视频一区二区| 欧美mv日韩mv国产| 波多野结衣一区二区三区| 一区二区三区毛片| 91精品综合久久久久久| 国内国产精品久久| 国产精品伦一区二区三级视频| 一本大道久久a久久精品综合| 亚洲国产精品久久人人爱蜜臀| 日韩欧美国产综合在线一区二区三区 | 日本电影欧美片| 日韩电影在线观看一区| 久久精品免费在线观看| 色视频欧美一区二区三区| 欧美aa在线视频| 国产精品午夜久久| 欧美色区777第一页| 国产一区激情在线| 亚洲女爱视频在线| 日韩欧美一级二级三级久久久| 成人毛片在线观看| 五月婷婷综合激情| 国产日韩欧美综合一区| 欧美午夜精品久久久| 国产在线精品视频| 亚洲第一激情av| 国产欧美一区二区精品性色超碰| 日本精品一级二级| 国产综合成人久久大片91| 亚洲精品亚洲人成人网| 日韩区在线观看| 色婷婷一区二区三区四区| 六月丁香婷婷色狠狠久久| 日韩毛片视频在线看| 日韩欧美色电影| 欧美视频在线一区二区三区 | 国产片一区二区| 欧美日韩国产免费一区二区| 国产a区久久久| 天天综合网天天综合色| 中文字幕在线一区二区三区| 欧美一区二区久久| 色综合久久久久综合99| 国产自产高清不卡| 偷拍一区二区三区| 亚洲天堂2016| 欧美国产一区在线| 日韩欧美中文字幕公布| 在线日韩国产精品| 波多野结衣在线一区| 精品一区二区三区免费视频| 亚洲一卡二卡三卡四卡无卡久久 | 91麻豆国产在线观看| 蜜桃一区二区三区在线| 一区二区三区av电影| 国产精品久久久久婷婷| 2欧美一区二区三区在线观看视频 337p粉嫩大胆噜噜噜噜噜91av | 欧美一级高清片| 欧美三级午夜理伦三级中视频| 成人免费va视频| 国产精品乡下勾搭老头1| 日韩精品成人一区二区三区| 亚洲精品中文在线影院| 国产精品女同一区二区三区| 亚洲精品在线免费播放| 欧美变态口味重另类| 欧美日韩一区二区电影| 一本一本大道香蕉久在线精品| 国产suv一区二区三区88区| 国产九九视频一区二区三区| 青娱乐精品视频| 日一区二区三区| 亚洲国产中文字幕在线视频综合| 亚洲欧洲精品一区二区三区不卡| 国产日韩精品一区二区三区在线| 精品欧美一区二区三区精品久久| 91精品国产综合久久香蕉麻豆 | 蜜桃精品视频在线| 丝袜美腿亚洲色图| 天堂影院一区二区| 性久久久久久久久久久久| 亚洲国产精品一区二区久久| 亚洲最新在线观看| 樱桃视频在线观看一区| 亚洲精品国产a久久久久久| 亚洲精品乱码久久久久久| 亚洲精品国产精品乱码不99| 一区二区三区精品在线观看| 一区二区三区在线免费| 洋洋av久久久久久久一区| 亚洲国产一区二区三区| 亚洲一卡二卡三卡四卡五卡| 五月天激情综合| 麻豆一区二区三区| 国产麻豆视频一区| 高清久久久久久| 99国产精品久久久| 色婷婷精品大在线视频| 欧美日韩亚洲国产综合| 欧美一区二区三区在线| 337p日本欧洲亚洲大胆精品| 国产欧美一区二区三区网站| 国产精品白丝在线|