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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? passthrough.c

?? miniFilter.rar所有框架代碼以及對應的PPT資料,可以直接拿來進行修改即可完成各種驅(qū)動,是你開發(fā)微軟新過濾構(gòu)架驅(qū)動所必下資料
?? C
?? 第 1 頁 / 共 2 頁
字號:

    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 );

    PAGED_CODE();

    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 );

    PAGED_CODE();

    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 (
    __in 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 );

    PAGED_CODE();

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

    FltUnregisterFilter( gFilterHandle );

    return STATUS_SUCCESS;
}


/*************************************************************************
    MiniFilter callback routines.
*************************************************************************/
FLT_PREOP_CALLBACK_STATUS
PtPreOperationPassThrough (
    __inout PFLT_CALLBACK_DATA Data,
    __in PCFLT_RELATED_OBJECTS FltObjects,
    __deref_out_opt 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 ParameterSnapshot,
    __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,
                   ParameterSnapshot->MajorFunction,
                   ParameterSnapshot->MinorFunction,
                   FltGetIrpName(ParameterSnapshot->MajorFunction)) );
}


FLT_POSTOP_CALLBACK_STATUS
PtPostOperationPassThrough (
    __inout PFLT_CALLBACK_DATA Data,
    __in PCFLT_RELATED_OBJECTS FltObjects,
    __in_opt 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 (
    __inout PFLT_CALLBACK_DATA Data,
    __in PCFLT_RELATED_OBJECTS FltObjects,
    __deref_out_opt 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久久99久久精品免费看蜜桃 | 国产精品888| 91久久国产最好的精华液| 久久只精品国产| 婷婷中文字幕一区三区| 99久久精品免费观看| 精品久久人人做人人爱| 亚欧色一区w666天堂| av中文字幕一区| 久久久久97国产精华液好用吗| 午夜国产精品一区| 99国产麻豆精品| 国产精品丝袜91| 经典三级视频一区| 884aa四虎影成人精品一区| 亚洲色图.com| 99免费精品视频| 国产欧美一区二区三区网站| 黑人巨大精品欧美黑白配亚洲| 9191国产精品| 天堂午夜影视日韩欧美一区二区| 一本大道av伊人久久综合| 国产日韩av一区| 国产一区不卡在线| 欧美精品一区二区在线播放 | 亚洲欧美另类久久久精品2019| 国产激情一区二区三区| 久久久不卡影院| 国产成人亚洲综合a∨婷婷| 亚洲精品在线免费观看视频| 老司机精品视频线观看86| 6080日韩午夜伦伦午夜伦| 天堂资源在线中文精品| 91精品国产综合久久精品| 亚洲三级免费观看| 欧美亚洲一区二区在线| 偷拍一区二区三区| 日韩精品专区在线影院重磅| 国精产品一区一区三区mba桃花| 久久综合久久久久88| 成人综合婷婷国产精品久久免费| 国产目拍亚洲精品99久久精品| 99久久久无码国产精品| 一区二区欧美国产| 51午夜精品国产| 美日韩黄色大片| 久久久精品免费观看| 99久久精品久久久久久清纯| 一区二区三区四区激情| 欧美剧情片在线观看| 久久成人综合网| 久久精品夜夜夜夜久久| 91女厕偷拍女厕偷拍高清| 一区二区三区中文在线| 91精品国产综合久久久蜜臀图片| 国产乱码精品一区二区三| 亚洲日本中文字幕区| 3751色影院一区二区三区| 国产精品香蕉一区二区三区| 亚洲视频1区2区| 日韩一区二区高清| 高清beeg欧美| 亚洲午夜电影网| 久久综合久久综合九色| 日本福利一区二区| 精品一区二区三区在线播放 | 久久伊99综合婷婷久久伊| 成人免费三级在线| 天堂va蜜桃一区二区三区漫画版| 精品福利一区二区三区免费视频| 成人黄色一级视频| 亚洲mv在线观看| 欧美国产禁国产网站cc| 欧美日韩国产一级二级| 成人精品视频一区二区三区| 午夜精品福利一区二区蜜股av| 国产三级精品在线| 欧美一区二区福利视频| 色婷婷久久一区二区三区麻豆| 麻豆成人久久精品二区三区红| 中文字幕色av一区二区三区| 精品国产伦理网| 欧美精品久久99久久在免费线 | 91国在线观看| 国产精品伊人色| 午夜精品久久久久久久99樱桃| 综合久久久久久久| 日韩免费电影一区| 欧美剧在线免费观看网站| 色综合色综合色综合色综合色综合 | 亚洲精品国产成人久久av盗摄 | 日韩欧美在线观看一区二区三区| 91免费版在线看| 国产iv一区二区三区| 精品一区二区三区在线播放| 日韩和欧美一区二区三区| 亚洲一区二区精品3399| **性色生活片久久毛片| 国产精品九色蝌蚪自拍| 国产亚洲一区二区三区在线观看| 日韩小视频在线观看专区| 欧美久久婷婷综合色| 欧美日韩专区在线| 欧美性猛交xxxx乱大交退制版| 91网站最新网址| av不卡免费在线观看| 成人高清在线视频| 成人免费视频app| 成人黄色一级视频| 99视频一区二区| 99久久伊人网影院| 91老司机福利 在线| 91网上在线视频| 91美女片黄在线观看91美女| 99久久夜色精品国产网站| 不卡av电影在线播放| 91丨porny丨国产| 日本福利一区二区| 欧美亚洲自拍偷拍| 91精品国产丝袜白色高跟鞋| 日韩欧美自拍偷拍| 国产亚洲一区二区在线观看| 中文字幕免费不卡| 亚洲免费看黄网站| 国产欧美日本一区二区三区| 中文字幕成人av| 国产精品久久久久aaaa樱花| 亚洲精品一卡二卡| 午夜精品一区二区三区电影天堂| 奇米777欧美一区二区| 国产一区二区三区在线观看精品| 国产一区二区三区日韩| 成人激情校园春色| 一本大道av一区二区在线播放| 欧美最猛性xxxxx直播| 在线免费观看日韩欧美| 在线国产电影不卡| 欧美电视剧免费全集观看| 欧美韩日一区二区三区四区| 亚洲人成7777| 亚洲国产精品综合小说图片区| 日韩国产成人精品| 国产福利精品导航| 欧美自拍偷拍午夜视频| 日韩欧美亚洲一区二区| 国产调教视频一区| 午夜一区二区三区在线观看| 久久国产夜色精品鲁鲁99| a亚洲天堂av| 欧美午夜精品免费| 久久久五月婷婷| 亚洲综合丝袜美腿| 国产成a人无v码亚洲福利| 欧美日韩一区成人| 亚洲国产精品激情在线观看 | 91精品国产91综合久久蜜臀| 中文一区二区完整视频在线观看| 亚洲国产中文字幕在线视频综合| 国产主播一区二区三区| 欧美专区日韩专区| 中文字幕免费一区| 久久99精品久久久| 日本久久电影网| 日本一区二区不卡视频| 欧美a级理论片| 在线免费不卡电影| 1区2区3区欧美| 国产原创一区二区| 欧美唯美清纯偷拍| 国产欧美精品国产国产专区 | 亚洲不卡在线观看| 成人动漫视频在线| 欧美xxx久久| 亚洲第一av色| 欧美亚洲一区二区在线| 国产精品国产自产拍高清av王其 | 日本韩国一区二区三区| 国产精品婷婷午夜在线观看| 国内精品久久久久影院色 | 欧美日韩在线播| 亚洲女子a中天字幕| www.日韩在线| 国产日产欧美精品一区二区三区| 麻豆精品在线视频| 日韩视频123| 午夜精品一区二区三区三上悠亚| 91在线播放网址| 欧美韩国日本一区| 粗大黑人巨茎大战欧美成人| 精品国产伦一区二区三区观看体验| 免费看日韩精品| 欧美一区二区视频网站| 免费在线看成人av| 欧美一区永久视频免费观看| 蜜臀av性久久久久蜜臀aⅴ流畅| 在线不卡中文字幕播放| 日韩avvvv在线播放| 91精品综合久久久久久|