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

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

?? passthrough.c

?? 文件系統過濾驅動程序的框架
?? C
?? 第 1 頁 / 共 2 頁
字號:
                  ("PassThrough!PtInstanceQueryTeardown: Entered\n") );

    return STATUS_SUCCESS;
}


VOID
PtInstanceTeardownStart (
    IN PCFLT_RELATED_OBJECTS FltObjects,
    IN FLT_INSTANCE_TEARDOWN_FLAGS Flags
    )
/*++

Routine Description:

    This routine is called at the start of instance teardown.

Arguments:

    FltObjects - Pointer to the FLT_RELATED_OBJECTS data structure containing
        opaque handles to this filter, instance and its associated volume.

    Flags - Reason why this instance is been deleted.

Return Value:

    None.

--*/
{
    UNREFERENCED_PARAMETER( FltObjects );
    UNREFERENCED_PARAMETER( Flags );

    PT_DBG_PRINT( PTDBG_TRACE_ROUTINES,
                  ("PassThrough!PtInstanceTeardownStart: Entered\n") );
}


VOID
PtInstanceTeardownComplete (
    IN PCFLT_RELATED_OBJECTS FltObjects,
    IN FLT_INSTANCE_TEARDOWN_FLAGS Flags
    )
/*++

Routine Description:

    This routine is called at the end of instance teardown.

Arguments:

    FltObjects - Pointer to the FLT_RELATED_OBJECTS data structure containing
        opaque handles to this filter, instance and its associated volume.

    Flags - Reason why this instance is been deleted.

Return Value:

    None.

--*/
{
    UNREFERENCED_PARAMETER( FltObjects );
    UNREFERENCED_PARAMETER( Flags );

    PT_DBG_PRINT( PTDBG_TRACE_ROUTINES,
                  ("PassThrough!PtInstanceTeardownComplete: Entered\n") );
}


/*************************************************************************
    MiniFilter initialization and unload routines.
*************************************************************************/

NTSTATUS
DriverEntry (
    IN PDRIVER_OBJECT DriverObject,
    IN PUNICODE_STRING RegistryPath
    )
/*++

Routine Description:

    This is the initialization routine for this miniFilter driver.  This
    registers with FltMgr and initializes all global data structures.

Arguments:

    DriverObject - Pointer to driver object created by the system to
        represent this driver.

    RegistryPath - Unicode string identifying where the parameters for this
        driver are located in the registry.

Return Value:

    Returns STATUS_SUCCESS.

--*/
{
    NTSTATUS status;

    UNREFERENCED_PARAMETER( RegistryPath );

    PT_DBG_PRINT( PTDBG_TRACE_ROUTINES,
                  ("PassThrough!DriverEntry: Entered\n") );

    //
    //  Register with FltMgr to tell it our callback routines
    //

    status = FltRegisterFilter( DriverObject,
                                &FilterRegistration,
                                &gFilterHandle );

    ASSERT( NT_SUCCESS( status ) );

    if (NT_SUCCESS( status )) {

        //
        //  Start filtering i/o
        //

        status = FltStartFiltering( gFilterHandle );

        if (!NT_SUCCESS( status )) {

            FltUnregisterFilter( gFilterHandle );
        }
    }

    return status;
}

NTSTATUS
PtUnload (
    FLT_FILTER_UNLOAD_FLAGS Flags
    )
/*++

Routine Description:

    This is the unload routine for this miniFilter driver. This is called
    when the minifilter is about to be unloaded. We can fail this unload
    request if this is not a mandatory unloaded indicated by the Flags
    parameter.

Arguments:

    Flags - Indicating if this is a mandatory unload.

Return Value:

    Returns the final status of this operation.

--*/
{
    UNREFERENCED_PARAMETER( Flags );

    PT_DBG_PRINT( PTDBG_TRACE_ROUTINES,
                  ("PassThrough!PtUnload: Entered\n") );

    FltUnregisterFilter( gFilterHandle );

    return STATUS_SUCCESS;
}


/*************************************************************************
    MiniFilter callback routines.
*************************************************************************/
FLT_PREOP_CALLBACK_STATUS
PtPreOperationPassThrough (
    IN OUT PFLT_CALLBACK_DATA Data,
    IN PCFLT_RELATED_OBJECTS FltObjects,
    OUT PVOID *CompletionContext
    )
