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

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

?? intwmi.c

?? C8051F340的USB開發
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*++

Module Name:

    intwmi.c

Abstract:

Environment:

    Kernel mode

Notes:


--*/

#include "intusb.h"
#include "intpwr.h"
#include "intpnp.h"
#include "intdev.h"
#include "intrwr.h"
#include "intwmi.h"
#include "intusr.h"

#define MOFRESOURCENAME L"MofResourceName"

#define WMI_INTUSB_DRIVER_INFORMATION 0

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

WMIGUIDREGINFO IntWmiGuidList[1] = { {

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

NTSTATUS
IntUsb_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 (IntWmiGuidList) / sizeof (WMIGUIDREGINFO);

    DeviceExtension->WmiLibInfo.GuidList           = IntWmiGuidList;
    DeviceExtension->WmiLibInfo.QueryWmiRegInfo    = IntUsb_QueryWmiRegInfo;
    DeviceExtension->WmiLibInfo.QueryWmiDataBlock  = IntUsb_QueryWmiDataBlock;
    DeviceExtension->WmiLibInfo.SetWmiDataBlock    = IntUsb_SetWmiDataBlock;
    DeviceExtension->WmiLibInfo.SetWmiDataItem     = IntUsb_SetWmiDataItem;
    DeviceExtension->WmiLibInfo.ExecuteWmiMethod   = NULL;
    DeviceExtension->WmiLibInfo.WmiFunctionControl = NULL;

    //
    // Register with WMI
    //
    
    ntStatus = IoWMIRegistrationControl(DeviceExtension->FunctionalDeviceObject,
                                        WMIREG_ACTION_REGISTER);

    return ntStatus;
    
}

NTSTATUS
IntUsb_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
IntUsb_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;

    KdPrint( (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;
    }

    KdPrint( ("IntUsb_DispatchSysCtrl::"));
    IntUsb_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;
        }        
    }

    KdPrint( ("IntUsb_DispatchSysCtrl::"));
    IntUsb_IoDecrement(deviceExtension);

    return ntStatus;
}

NTSTATUS
IntUsb_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();

    KdPrint( ("IntUsb_QueryWmiRegInfo - begins\n"));

    deviceExtension = DeviceObject->DeviceExtension;

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

    KdPrint( ("IntUsb_QueryWmiRegInfo - ends\n"));
    
    return STATUS_SUCCESS;
}

