亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
亚洲乱码精品一二三四区日韩在线| 免费高清视频精品| 日韩精品亚洲一区二区三区免费| 国产精品综合av一区二区国产馆| 91福利精品视频| 久久综合av免费| 亚洲一本大道在线| 97se亚洲国产综合自在线| 欧美一级黄色大片| 亚洲永久免费av| 波多野结衣中文一区| 精品剧情v国产在线观看在线| 一区二区久久久久久| 国产成人h网站| 精品少妇一区二区三区日产乱码 | 国产三级精品视频| 午夜精品久久一牛影视| av电影一区二区| 国产日韩v精品一区二区| 免费成人你懂的| 欧美精品第1页| 亚洲一区二区视频在线观看| www.av亚洲| 国产精品久线观看视频| 国产精品一区二区黑丝| 精品久久久久久久久久久院品网| 五月天国产精品| 欧美怡红院视频| 亚洲小说欧美激情另类| 欧美三级日韩三级| 亚洲成人免费电影| 欧美精品一卡二卡| 奇米综合一区二区三区精品视频 | 成人免费黄色大片| 国产精品人人做人人爽人人添| 国产在线精品免费av| 精品国产乱码久久久久久影片| 九色综合国产一区二区三区| 欧美大片顶级少妇| 国产一本一道久久香蕉| 国产日韩在线不卡| 99精品欧美一区二区三区小说 | 亚洲国产精品久久不卡毛片| 在线视频欧美区| 亚洲综合另类小说| 欧美三片在线视频观看| 日本美女一区二区三区视频| 日韩欧美一二三| 国产伦精品一区二区三区在线观看| 精品国产一区二区亚洲人成毛片| 久久精品72免费观看| 国产日韩欧美激情| 91一区二区三区在线观看| 一区二区三区电影在线播| 欧美精品免费视频| 精品一区二区三区免费视频| 日本一区二区电影| 91成人免费在线| 视频一区视频二区中文字幕| 欧美成人精精品一区二区频| 国产精品系列在线播放| ...中文天堂在线一区| 717成人午夜免费福利电影| 国产精品亚洲一区二区三区妖精| 亚洲婷婷国产精品电影人久久| 精品视频在线看| 国产精品伊人色| 亚洲一区二区精品久久av| 精品国产伦一区二区三区免费| 99久久国产综合精品色伊| 三级欧美在线一区| 国产精品私房写真福利视频| 欧美日韩免费电影| 国产mv日韩mv欧美| 日本免费新一区视频| 亚洲欧洲精品一区二区三区不卡| 欧美高清性hdvideosex| 成人免费看片app下载| 日本中文字幕一区二区有限公司| 中文字幕精品在线不卡| 日韩一区二区三区在线观看| 99综合影院在线| 激情综合色播激情啊| 一区二区久久久| 日本一区二区三区高清不卡| 日韩三级伦理片妻子的秘密按摩| 9色porny自拍视频一区二区| 紧缚奴在线一区二区三区| 亚洲va欧美va天堂v国产综合| 国产精品丝袜在线| 久久综合久久鬼色中文字| 69av一区二区三区| 欧美少妇性性性| 一本久久综合亚洲鲁鲁五月天 | 日韩西西人体444www| 91在线丨porny丨国产| 经典三级视频一区| 欧美aaaaaa午夜精品| 亚洲国产日韩a在线播放| 中文字幕免费不卡| 久久久久久**毛片大全| 日韩欧美专区在线| 7777精品伊人久久久大香线蕉的 | 久久99精品国产.久久久久| 五月天亚洲婷婷| 亚洲一区二区3| 一区二区三区欧美亚洲| 亚洲视频香蕉人妖| 国产精品久久久久久妇女6080| 2023国产精华国产精品| 日韩欧美精品在线视频| 91精品久久久久久久99蜜桃| 欧美日韩午夜在线| 777欧美精品| 日韩一区二区在线免费观看| 91麻豆精品国产91久久久更新时间 | 欧美性生交片4| 一本一道综合狠狠老| 色综合久久久网| 91免费版在线| 91传媒视频在线播放| 欧美午夜电影网| 欧美美女网站色| 欧美一区二区播放| 精品国产麻豆免费人成网站| 久久青草国产手机看片福利盒子 | 精品视频在线免费观看| 欧美日韩久久久一区| 91精品免费在线观看| 精品国产不卡一区二区三区| 久久精品人人做人人综合 | 欧美无人高清视频在线观看| 欧美体内she精高潮| 制服丝袜日韩国产| 欧美xxxxxxxx| 国产精品视频线看| 亚洲一区二区综合| 无码av中文一区二区三区桃花岛| 日本不卡一二三区黄网| 国产黄色精品网站| 色综合天天综合网天天看片| 欧美日韩激情一区二区| 2022国产精品视频| 亚洲精品视频免费看| 日韩成人午夜电影| 成人永久免费视频| 欧美视频中文一区二区三区在线观看| 在线不卡一区二区| 国产欧美精品在线观看| 一区二区三区中文字幕电影| 久久精品国产在热久久| av不卡在线播放| 日韩欧美激情四射| 亚洲丝袜另类动漫二区| 蜜臀精品一区二区三区在线观看 | 亚洲人吸女人奶水| 奇米一区二区三区| 不卡的av网站| 欧美一区二视频| 亚洲欧洲精品一区二区精品久久久| 日日摸夜夜添夜夜添国产精品 | 成人av免费网站| 欧美日韩国产综合一区二区三区| 久久久久综合网| 亚洲成av人影院| 99久久久精品免费观看国产蜜| 欧美一级欧美一级在线播放| 亚洲欧美日韩综合aⅴ视频| 捆绑调教一区二区三区| 在线观看三级视频欧美| 亚洲国产成人一区二区三区| 日本欧美肥老太交大片| 91福利在线免费观看| 国产精品视频在线看| 激情成人综合网| 欧美人体做爰大胆视频| 亚洲色大成网站www久久九九| 国产一区二区调教| 欧美一区二区播放| 亚洲18女电影在线观看| 一本大道久久a久久综合婷婷| 久久久精品黄色| 蜜桃在线一区二区三区| 欧美精品三级日韩久久| 亚洲综合色噜噜狠狠| 9人人澡人人爽人人精品| 国产三级欧美三级| 精品午夜久久福利影院| 欧美大片在线观看| 男女男精品网站| 7799精品视频| 午夜精品福利一区二区蜜股av | 亚洲日本在线观看| 成人av电影免费在线播放| 久久婷婷国产综合精品青草| 日韩制服丝袜先锋影音| 正在播放一区二区| 日韩精品视频网站| 8x8x8国产精品| 日韩电影免费在线观看网站|