/*++

Routine Description:

    This routine is the main pre-operation dispatch routine for this
    miniFilter. Since this is just a simple passThrough miniFilter it
    does not do anything with the callbackData but rather return
    FLT_PREOP_SUCCESS_WITH_CALLBACK thereby passing it down to the next
    miniFilter in the chain.

    This is non-pageable because it could be called on the paging path

Arguments:

    Data - Pointer to the filter callbackData that is passed to us.

    FltObjects - Pointer to the FLT_RELATED_OBJECTS data structure containing
        opaque handles to this filter, instance, its associated volume and
        file object.

    CompletionContext - The context for the completion routine for this
        operation.

Return Value:

    The return value is the status of the operation.

--*/
{
    NTSTATUS status;

    UNREFERENCED_PARAMETER( FltObjects );
    UNREFERENCED_PARAMETER( CompletionContext );

    PT_DBG_PRINT( PTDBG_TRACE_ROUTINES,
                  ("PassThrough!PtPreOperationPassThrough: Entered\n") );

    //
    //  See if this is an operation we would like the operation status
    //  for.  If so request it.
    //
    //  NOTE: most filters do NOT need to do this.  You only need to make
    //        this call if, for example, you need to know if the oplock was
    //        actually granted.
    //

    if (PtDoRequestOperationStatus( Data )) {

        status = FltRequestOperationStatusCallback( Data,
                                                    PtOperationStatusCallback,
                                                    (PVOID)(++OperationStatusCtx) );
        if (!NT_SUCCESS(status)) {

            PT_DBG_PRINT( PTDBG_TRACE_OPERATION_STATUS,
                          ("PassThrough!PtPreOperationPassThrough: FltRequestOperationStatusCallback Failed, status=%08x\n",
                           status) );
        }
    }

    return FLT_PREOP_SUCCESS_WITH_CALLBACK;
}



VOID
PtOperationStatusCallback (
    IN PCFLT_RELATED_OBJECTS FltObjects,
    IN PFLT_IO_PARAMETER_BLOCK IopbSnapshot,
    IN NTSTATUS OperationStatus,
    IN PVOID RequesterContext
    )
/*++

Routine Description:

    This routine is called when the given operation returns from the call
    to IoCallDriver.  This is useful for operations where STATUS_PENDING
    means the operation was successfully queued.  This is useful for OpLocks
    and directory change notification operations.

    This callback is called in the context of the originating thread and will
    never be called at DPC level.  The file object has been correctly
    referenced so that you can access it.  It will be automatically
    dereferenced upon return.

    This is non-pageable because it could be called on the paging path

Arguments:

    FltObjects - Pointer to the FLT_RELATED_OBJECTS data structure containing
        opaque handles to this filter, instance, its associated volume and
        file object.

    RequesterContext - The context for the completion routine for this
        operation.

    OperationStatus -

Return Value:

    The return value is the status of the operation.

--*/
{
    PT_DBG_PRINT( PTDBG_TRACE_ROUTINES,
                  ("PassThrough!PtOperationStatusCallback: Entered\n") );

    PT_DBG_PRINT( PTDBG_TRACE_OPERATION_STATUS,
                  ("PassThrough!PtOperationStatusCallback: Status=%08x ctx=%p IrpMj=%02x.%02x \"%s\"\n",
                   OperationStatus,
                   RequesterContext,
                   IopbSnapshot->MajorFunction,
                   IopbSnapshot->MinorFunction,
                   FltGetIrpName(IopbSnapshot->MajorFunction)) );
}


FLT_POSTOP_CALLBACK_STATUS
PtPostOperationPassThrough (
    IN OUT PFLT_CALLBACK_DATA Data,
    IN PCFLT_RELATED_OBJECTS FltObjects,
    IN PVOID CompletionContext,
    IN FLT_POST_OPERATION_FLAGS Flags
    )
/*++

Routine Description:

    This routine is the post-operation completion routine for this
    miniFilter.

    This is non-pageable because it may be called at DPC level.

Arguments:

    Data - Pointer to the filter callbackData that is passed to us.

    FltObjects - Pointer to the FLT_RELATED_OBJECTS data structure containing
        opaque handles to this filter, instance, its associated volume and
        file object.

    CompletionContext - The completion context set in the pre-operation routine.

    Flags - Denotes whether the completion is successful or is being drained.

Return Value:

    The return value is the status of the operation.

--*/
{
    UNREFERENCED_PARAMETER( Data );
    UNREFERENCED_PARAMETER( FltObjects );
    UNREFERENCED_PARAMETER( CompletionContext );
    UNREFERENCED_PARAMETER( Flags );

    PT_DBG_PRINT( PTDBG_TRACE_ROUTINES,
                  ("PassThrough!PtPostOperationPassThrough: Entered\n") );

    return FLT_POSTOP_FINISHED_PROCESSING;
}


FLT_PREOP_CALLBACK_STATUS
PtPreOperationNoPostOperationPassThrough (
    IN OUT PFLT_CALLBACK_DATA Data,
    IN PCFLT_RELATED_OBJECTS FltObjects,
    OUT PVOID *CompletionContext
    )
