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

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

?? isowmi.c

?? usb范例代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*++

Copyright (c) 2004 Microsoft Corporation

Module Name:

    isowmi.c

Abstract:

Environment:

    Kernel mode

Notes:

    Copyright (c) 2004 Microsoft Corporation.
    All Rights Reserved.

--*/

#include "isousb.h"
#include "isopnp.h"
#include "isopwr.h"
#include "isodev.h"
#include "isowmi.h"
#include "isousr.h"
#include "isorwr.h"
#include "isostrm.h"

#define MOFRESOURCENAME L"MofResourceName"

#define WMI_ISOUSB_DRIVER_INFORMATION 0

DEFINE_GUID (ISOUSB_WMI_STD_DATA_GUID,
0xBBA21300, 0x6DD3, 0x11d2, 0xB8, 0x44, 0x00, 0xC0, 0x4F, 0xAD, 0x51, 0x71);

WMIGUIDREGINFO IsoWmiGuidList[1] = { {

        &ISOUSB_WMI_STD_DATA_GUID, 1, 0 // driver information
    }
};

#ifdef ALLOC_PRAGMA
#pragma alloc_text(PAGE, IsoUsb_WmiRegistration)
#pragma alloc_text(PAGE, IsoUsb_WmiDeRegistration)
#pragma alloc_text(PAGE, IsoUsb_DispatchSysCtrl)
#pragma alloc_text(PAGE, IsoUsb_QueryWmiRegInfo)
#pragma alloc_text(PAGE, IsoUsb_QueryWmiDataBlock)
#pragma alloc_text(PAGE, IsoUsb_SetWmiDataItem)
#pragma alloc_text(PAGE, IsoUsb_SetWmiDataBlock)
#endif

NTSTATUS
IsoUsb_WmiRegistration(
    IN OUT PDEVICE_EXTENSION DeviceExtension
    )
/*++

Routine Description:

    Registers with WMI as a data provider for this
    instance of the device

Arguments:

Return Value:

--*/
{
    NTSTATUS ntStatus;

    PAGED_CODE();

    DeviceExtension->WmiLibInfo.GuidCount =
          sizeof (IsoWmiGuidList) / sizeof (WMIGUIDREGINFO);

    DeviceExtension->WmiLibInfo.GuidList           = IsoWmiGuidList;
    DeviceExtension->WmiLibInfo.QueryWmiRegInfo    = IsoUsb_QueryWmiRegInfo;
    DeviceExtension->WmiLibInfo.QueryWmiDataBlock  = IsoUsb_QueryWmiDataBlock;
    DeviceExtension->WmiLibInfo.SetWmiDataBlock    = IsoUsb_SetWmiDataBlock;
    DeviceExtension->WmiLibInfo.SetWmiDataItem     = IsoUsb_SetWmiDataItem;
    DeviceExtension->WmiLibInfo.ExecuteWmiMethod   = NULL;
    DeviceExtension->WmiLibInfo.WmiFunctionControl = NULL;

    //
    // Register with WMI
    //

    ntStatus = IoWMIRegistrationControl(DeviceExtension->FunctionalDeviceObject,
                                        WMIREG_ACTION_REGISTER);

    return ntStatus;

}

NTSTATUS
IsoUsb_WmiDeRegistration(
    IN OUT PDEVICE_EXTENSION DeviceExtension
    )
/*++

Routine Description:

     Inform WMI to remove this DeviceObject from its
     list of providers. This function also
     decrements the reference count of the deviceobject.

Arguments:

Return Value:

--*/
{

    PAGED_CODE();

    return IoWMIRegistrationControl(DeviceExtension->FunctionalDeviceObject,
                                    WMIREG_ACTION_DEREGISTER);

}

NTSTATUS
IsoUsb_DispatchSysCtrl(
    IN PDEVICE_OBJECT DeviceObject,
    IN PIRP           Irp
    )
