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

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

?? metadatamanagerinit.c

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

Copyright (c) 1999 - 2003  Microsoft Corporation

Module Name:

    MetadataManagerInit.c

Abstract:

    This is the main module of the kernel mode filter driver implementing
    filter metadata management.


Environment:

    Kernel mode


--*/

#include "pch.h"

//
//  Global variables
//

FMM_GLOBAL_DATA Globals;


//
//  Local constants
//

#define FMM_UNSUPPORTED_DEVICE_CHARACS   FILE_FLOPPY_DISKETTE |         \
                                         FILE_REMOVABLE_MEDIA |         \
                                         FILE_READ_ONLY_DEVICE |        \
                                         FILE_VIRTUAL_VOLUME

//
//  Local function prototypes
//

NTSTATUS
DriverEntry (
    __in PDRIVER_OBJECT DriverObject,
    __in PUNICODE_STRING RegistryPath
    );

NTSTATUS
FmmUnload (
    __in FLT_FILTER_UNLOAD_FLAGS Flags
    );

VOID
FmmContextCleanup (
    __in PFLT_CONTEXT Context,
    __in FLT_CONTEXT_TYPE ContextType
    );

NTSTATUS
FmmInstanceSetup (
    __in PCFLT_RELATED_OBJECTS FltObjects,
    __in FLT_INSTANCE_SETUP_FLAGS Flags,
    __in DEVICE_TYPE VolumeDeviceType,
    __in FLT_FILESYSTEM_TYPE VolumeFilesystemType
    );

NTSTATUS
FmmInstanceQueryTeardown (
    __in PCFLT_RELATED_OBJECTS FltObjects,
    __in FLT_INSTANCE_QUERY_TEARDOWN_FLAGS Flags
    );

VOID
FmmInstanceTeardownStart (
    __in PCFLT_RELATED_OBJECTS FltObjects,
    __in FLT_INSTANCE_TEARDOWN_FLAGS Flags
    );

VOID
FmmInstanceTeardownComplete (
    __in PCFLT_RELATED_OBJECTS FltObjects,
    __in FLT_INSTANCE_TEARDOWN_FLAGS Flags
    );

#if DBG

VOID
FmmInitializeDebugLevel (
    __in PUNICODE_STRING RegistryPath
    );

#endif

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

#ifdef ALLOC_PRAGMA
#pragma alloc_text(INIT, DriverEntry)

#if DBG
#pragma alloc_text(INIT, FmmInitializeDebugLevel)
#endif

#pragma alloc_text(PAGE, FmmUnload)
#pragma alloc_text(PAGE, FmmContextCleanup)
#pragma alloc_text(PAGE, FmmInstanceSetup)
#pragma alloc_text(PAGE, FmmInstanceQueryTeardown)
#pragma alloc_text(PAGE, FmmInstanceTeardownStart)
#pragma alloc_text(PAGE, FmmInstanceTeardownComplete)
#endif


//
//  Filter driver initialization and unload routines
//

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