/*++

Routine Description:

    This routine is the main pre-operation dispatch routine for this
    miniFilter. Since this is just a simple passThrough miniFilter it
    does not do anything with the callbackData but rather return
    FLT_PREOP_SUCCESS_WITH_CALLBACK thereby passing it down to the next
    miniFilter in the chain.

    This is non-pageable because it could be called on the paging path

Arguments:

    Data - Pointer to the filter callbackData that is passed to us.

    FltObjects - Pointer to the FLT_RELATED_OBJECTS data structure containing
        opaque handles to this filter, instance, its associated volume and
        file object.

    CompletionContext - The context for the completion routine for this
        operation.

Return Value:

    The return value is the status of the operation.

--*/
{
    UNREFERENCED_PARAMETER( Data );
    UNREFERENCED_PARAMETER( FltObjects );
    UNREFERENCED_PARAMETER( CompletionContext );

    PT_DBG_PRINT( PTDBG_TRACE_ROUTINES,
                  ("PassThrough!PtPreOperationNoPostOperationPassThrough: Entered\n") );

    return FLT_PREOP_SUCCESS_NO_CALLBACK;
}


BOOLEAN
PtDoRequestOperationStatus(
    IN PFLT_CALLBACK_DATA Data
    )
/*++

Routine Description:

    This identifies those operations we want the operation status for.  These
    are typically operations that return STATUS_PENDING as a normal completion
    status.

Arguments:

Return Value:

    TRUE - If we want the operation status
    FALSE - If we don't

--*/
{
    PFLT_IO_PARAMETER_BLOCK iopb = Data->Iopb;

    //
    //  return boolean state based on which operations we are interested in
    //

    return (BOOLEAN)

            //
            //  Check for oplock operations
            //

             (((iopb->MajorFunction == IRP_MJ_FILE_SYSTEM_CONTROL) &&
               ((iopb->Parameters.FileSystemControl.Common.FsControlCode == FSCTL_REQUEST_FILTER_OPLOCK)  ||
                (iopb->Parameters.FileSystemControl.Common.FsControlCode == FSCTL_REQUEST_BATCH_OPLOCK)   ||
                (iopb->Parameters.FileSystemControl.Common.FsControlCode == FSCTL_REQUEST_OPLOCK_LEVEL_1) ||
                (iopb->Parameters.FileSystemControl.Common.FsControlCode == FSCTL_REQUEST_OPLOCK_LEVEL_2)))

              ||

              //
              //    Check for directy change notification
              //

              ((iopb->MajorFunction == IRP_MJ_DIRECTORY_CONTROL) &&
               (iopb->MinorFunction == IRP_MN_NOTIFY_CHANGE_DIRECTORY))
             );
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲第一狼人社区| 成人毛片在线观看| 99精品国产99久久久久久白柏| 欧美亚洲国产一区在线观看网站 | 欧美国产日韩亚洲一区| 五月天欧美精品| 91亚洲午夜精品久久久久久| 久久亚洲精品小早川怜子| 日韩专区一卡二卡| 色av成人天堂桃色av| 欧美激情一区二区| 国产在线精品免费| 日韩精品一区二区三区在线观看| 一区二区三区小说| 91麻豆精品视频| 国产精品久久久久影院| 国产麻豆91精品| 日韩精品一区二区三区在线播放 | 国产亚洲人成网站| 免费欧美日韩国产三级电影| 欧美日韩综合在线| 一区二区三区精品视频| 色综合久久综合| 亚洲三级理论片| 色视频一区二区| 一区二区三区av电影 | 久久亚洲一区二区三区四区| 日本女人一区二区三区| 91精品欧美综合在线观看最新| 亚洲成人你懂的| 制服丝袜日韩国产| 日本视频中文字幕一区二区三区| 欧美浪妇xxxx高跟鞋交| 视频一区二区三区入口| 51精品秘密在线观看| 老鸭窝一区二区久久精品| 日韩一区二区三区在线| 久久66热re国产| 久久久久久久久久久电影| 成人综合在线观看| 成人欧美一区二区三区黑人麻豆| 日本道免费精品一区二区三区| 亚洲在线视频一区| 在线播放亚洲一区| 国产自产2019最新不卡| 欧美国产日韩亚洲一区| 色婷婷狠狠综合| 天天色 色综合| 久久免费国产精品| www.色精品| 亚洲第一激情av| 精品国产乱码久久久久久久| 成人综合在线视频| 亚洲成a天堂v人片| 久久综合久久鬼色| 99久久精品费精品国产一区二区| 亚洲精品视频自拍| 日韩一级成人av| 高清国产午夜精品久久久久久| 亚洲欧美偷拍另类a∨色屁股| 欧美日韩五月天| 国产美女在线观看一区| 亚洲精品免费播放| 久久日韩精品一区二区五区| 91丨porny丨在线| 日本欧美一区二区三区| 欧美激情一区二区在线| 欧美三级在线视频| 成人免费毛片嘿嘿连载视频| 亚洲国产精品久久人人爱 | 日韩一区二区三区四区| 成人高清在线视频| 日韩av成人高清| 国产精品国产三级国产专播品爱网| 欧美日韩免费电影| 成人午夜视频在线| 免费精品视频在线| 亚洲丝袜制服诱惑| 久久久精品影视| 欧美乱熟臀69xxxxxx| 97久久精品人人做人人爽| 精品一区二区三区免费视频| 亚洲欧美日韩久久| 久久精品一区二区三区av | 欧美图区在线视频| 成人久久18免费网站麻豆| 日韩**一区毛片| 亚洲男同性恋视频| 中文字幕av一区 二区| 666欧美在线视频| 欧美日免费三级在线| 99久久国产综合精品女不卡| 国产一区二区三区在线看麻豆| 午夜精品一区在线观看| 亚洲欧美国产三级| 国产精品美女久久久久aⅴ国产馆| 日韩欧美国产一区在线观看| 欧美精品一级二级| 欧美三级韩国三级日本一级| 91免费国产在线观看| 国产成人免费视频网站| 极品少妇一区二区三区精品视频| 亚洲一区在线视频| 亚洲欧美福利一区二区| 国产精品短视频| 国产精品久久久久久久久图文区| 久久久久久久久久久久久夜| 精品免费一区二区三区| 日韩久久久久久| 欧美成人性福生活免费看| 欧美电视剧免费观看| 日韩无一区二区| 日韩你懂的电影在线观看| 91精品国产综合久久久久| 欧美精品乱码久久久久久按摩| 欧美日韩一区二区欧美激情| 欧美性视频一区二区三区| 欧美色窝79yyyycom| 在线播放中文字幕一区| 欧美α欧美αv大片| 欧美一级艳片视频免费观看| 日韩一区二区三区在线观看| 欧美一区二区日韩一区二区| 日韩午夜小视频| 国产午夜精品一区二区三区视频 | 91亚洲大成网污www| 色综合久久综合网欧美综合网| 在线看国产日韩| 欧美日韩国产乱码电影| 精品国产乱码久久久久久蜜臀| 久久理论电影网| 中文字幕一区二区三区在线观看| 亚洲日本va午夜在线电影| 亚洲成av人在线观看| 精品亚洲成a人在线观看| 国产福利不卡视频| 91精品91久久久中77777| 在线不卡中文字幕| 欧美国产精品一区二区三区| 亚洲美女淫视频| 久久99精品视频| 99久久99久久综合| 538在线一区二区精品国产| 国产三级欧美三级| 亚洲一区二区三区免费视频| 精品一区免费av| 99久精品国产| 日韩欧美一卡二卡| 最新中文字幕一区二区三区 | 日韩区在线观看| 国产精品美女久久久久久久久久久| 亚洲精品成a人| 韩国女主播一区| 欧美在线不卡一区| 久久日韩精品一区二区五区| 亚洲国产欧美一区二区三区丁香婷| 国内外精品视频| 欧美日韩成人一区二区| 中文字幕欧美激情| 免费xxxx性欧美18vr| 99在线精品一区二区三区| 日韩一级视频免费观看在线| 亚洲丝袜制服诱惑| 国产一区不卡在线| 91精品麻豆日日躁夜夜躁| 国产精品看片你懂得| 久久精品久久久精品美女| 在线日韩av片| 国产精品伦理一区二区| 九九九久久久精品| 欧美日产在线观看| 亚洲免费在线视频| 成人爱爱电影网址| 欧美精品一区二| 男人的天堂久久精品| 欧美另类一区二区三区| 最新国产成人在线观看| 国产成人在线视频网站| 欧美成人精品3d动漫h| 亚洲成人一区在线| 色噜噜狠狠成人网p站| 中文字幕一区免费在线观看| 九一久久久久久| 欧美大片在线观看一区| 欧美a级理论片| 欧美一区二区啪啪| 偷拍日韩校园综合在线| 在线亚洲一区二区| 一区二区国产盗摄色噜噜| 99视频精品免费视频| 国产精品日产欧美久久久久| 国产成人99久久亚洲综合精品| 久久―日本道色综合久久| 黑人巨大精品欧美黑白配亚洲| 欧美电影免费观看高清完整版| 蜜桃精品视频在线观看| 日韩午夜在线观看视频| 蜜臀91精品一区二区三区| 日韩欧美自拍偷拍| 狠狠v欧美v日韩v亚洲ⅴ|