/*++

Routine Description:

Arguments:

Return Value:

--*/
{
    PDEVICE_EXTENSION       deviceExtension;
    SYSCTL_IRP_DISPOSITION  disposition;
    NTSTATUS                ntStatus;
    PIO_STACK_LOCATION      irpStack;

    PAGED_CODE();

    irpStack = IoGetCurrentIrpStackLocation (Irp);
    deviceExtension = (PDEVICE_EXTENSION) DeviceObject->DeviceExtension;

    IsoUsb_DbgPrint(3, ("%s",WMIMinorFunctionString(irpStack->MinorFunction)));

    if(Removed == deviceExtension->DeviceState) {

        ntStatus = STATUS_DELETE_PENDING;

        Irp->IoStatus.Status = ntStatus;
        Irp->IoStatus.Information = 0;

        IoCompleteRequest(Irp, IO_NO_INCREMENT);

        return ntStatus;
    }

    IsoUsb_DbgPrint(3, ("IsoUsb_DispatchSysCtrl::"));
    IsoUsb_IoIncrement(deviceExtension);

    ntStatus = WmiSystemControl(&deviceExtension->WmiLibInfo,
                                DeviceObject,
                                Irp,
                                &disposition);

    switch(disposition) {

        case IrpProcessed:
        {
            //
            // This irp has been processed and may be completed or pending.
            //

            break;
        }

        case IrpNotCompleted:
        {
            //
            // This irp has not been completed, but has been fully processed.
            // we will complete it now
            //

            IoCompleteRequest(Irp, IO_NO_INCREMENT);

            break;
        }

        case IrpForward:
        case IrpNotWmi:
        {
            //
            // This irp is either not a WMI irp or is a WMI irp targeted
            // at a device lower in the stack.
            //

            IoSkipCurrentIrpStackLocation (Irp);

            ntStatus = IoCallDriver(deviceExtension->TopOfStackDeviceObject,
                                    Irp);

            break;
        }

        default:
        {
            //
            // We really should never get here, but if we do just forward....
            //

            ASSERT(FALSE);

            IoSkipCurrentIrpStackLocation (Irp);

            ntStatus = IoCallDriver(deviceExtension->TopOfStackDeviceObject,
                                  Irp);
            break;
        }
    }

    IsoUsb_DbgPrint(3, ("IsoUsb_DispatchSysCtrl::"));
    IsoUsb_IoDecrement(deviceExtension);

    return ntStatus;
}

NTSTATUS
IsoUsb_QueryWmiRegInfo(
    IN  PDEVICE_OBJECT  DeviceObject,
    OUT ULONG           *RegFlags,
    OUT PUNICODE_STRING InstanceName,
    OUT PUNICODE_STRING *RegistryPath,
    OUT PUNICODE_STRING MofResourceName,
    OUT PDEVICE_OBJECT  *Pdo
    )
/*++

Routine Description:

    This routine is a callback into the driver to retrieve the list of
    guids or data blocks that the driver wants to register with WMI. This
    routine may not pend or block. Driver should NOT call
    WmiCompleteRequest.

Arguments:

    DeviceObject is the device whose data block is being queried

    *RegFlags returns with a set of flags that describe the guids being
        registered for this device. If the device wants enable and disable
        collection callbacks before receiving queries for the registered
        guids then it should return the WMIREG_FLAG_EXPENSIVE flag. Also the
        returned flags may specify WMIREG_FLAG_INSTANCE_PDO in which case
        the instance name is determined from the PDO associated with the
        device object. Note that the PDO must have an associated devnode. If
        WMIREG_FLAG_INSTANCE_PDO is not set then Name must return a unique
        name for the device.

    InstanceName returns with the instance name for the guids if
        WMIREG_FLAG_INSTANCE_PDO is not set in the returned *RegFlags. The
        caller will call ExFreePool with the buffer returned.

    *RegistryPath returns with the registry path of the driver

    *MofResourceName returns with the name of the MOF resource attached to
        the binary file. If the driver does not have a mof resource attached
        then this can be returned as NULL.

    *Pdo returns with the device object for the PDO associated with this
        device if the WMIREG_FLAG_INSTANCE_PDO flag is returned in
        *RegFlags.

Return Value:

    status

--*/
{
    PDEVICE_EXTENSION deviceExtension;

    PAGED_CODE();

   	UNREFERENCED_PARAMETER( InstanceName );

    IsoUsb_DbgPrint(3, ("IsoUsb_QueryWmiRegInfo - begins\n"));

    deviceExtension = DeviceObject->DeviceExtension;

    *RegFlags     = WMIREG_FLAG_INSTANCE_PDO;
    *RegistryPath = &Globals.IsoUsb_RegistryPath;
    *Pdo          = deviceExtension->PhysicalDeviceObject;
    RtlInitUnicodeString(MofResourceName, MOFRESOURCENAME);

    IsoUsb_DbgPrint(3, ("IsoUsb_QueryWmiRegInfo - ends\n"));

    return STATUS_SUCCESS;
}