Routine Description:

    This is the initialization routine for this filter driver. It registers
    itself with the filter manager and initializes all its 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;

    //
    //  Filters callback routines
    //

    FLT_OPERATION_REGISTRATION callbacks[] = {

        { IRP_MJ_CREATE,
          FLTFL_OPERATION_REGISTRATION_SKIP_PAGING_IO,
          FmmPreCreate,
          FmmPostCreate },

        { IRP_MJ_CLEANUP,
          FLTFL_OPERATION_REGISTRATION_SKIP_PAGING_IO,
          FmmPreCleanup,
          FmmPostCleanup },


        { IRP_MJ_FILE_SYSTEM_CONTROL,
          FLTFL_OPERATION_REGISTRATION_SKIP_PAGING_IO,
          FmmPreFSControl,
          FmmPostFSControl },

        { IRP_MJ_DEVICE_CONTROL,
          FLTFL_OPERATION_REGISTRATION_SKIP_PAGING_IO,
          FmmPreDeviceControl,
          FmmPostDeviceControl },

        { IRP_MJ_SHUTDOWN,
          FLTFL_OPERATION_REGISTRATION_SKIP_PAGING_IO,
          FmmPreShutdown,
          NULL },

        { IRP_MJ_PNP,
          FLTFL_OPERATION_REGISTRATION_SKIP_PAGING_IO,
          FmmPrePnp,
          NULL },

        { IRP_MJ_OPERATION_END }
    };

    const FLT_CONTEXT_REGISTRATION contextRegistration[] = {

        { FLT_INSTANCE_CONTEXT,
          0,
          FmmContextCleanup,
          FMM_INSTANCE_CONTEXT_SIZE,
          FMM_INSTANCE_CONTEXT_TAG },

        { FLT_CONTEXT_END }
    };

    //
    // Filters registration data structure
    //

    FLT_REGISTRATION filterRegistration = {

        sizeof( FLT_REGISTRATION ),                     //  Size
        FLT_REGISTRATION_VERSION,                       //  Version
        0,                                              //  Flags
        contextRegistration,                            //  Context
        callbacks,                                      //  Operation callbacks
        FmmUnload,                                      //  Filters unload routine
        FmmInstanceSetup,                               //  InstanceSetup routine
        FmmInstanceQueryTeardown,                       //  InstanceQueryTeardown routine
        FmmInstanceTeardownStart,                       //  InstanceTeardownStart routine
        FmmInstanceTeardownComplete,                    //  InstanceTeardownComplete routine
        NULL, NULL, NULL                                //  Unused naming support callbacks
    };


    RtlZeroMemory( &Globals, sizeof( Globals ) );

#if DBG

    //
    //  Initialize global debug level
    //

    FmmInitializeDebugLevel( RegistryPath );

#else

    UNREFERENCED_PARAMETER( RegistryPath );

#endif

    DebugTrace( DEBUG_TRACE_LOAD_UNLOAD,
                ("[Fmm]: Driver being loaded\n") );



    //
    //  Register with the filter manager
    //

    status = FltRegisterFilter( DriverObject,
                                &filterRegistration,
                                &Globals.Filter );

    if (!NT_SUCCESS( status )) {

        return status;
    }

    //
    //  Start filtering I/O
    //

    status = FltStartFiltering( Globals.Filter );

    if (!NT_SUCCESS( status )) {

        FltUnregisterFilter( Globals.Filter );
    }

    DebugTrace( DEBUG_TRACE_LOAD_UNLOAD,
                ("[Fmm]: Driver loaded complete (Status = 0x%08X)\n",
                status) );

    return status;
}

#if DBG

VOID
FmmInitializeDebugLevel (
    __in PUNICODE_STRING RegistryPath
    )
/*++

Routine Description:

    This routine tries to read the filter DebugLevel parameter from
    the registry.  This value will be found in the registry location
    indicated by the RegistryPath passed in.

Arguments:

    RegistryPath - The path key passed to the driver during DriverEntry.

Return Value:

    None.

--*/
{
    OBJECT_ATTRIBUTES attributes;
    HANDLE driverRegKey;
    NTSTATUS status;
    ULONG resultLength;
    UNICODE_STRING valueName;
    UCHAR buffer[sizeof( KEY_VALUE_PARTIAL_INFORMATION ) + sizeof( LONG )];

    Globals.DebugLevel = DEBUG_TRACE_ERROR;

    //
    //  Open the desired registry key
    //

    InitializeObjectAttributes( &attributes,
                                RegistryPath,
                                OBJ_CASE_INSENSITIVE,
                                NULL,
                                NULL );

    status = ZwOpenKey( &driverRegKey,
                        KEY_READ,
                        &attributes );

    if (NT_SUCCESS( status )) {

        //
        // Read the DebugFlags value from the registry.
        //

        RtlInitUnicodeString( &valueName, L"DebugLevel" );

        status = ZwQueryValueKey( driverRegKey,
                                  &valueName,
                                  KeyValuePartialInformation,
                                  buffer,
                                  sizeof(buffer),
                                  &resultLength );

        if (NT_SUCCESS( status )) {

            Globals.DebugLevel = *((PULONG) &(((PKEY_VALUE_PARTIAL_INFORMATION) buffer)->Data));
        }
    }

    //
    //  Close the registry entry
    //

    ZwClose( driverRegKey );
}