NTSTATUS
IntUsb_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.
            
    InstanceCount is the number of instances expected to be returned for
        the data block.
            
    InstanceLengthArray is a pointer to an array of ULONG that returns the 
        lengths of each instance of the data block. If this is NULL then
        there was not enough space in the output buffer to fulfill the request

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一区二区在线免费观看| 国产精品1区2区3区| 欧美高清在线视频| 26uuu另类欧美亚洲曰本| 欧美久久久久久蜜桃| 欧美亚洲一区二区三区四区| 色就色 综合激情| 色婷婷av一区| 欧美日韩免费不卡视频一区二区三区| 94色蜜桃网一区二区三区| 99在线精品一区二区三区| 成人精品国产免费网站| 99久久精品免费观看| 99re热这里只有精品免费视频| av在线一区二区三区| 色综合天天综合网天天狠天天| 91国产福利在线| 91精品国产色综合久久ai换脸| 日韩美女一区二区三区| 精品国产在天天线2019| 亚洲国产精品t66y| 亚洲欧美日韩一区二区| 午夜精品免费在线观看| 免费成人你懂的| 国产精品一级在线| 一本大道久久a久久精二百| 欧美日韩激情一区二区| 精品国产伦一区二区三区免费 | 亚洲一区二区三区中文字幕| 亚洲综合清纯丝袜自拍| 免播放器亚洲一区| 国产成a人无v码亚洲福利| 91免费看`日韩一区二区| 欧美色图天堂网| 精品日韩av一区二区| 亚洲私人影院在线观看| 卡一卡二国产精品| 国模娜娜一区二区三区| 色婷婷综合久久久中文字幕| 91精品黄色片免费大全| 欧美激情自拍偷拍| 日韩不卡在线观看日韩不卡视频| 国产毛片精品一区| 欧美日韩在线播放三区四区| 久久久久久免费毛片精品| 亚洲午夜免费视频| 国产成人综合视频| 欧美福利视频导航| 中文字幕在线观看一区| 精品制服美女丁香| 欧美日韩一本到| 国产精品福利一区| 国产乱人伦精品一区二区在线观看 | 97久久精品人人爽人人爽蜜臀| 欧美精品久久一区| |精品福利一区二区三区| 久久国产福利国产秒拍| 欧美日韩大陆一区二区| 亚洲天堂精品在线观看| 国产剧情在线观看一区二区| 91麻豆精品国产91久久久久久久久 | 国产美女主播视频一区| 欧美日韩你懂得| 亚洲人成网站影音先锋播放| 国产美女娇喘av呻吟久久| 日韩丝袜美女视频| 婷婷开心激情综合| 91黄色免费版| 伊人色综合久久天天人手人婷| 国产成人夜色高潮福利影视| 日韩欧美不卡一区| 日本午夜一区二区| 7777精品伊人久久久大香线蕉最新版| 亚洲精品美腿丝袜| 91麻豆免费视频| 亚洲免费资源在线播放| 97久久人人超碰| 亚洲欧美精品午睡沙发| 91亚洲国产成人精品一区二三| 国产精品久久二区二区| av综合在线播放| 亚洲人成影院在线观看| 色综合中文字幕国产 | 欧美aaa在线| 欧美一级片免费看| 久久成人麻豆午夜电影| 日韩欧美一卡二卡| 国产精品一二三四五| 国产偷国产偷精品高清尤物| 国产成人午夜电影网| 国产精品青草综合久久久久99| 成人动漫在线一区| 一区二区三区精品在线| 欧美亚洲高清一区二区三区不卡| 亚洲一区在线电影| 欧美一区日本一区韩国一区| 久久99日本精品| 国产精品色在线| 欧美在线视频你懂得| 日韩中文欧美在线| 久久久久久黄色| 色综合久久中文字幕综合网| 五月综合激情婷婷六月色窝| 欧美一区二区女人| 成人手机在线视频| 亚洲午夜激情网站| 久久一夜天堂av一区二区三区| 成人国产精品免费观看| 亚洲第一狼人社区| 久久亚洲综合色| 色综合天天天天做夜夜夜夜做| 午夜不卡在线视频| 国产日本欧美一区二区| 欧美在线免费观看视频| 久久精品国产亚洲高清剧情介绍 | 丰满少妇在线播放bd日韩电影| 亚洲欧洲色图综合| 日韩欧美国产高清| 一本色道亚洲精品aⅴ| 精品制服美女丁香| 曰韩精品一区二区| 国产亚洲精品精华液| 在线观看欧美日本| 国产精品88888| 日韩一区精品视频| 亚洲色图丝袜美腿| 国产亚洲精品资源在线26u| 欧美中文字幕一区二区三区| 国产精品资源网| 午夜电影网亚洲视频| 亚洲欧美日韩在线不卡| 久久久国产午夜精品| 337p亚洲精品色噜噜| 玉米视频成人免费看| 欧美成人一区二区三区片免费 | 欧洲亚洲精品在线| 99久久久国产精品| 国产成人综合网| 久久9热精品视频| 图片区小说区区亚洲影院| 一区二区中文字幕在线| 久久久久国色av免费看影院| 日韩欧美一区电影| 欧美一级高清大全免费观看| 欧美四级电影在线观看| 色综合久久综合网| 91在线porny国产在线看| 国产美女在线观看一区| 亚洲午夜激情av| 亚洲自拍另类综合| 亚洲午夜国产一区99re久久| 亚洲欧美区自拍先锋| 亚洲欧美在线另类| 国产精品成人免费精品自在线观看| 久久影院视频免费| 久久久久久久精| 国产欧美一区二区三区鸳鸯浴| 久久久久亚洲蜜桃| 中文字幕免费不卡| 中文文精品字幕一区二区| 精品久久久久久久久久久院品网| 欧美亚洲高清一区| 欧美丝袜丝交足nylons| 欧美色大人视频| 在线播放亚洲一区| 欧美成人vps| 精品国产免费一区二区三区香蕉 | 国产成人精品免费网站| 国产成人8x视频一区二区| 丁香一区二区三区| 色婷婷久久久久swag精品| 欧美综合视频在线观看| 欧美日韩精品免费| 欧美va在线播放| 欧美国产欧美综合| 一区二区三区精品在线| 午夜伦理一区二区| 九色porny丨国产精品| 国产精品亚洲午夜一区二区三区| 成人精品电影在线观看| 色噜噜狠狠成人中文综合| 欧美久久久久中文字幕| 久久综合久久鬼色中文字| 最新国产の精品合集bt伙计| 午夜国产精品影院在线观看| 国内精品伊人久久久久av一坑| 成人理论电影网| 欧美日韩成人综合| 久久精品一区蜜桃臀影院| 亚洲私人影院在线观看| 免费成人你懂的| 一本色道久久加勒比精品| 日韩午夜中文字幕| 国产精品盗摄一区二区三区| 偷拍一区二区三区| 高清不卡一区二区| 日韩一级大片在线观看| 中文字幕欧美一| 国产在线日韩欧美| 欧美专区在线观看一区|