NTSTATUS
IsoUsb_QueryWmiDataBlock(
    IN PDEVICE_OBJECT DeviceObject,
    IN PIRP           Irp,
    IN ULONG          GuidIndex,
    IN ULONG          InstanceIndex,
    IN ULONG          InstanceCount,
    IN OUT PULONG     InstanceLengthArray,
    IN ULONG          OutBufferSize,
    OUT PUCHAR        Buffer
    )
/*++

Routine Description:

    This routine is a callback into the driver to query for the contents of
    a data block. When the driver has finished filling the data block it
    must call WmiCompleteRequest to complete the irp. The driver can
    return STATUS_PENDING if the irp cannot be completed immediately.

Arguments:

    DeviceObject is the device whose data block is being queried

    Irp is the Irp that makes this request

    GuidIndex is the index into the list of guids provided when the
        device registered

    InstanceIndex is the index that denotes which instance of the data block
        is being queried.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲1区2区3区4区| 亚洲人成网站色在线观看| 色综合天天天天做夜夜夜夜做| 国产不卡高清在线观看视频| 日本欧美一区二区在线观看| 亚洲精品乱码久久久久久黑人| 国产精品久久久久一区二区三区共| 精品国产一区二区亚洲人成毛片 | 亚洲女同ⅹxx女同tv| 国产精品视频观看| 国产精品久久久久久亚洲伦| 国产精品黄色在线观看| 国产精品三级av在线播放| 中文字幕av在线一区二区三区| 国产精品视频麻豆| 国产精品区一区二区三| 亚洲色欲色欲www| 一区二区激情视频| 午夜精品久久久久久久| 日韩影院在线观看| 经典一区二区三区| 国产成人啪免费观看软件 | 亚洲色图.com| 亚洲一区在线观看免费观看电影高清| 亚洲一卡二卡三卡四卡| 三级欧美韩日大片在线看| 久久av中文字幕片| 国产自产视频一区二区三区| 懂色av中文字幕一区二区三区| 高清国产一区二区三区| 色综合天天综合给合国产| 欧美日精品一区视频| 欧美大片在线观看一区| 国产欧美一区二区三区在线看蜜臀 | 国产欧美视频在线观看| 亚洲猫色日本管| 毛片av一区二区三区| 国产不卡视频一区| 欧美巨大另类极品videosbest | 国产不卡高清在线观看视频| 色成人在线视频| 欧美一二三四区在线| 国产人久久人人人人爽| 午夜成人免费电影| 国产精品99久久久久久似苏梦涵| 一本色道久久综合精品竹菊| 欧美r级在线观看| 亚洲精品v日韩精品| 国模娜娜一区二区三区| 欧美亚洲一区三区| 欧美国产日韩亚洲一区| 日韩制服丝袜先锋影音| av激情综合网| 久久久久久久久免费| 亚洲第一成年网| 成a人片亚洲日本久久| 678五月天丁香亚洲综合网| 中文字幕一区二区在线播放 | 日韩视频一区在线观看| 日本一区二区电影| 亚洲男人的天堂一区二区| 日本美女一区二区三区视频| 91国在线观看| 正在播放一区二区| 久久久久国色av免费看影院| 日韩精品在线一区二区| 丰满亚洲少妇av| 亚洲一区二区精品视频| 日韩欧美国产精品| 成人精品视频一区二区三区| 亚洲小少妇裸体bbw| 欧美一区二区三区色| 国产成人精品影视| 亚洲国产欧美在线| 国产亚洲欧美日韩日本| 欧洲视频一区二区| 久久成人18免费观看| √…a在线天堂一区| 欧美一区二区免费| 99精品视频在线免费观看| 婷婷丁香久久五月婷婷| 欧美韩国日本不卡| 欧美精品视频www在线观看 | 中文字幕在线不卡一区| 欧美精品久久99| 成人视屏免费看| 免费成人在线观看视频| 最新国产精品久久精品| 日韩欧美亚洲一区二区| 91国偷自产一区二区使用方法| 九九热在线视频观看这里只有精品| 中文字幕永久在线不卡| 精品sm捆绑视频| 欧美精品丝袜久久久中文字幕| 99久久婷婷国产精品综合| 久久精品噜噜噜成人88aⅴ| 亚洲一区免费在线观看| 国产免费久久精品| 日韩一级免费观看| 欧洲国产伦久久久久久久| 成人免费av资源| 国产最新精品免费| 日韩影视精彩在线| 亚洲一区在线播放| 亚洲女性喷水在线观看一区| 国产日韩精品久久久| 欧美videos大乳护士334| 欧美精品 日韩| 欧美日韩综合在线| 在线视频你懂得一区| 在线综合视频播放| 欧美日本在线视频| 欧美性淫爽ww久久久久无| 91亚洲精品久久久蜜桃| 成人免费高清在线观看| 国产不卡在线视频| 国产成人在线电影| 国产精品亚洲а∨天堂免在线| 国内外成人在线视频| 精品一区二区成人精品| 久久精品国产99国产| 久久爱www久久做| 国产一区二区三区四区在线观看| 蜜臀99久久精品久久久久久软件| 日本一区中文字幕| 奇米色777欧美一区二区| 日本aⅴ免费视频一区二区三区| 日本欧洲一区二区| 国内外精品视频| 成人国产一区二区三区精品| 91色|porny| 欧美浪妇xxxx高跟鞋交| 日韩免费电影一区| 久久青草欧美一区二区三区| 国产偷国产偷精品高清尤物| 国产精品免费丝袜| 樱花草国产18久久久久| 午夜精品一区二区三区三上悠亚 | 国产一区二区三区黄视频 | 午夜视频在线观看一区二区三区 | 亚洲私人黄色宅男| 一区二区三区在线不卡| 婷婷中文字幕综合| 久久国产精品第一页| 国产成人av福利| 91小视频免费看| 欧美精品xxxxbbbb| 欧美videos大乳护士334| 中文字幕精品在线不卡| 一级做a爱片久久| 国产在线视视频有精品| av毛片久久久久**hd| 欧美精品 国产精品| 国产亚洲精品免费| 亚洲亚洲精品在线观看| 日韩avvvv在线播放| 成人午夜在线免费| 欧美精品自拍偷拍动漫精品| 国产日韩欧美制服另类| 亚洲国产裸拍裸体视频在线观看乱了 | 亚洲线精品一区二区三区| 久久国产综合精品| www.亚洲精品| 欧美大片在线观看| 亚洲欧美激情小说另类| 国内外成人在线| 欧美日本免费一区二区三区| 欧美激情综合在线| 视频一区二区欧美| av电影一区二区| 精品久久久久久久一区二区蜜臀| 亚洲日穴在线视频| 国产在线不卡一区| 欧美日韩精品电影| 国产精品婷婷午夜在线观看| 五月天激情综合| 91视频一区二区| 国产视频一区二区三区在线观看| 亚洲va国产va欧美va观看| 成人午夜私人影院| 欧美大片在线观看| 亚洲综合免费观看高清在线观看 | 奇米影视在线99精品| 色又黄又爽网站www久久| 国产午夜亚洲精品理论片色戒| 奇米影视一区二区三区| 欧美午夜电影网| 亚洲欧美日韩电影| 成人动漫视频在线| 欧美精品一区二区蜜臀亚洲| 日产国产高清一区二区三区| 欧美性大战久久久| 自拍偷拍欧美精品| 成人黄色av电影| 中文字幕乱码一区二区免费| 国产精品一区二区三区四区| 日韩精品中文字幕一区二区三区 | 亚洲欧美日韩久久| www.亚洲国产| 爽好久久久欧美精品|