#endif

NTSTATUS
FmmUnload (
    __in FLT_FILTER_UNLOAD_FLAGS Flags
    )
/*++

Routine Description:

    This is the unload routine for this filter 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();

    DebugTrace( DEBUG_TRACE_LOAD_UNLOAD,
                ("[Fmm]: Unloading driver\n") );


    FltUnregisterFilter( Globals.Filter );
    Globals.Filter = NULL;

    return STATUS_SUCCESS;
}

VOID
FmmContextCleanup (
    __in PFLT_CONTEXT Context,
    __in FLT_CONTEXT_TYPE ContextType
    )
{
    PFMM_INSTANCE_CONTEXT instanceContext;

    PAGED_CODE();

    switch(ContextType) {

    case FLT_INSTANCE_CONTEXT:

        instanceContext = Context;

        DebugTrace( DEBUG_TRACE_INFO,
                    ("[Fmm]: Cleaning up instance context for volume (Context = %p)\n",
                    instanceContext) );

        ExDeleteResourceLite( &instanceContext->MetadataResouce );

        break;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久久蜜桃精品| 欧美视频一二三区| 亚洲主播在线观看| 日韩免费电影网站| 亚洲午夜一区二区| 成人av免费在线| 日本一区二区三区国色天香| 欧美中文字幕不卡| 久久国产精品无码网站| 亚洲精品视频在线观看免费| www日韩大片| 欧美日韩精品一二三区| www.色综合.com| 看国产成人h片视频| 一区二区三区四区视频精品免费 | 国产精品一区专区| 亚洲一区二区3| 久久九九99视频| 7878成人国产在线观看| 色婷婷精品大在线视频| 成年人网站91| 国产一区中文字幕| 狠狠色伊人亚洲综合成人| 欧美男生操女生| 日本不卡视频一二三区| 一区二区三区不卡在线观看| 国产女主播一区| 国产日韩成人精品| 久久免费精品国产久精品久久久久| 欧美日韩亚洲综合一区| 欧美体内she精视频| 色综合天天性综合| 97精品国产97久久久久久久久久久久 | 精品污污网站免费看| 成人的网站免费观看| 国产一区 二区| 国产自产v一区二区三区c| 日韩av电影免费观看高清完整版| 亚洲午夜一二三区视频| 亚洲午夜免费视频| 亚洲国产日韩精品| 亚洲成人av一区二区三区| 亚洲一区二区三区在线| 亚洲国产欧美一区二区三区丁香婷| 亚洲欧美偷拍卡通变态| 亚洲色欲色欲www| 亚洲欧美视频在线观看视频| 一级日本不卡的影视| 亚洲午夜国产一区99re久久| 亚洲国产精品久久人人爱| 天天综合天天做天天综合| 日韩黄色在线观看| 免费成人美女在线观看| 国产又粗又猛又爽又黄91精品| 国产精品亚洲专一区二区三区 | 国产99一区视频免费| 成人美女在线观看| 色综合天天综合网国产成人综合天 | 国产精品一区二区三区乱码| 成人丝袜18视频在线观看| 99久久综合精品| 欧美日韩精品二区第二页| 日韩视频在线观看一区二区| 久久精品人人爽人人爽| 亚洲欧美自拍偷拍| 亚洲国产一区二区在线播放| 肉丝袜脚交视频一区二区| 精品一区二区三区免费观看| 粉嫩aⅴ一区二区三区四区五区 | 91麻豆精品久久久久蜜臀| 欧美成人一区二区| 国产精品久久久久久福利一牛影视 | 亚洲午夜日本在线观看| 亚洲一级二级三级| 制服丝袜亚洲网站| 国产亚洲精久久久久久| 亚洲欧美日韩国产另类专区| 热久久国产精品| 成人免费黄色大片| 欧美日韩国产首页在线观看| 久久先锋影音av鲁色资源网| 亚洲激情成人在线| 国产自产视频一区二区三区| 91久久精品一区二区二区| 精品卡一卡二卡三卡四在线| 亚洲视频一区二区免费在线观看| 日韩av中文字幕一区二区| 成人免费高清在线| 欧美一区二区三区日韩视频| 国产精品国产自产拍高清av| 日韩高清不卡一区| 成人黄色大片在线观看| 91精品在线一区二区| 国产精品久久久久一区二区三区共| 亚洲高清不卡在线| 成人黄色电影在线| 精品嫩草影院久久| 亚洲精品伦理在线| 国产一区二区伦理片| 在线观看日韩高清av| 国产欧美一区二区精品仙草咪| 亚洲成av人片在线| 成人午夜电影小说| 精品少妇一区二区三区在线播放| 亚洲一区二区三区四区五区中文| 国产精品影视在线观看| 欧美一区二区福利视频| 一区二区三区欧美| 国产91对白在线观看九色| 欧美一级片在线| 一区二区三区在线视频免费| 成人在线视频首页| 亚洲精品在线电影| 日本视频免费一区| 91国偷自产一区二区开放时间 | 欧美一级一级性生活免费录像| 亚洲日本在线a| 国产精品一区二区在线看| 91精品国产欧美一区二区| 一区二区三区四区视频精品免费| 成人av在线观| 欧美激情一区在线| 国产成人免费av在线| 久久综合九色综合97婷婷女人 | 亚洲午夜久久久久中文字幕久| 99re66热这里只有精品3直播| 久久久久国产免费免费| 国产一区二区中文字幕| 2023国产精华国产精品| 国内精品国产成人| 欧美精品一区二区三区在线| 久久99精品久久久久| 欧美成人女星排名| 久久疯狂做爰流白浆xx| 欧美不卡视频一区| 久久电影网站中文字幕| 久久色.com| 国产高清一区日本| 欧美国产97人人爽人人喊| 粉嫩高潮美女一区二区三区| 中文字幕视频一区| 91浏览器打开| 亚洲综合成人在线视频| 欧美亚洲综合另类| 婷婷综合另类小说色区| 日韩欧美中文一区二区| 九九九久久久精品| 久久日一线二线三线suv| 国产91精品欧美| 国产精品污网站| 91九色02白丝porn| 日韩精品一二三区| 精品国产污网站| 成人一区二区三区| 亚洲美女偷拍久久| 欧美人与性动xxxx| 国内一区二区视频| 亚洲欧洲精品一区二区三区不卡| 92国产精品观看| 午夜成人免费电影| 欧美变态口味重另类| 成人福利电影精品一区二区在线观看| 中文字幕一区二区5566日韩| 欧美日韩一级片网站| 精品一区二区三区av| 中文字幕在线一区二区三区| 91精彩视频在线观看| 免费一区二区视频| 国产丝袜在线精品| 欧美性做爰猛烈叫床潮| 久久99精品久久久久久久久久久久 | 一级女性全黄久久生活片免费| 91精品欧美福利在线观看| 国产盗摄精品一区二区三区在线| 亚洲人妖av一区二区| 日韩精品一区二区三区三区免费 | 日本欧美韩国一区三区| 久久免费偷拍视频| 欧美色图12p| 国产激情视频一区二区在线观看| 亚洲欧美色一区| 日韩精品一区二区三区蜜臀| 91在线精品一区二区| 蜜臀久久99精品久久久画质超高清| 中日韩av电影| 欧美电影精品一区二区| 99re这里只有精品首页| 麻豆久久久久久| 一区二区三区中文在线观看| 精品国产乱码久久久久久浪潮| 日本二三区不卡| 国产精品一区久久久久| 视频在线在亚洲| 亚洲免费三区一区二区| 亚洲精品一区二区在线观看| 在线观看日韩高清av| 高清不卡一区二区| 久久er99热精品一区二区| 亚洲午夜激情av| 国产精品久久久久影院亚瑟|