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

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

?? intwmi.c

?? This document provides information that supplements the Silicon Labs Interrupt Driver, which includ
?? 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一区二区三区免费野_久草精品视频
欧美日韩国产精选| 99久久99久久精品免费观看| 亚洲日本在线a| 久久久久99精品一区| 欧美一区午夜视频在线观看 | 亚洲综合色自拍一区| 中文字幕亚洲精品在线观看| 国产婷婷色一区二区三区| 26uuu精品一区二区| 精品国产凹凸成av人网站| 91精品国产免费久久综合| 777亚洲妇女| 在线播放一区二区三区| 欧美二区三区91| 欧美一区二区视频观看视频| 337p亚洲精品色噜噜| 欧美一区二区黄| 久久亚洲综合色一区二区三区 | 5566中文字幕一区二区电影| 91精品国产色综合久久ai换脸 | 亚洲va韩国va欧美va| 亚洲成人免费观看| 日韩av成人高清| 国产自产高清不卡| 国产99久久久国产精品免费看| 国产在线不卡一区| 99久久免费视频.com| 91亚洲精品乱码久久久久久蜜桃| thepron国产精品| 色乱码一区二区三区88| 欧美日韩精品系列| 久久嫩草精品久久久久| 国产精品超碰97尤物18| 亚洲福利视频导航| 精彩视频一区二区| gogogo免费视频观看亚洲一| 欧洲精品中文字幕| 欧美xxxx老人做受| 国产精品久久久久婷婷二区次 | 色婷婷av一区二区三区大白胸| 在线观看日韩国产| 精品国产伦一区二区三区免费| 国产欧美一区二区三区在线老狼| 亚洲女女做受ⅹxx高潮| 天堂成人免费av电影一区| 国产成人精品aa毛片| 精品视频在线免费观看| 欧美精品一区二| 亚洲自拍另类综合| 国产精品99久| 欧美一区三区二区| 亚洲免费视频中文字幕| 久久国产剧场电影| 在线视频你懂得一区二区三区| 精品久久久久久久一区二区蜜臀| 一区二区三区精品在线| 极品少妇一区二区| 欧美丝袜丝交足nylons图片| 久久久另类综合| 人人狠狠综合久久亚洲| 91小视频免费看| 国产亚洲欧美在线| 热久久久久久久| 欧日韩精品视频| 国产精品毛片久久久久久久| 免费人成在线不卡| 欧美日韩一区二区三区四区 | 成人精品视频一区二区三区| 欧美一级国产精品| 亚洲h精品动漫在线观看| av午夜一区麻豆| 久久久久久久综合日本| 久久99精品久久久久久久久久久久| 色狠狠色狠狠综合| 自拍偷拍国产精品| 99久久婷婷国产精品综合| 久久久777精品电影网影网 | 精品美女被调教视频大全网站| 亚洲国产精品欧美一二99| a在线欧美一区| 国产精品久久久久婷婷| 国产精品小仙女| 久久午夜免费电影| 国产精品一区专区| 国产色综合久久| 高清成人在线观看| 中文欧美字幕免费| 成人毛片视频在线观看| 国产精品久久久久久久蜜臀| 丁香激情综合国产| 中文字幕亚洲在| 91丨九色porny丨蝌蚪| 亚洲男同性恋视频| 欧美日韩一级二级| 日一区二区三区| 日韩精品一区在线| 国产精品白丝jk黑袜喷水| 中文字幕不卡的av| 91农村精品一区二区在线| 亚洲欧美日韩在线播放| 在线观看视频一区二区| 青青草精品视频| 国产日韩欧美a| av电影在线观看不卡| 亚洲乱码国产乱码精品精98午夜| 一本色道a无线码一区v| 日韩精品视频网站| 26uuu亚洲综合色| 99久久99精品久久久久久| 亚洲一区在线视频观看| 欧美高清一级片在线| 国内外精品视频| 亚洲日本青草视频在线怡红院| 欧美日韩一区三区| 国产在线播放一区| 亚洲人一二三区| 欧美乱妇一区二区三区不卡视频| 美女精品一区二区| 亚洲欧洲av另类| 91精品福利在线一区二区三区| 国产精品18久久久久久vr| 亚洲卡通动漫在线| 欧美精品一区二区三区高清aⅴ| 99久久国产综合色|国产精品| 亚洲一区二区三区在线| 久久精品无码一区二区三区| 一本久久精品一区二区| 狠狠久久亚洲欧美| 亚洲综合一区在线| 久久青草国产手机看片福利盒子 | 国产jizzjizz一区二区| 午夜av区久久| 亚洲欧洲性图库| 精品国产伦一区二区三区免费| 在线观看成人小视频| 国产精品一区二区免费不卡| 午夜欧美2019年伦理| 中文字幕亚洲精品在线观看| 欧美xxxxx牲另类人与| 欧美日韩国产美| 色8久久精品久久久久久蜜| 国产成人av网站| 麻豆91精品视频| 无吗不卡中文字幕| 亚洲色图欧美激情| 欧美高清在线一区| 久久―日本道色综合久久| 欧美一区二区精美| 3d动漫精品啪啪| 欧美日韩一区 二区 三区 久久精品| av中文一区二区三区| 国产成人av福利| 国产91精品一区二区麻豆亚洲| 免费观看30秒视频久久| 午夜精品福利一区二区蜜股av| 亚洲精品免费一二三区| 亚洲欧洲成人av每日更新| 国产精品你懂的在线欣赏| 国产拍欧美日韩视频二区| 久久久久久久久久久久久女国产乱 | 亚洲www啪成人一区二区麻豆 | 色吊一区二区三区| 色综合久久综合网97色综合| www.亚洲色图.com| av不卡免费在线观看| 99久久伊人久久99| 色一情一乱一乱一91av| 日本久久精品电影| 欧美日韩在线亚洲一区蜜芽| 欧美亚洲图片小说| 欧美电影影音先锋| 欧美一区二区三区精品| 精品少妇一区二区| 国产日韩综合av| 国产精品女主播在线观看| 亚洲图片激情小说| 亚洲国产精品久久不卡毛片| 日韩和欧美一区二区三区| 免费一级片91| 国产91精品精华液一区二区三区 | 国产成人av资源| 99久精品国产| 欧美高清一级片在线| 精品久久久影院| 中文字幕一区二区三区在线观看| 依依成人综合视频| 久久精品免费观看| 成人黄色小视频| 欧美揉bbbbb揉bbbbb| 精品日韩欧美在线| 国产日韩欧美不卡在线| 亚洲综合视频网| 国产精品综合视频| 色婷婷综合久久久久中文一区二区| 5566中文字幕一区二区电影| 国产欧美日韩另类视频免费观看| 亚洲自拍偷拍麻豆| 国产成人免费高清| 在线综合+亚洲+欧美中文字幕| 欧美激情一区二区三区不卡|