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

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

?? bulkwmi.c

?? Windows2000/xp下的usb WDM驅動程序源代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
        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
        so the irp should be completed with the buffer needed.        
            
    OutBufferSize has the maximum size available to write the data
        block.

    Buffer on return is filled with the returned data block


Return Value:

    status

--*/
{
    PDEVICE_EXTENSION deviceExtension;
    NTSTATUS          ntStatus;
    ULONG             size;
    WCHAR             modelName[] = L"Aishverya\0\0";
    USHORT            modelNameLen;

    PAGED_CODE();

    BulkUsb_DbgPrint(3, ("BulkUsb_QueryWmiDataBlock - begins\n"));

    size = 0;
    modelNameLen = (wcslen(modelName) + 1) * sizeof(WCHAR);

    //
    // Only ever registers 1 instance per guid
    //

    ASSERT((InstanceIndex == 0) &&
           (InstanceCount == 1));
    
    deviceExtension = (PDEVICE_EXTENSION) DeviceObject->DeviceExtension;

    switch (GuidIndex) {

    case WMI_BULKUSB_DRIVER_INFORMATION:

        size = sizeof(ULONG) + modelNameLen + sizeof(USHORT);

        if (OutBufferSize < size ) {

            BulkUsb_DbgPrint(3, ("OutBuffer too small\n"));

            ntStatus = STATUS_BUFFER_TOO_SMALL;

            break;
        }

        * (PULONG) Buffer = DebugLevel;

        Buffer += sizeof(ULONG);

        //
        // put length of string ahead of string
        //

        *((PUSHORT)Buffer) = modelNameLen;

        Buffer = (PUCHAR)Buffer + sizeof(USHORT);

        RtlCopyBytes((PVOID)Buffer, (PVOID)modelName, modelNameLen);

        *InstanceLengthArray = size ;

        ntStatus = STATUS_SUCCESS;

        break;

    default:

        ntStatus = STATUS_WMI_GUID_NOT_FOUND;
    }

    ntStatus = WmiCompleteRequest(DeviceObject,
                                Irp,
                                ntStatus,
                                size,
                                IO_NO_INCREMENT);

    BulkUsb_DbgPrint(3, ("BulkUsb_QueryWmiDataBlock - ends\n"));

    return ntStatus;
}


NTSTATUS
BulkUsb_SetWmiDataItem(
    IN PDEVICE_OBJECT DeviceObject,
    IN PIRP           Irp,
    IN ULONG          GuidIndex,
    IN ULONG          InstanceIndex,
    IN ULONG          DataItemId,
    IN ULONG          BufferSize,
    IN PUCHAR         Buffer
    )
/*++

Routine Description:

    This routine is a callback into the driver to set 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.
            
    DataItemId has the id of the data item being set

    BufferSize has the size of the data item passed

    Buffer has the new values for the data item


Return Value:

    status

--*/
{
    PDEVICE_EXTENSION deviceExtension;
    NTSTATUS          ntStatus;
    ULONG             info;
    
    PAGED_CODE();

    BulkUsb_DbgPrint(3, ("BulkUsb_SetWmiDataItem - begins\n"));

    deviceExtension = (PDEVICE_EXTENSION) DeviceObject->DeviceExtension;
    info = 0;

    switch(GuidIndex) {
    
    case WMI_BULKUSB_DRIVER_INFORMATION:

        if(DataItemId == 1) {

            if(BufferSize == sizeof(ULONG)) {

                DebugLevel = *((PULONG)Buffer);

                ntStatus = STATUS_SUCCESS;

                info = sizeof(ULONG);
            }
            else {

                ntStatus = STATUS_INFO_LENGTH_MISMATCH;
            }
        }
        else {

            ntStatus = STATUS_WMI_READ_ONLY;
        }

        break;

    default:

        ntStatus = STATUS_WMI_GUID_NOT_FOUND;
    }

    ntStatus = WmiCompleteRequest(DeviceObject,
                                Irp,
                                ntStatus,
                                info,
                                IO_NO_INCREMENT);

    BulkUsb_DbgPrint(3, ("BulkUsb_SetWmiDataItem - ends\n"));

    return ntStatus;
}

NTSTATUS
BulkUsb_SetWmiDataBlock(
    IN PDEVICE_OBJECT DeviceObject,
    IN PIRP           Irp,
    IN ULONG          GuidIndex,
    IN ULONG          InstanceIndex,
    IN ULONG          BufferSize,
    IN PUCHAR         Buffer
    )
/*++

Routine Description:

    This routine is a callback into the driver to set 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.
            
    BufferSize has the size of the data block passed

    Buffer has the new values for the data block


Return Value:

    status

--*/
{
    PDEVICE_EXTENSION deviceExtension;
    NTSTATUS          ntStatus;
    ULONG             info;

    PAGED_CODE();

    deviceExtension = (PDEVICE_EXTENSION) DeviceObject->DeviceExtension;
    info = 0;

    BulkUsb_DbgPrint(3, ("BulkUsb_SetWmiDataBlock - begins\n"));

    switch(GuidIndex) {
    
    case WMI_BULKUSB_DRIVER_INFORMATION:

        if(BufferSize == sizeof(ULONG)) {

            DebugLevel = *(PULONG) Buffer;
                    
            ntStatus = STATUS_SUCCESS;

            info = sizeof(ULONG);
        }
        else {

            ntStatus = STATUS_INFO_LENGTH_MISMATCH;
        }

        break;

    default:

        ntStatus = STATUS_WMI_GUID_NOT_FOUND;
    }

    ntStatus = WmiCompleteRequest(DeviceObject,
                                Irp,
                                ntStatus,
                                info,
                                IO_NO_INCREMENT);

    BulkUsb_DbgPrint(3, ("BulkUsb_SetWmiDataBlock - ends\n"));

    return ntStatus;
}

PCHAR
WMIMinorFunctionString (
    UCHAR MinorFunction
    )
/*++
 
Routine Description:

Arguments:

Return Value:

--*/
{
    switch (MinorFunction) {

        case IRP_MN_CHANGE_SINGLE_INSTANCE:
            return "IRP_MN_CHANGE_SINGLE_INSTANCE\n";

        case IRP_MN_CHANGE_SINGLE_ITEM:
            return "IRP_MN_CHANGE_SINGLE_ITEM\n";

        case IRP_MN_DISABLE_COLLECTION:
            return "IRP_MN_DISABLE_COLLECTION\n";

        case IRP_MN_DISABLE_EVENTS:
            return "IRP_MN_DISABLE_EVENTS\n";

        case IRP_MN_ENABLE_COLLECTION:
            return "IRP_MN_ENABLE_COLLECTION\n";

        case IRP_MN_ENABLE_EVENTS:
            return "IRP_MN_ENABLE_EVENTS\n";

        case IRP_MN_EXECUTE_METHOD:
            return "IRP_MN_EXECUTE_METHOD\n";

        case IRP_MN_QUERY_ALL_DATA:
            return "IRP_MN_QUERY_ALL_DATA\n";

        case IRP_MN_QUERY_SINGLE_INSTANCE:
            return "IRP_MN_QUERY_SINGLE_INSTANCE\n";

        case IRP_MN_REGINFO:
            return "IRP_MN_REGINFO\n";

        default:
            return "IRP_MN_?????\n";
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩一区二区三区高清| 色婷婷精品久久二区二区蜜臂av| 国产精品久久久久久久久免费桃花| 欧美三区在线观看| 国产一区二区在线观看免费 | 亚洲国产成人午夜在线一区| 欧美三级日韩三级| 成人激情黄色小说| 另类小说视频一区二区| 一区二区三区四区av| 久久综合色鬼综合色| 欧美丰满美乳xxx高潮www| 不卡av在线免费观看| 国模娜娜一区二区三区| 三级成人在线视频| 一区二区三区 在线观看视频| 久久精品视频在线看| 91精品国产综合久久久久久漫画| 色综合夜色一区| 国产成人精品午夜视频免费| 麻豆成人av在线| 亚洲va天堂va国产va久| 亚洲欧美成aⅴ人在线观看| 亚洲国产精品二十页| 久久欧美中文字幕| 精品国产一区a| 91麻豆精品国产91久久久 | 蜜臀91精品一区二区三区| 亚洲在线中文字幕| 一区二区三区不卡视频在线观看| 亚洲国产成人一区二区三区| 国产色综合久久| 久久久国产精品麻豆| 亚洲精品一区二区在线观看| 欧美电视剧免费全集观看| 制服丝袜亚洲精品中文字幕| 欧美男人的天堂一二区| 欧美日韩在线一区二区| 欧美日韩中文字幕一区| 欧美日韩一区二区三区在线看| 在线看国产一区二区| 91久久国产最好的精华液| 91精品1区2区| 欧美午夜精品一区| 欧美视频一区二区| 欧美精品久久一区二区三区| 欧美精品少妇一区二区三区| 欧美高清www午色夜在线视频| 欧美夫妻性生活| 欧美大胆一级视频| 亚洲精品在线免费播放| 国产欧美日韩在线| 亚洲欧洲韩国日本视频| 亚洲免费看黄网站| 午夜国产不卡在线观看视频| 日本成人中文字幕| 狠狠色狠狠色合久久伊人| 国产在线视视频有精品| 国产精一品亚洲二区在线视频| 国产a级毛片一区| 成人av先锋影音| 欧洲精品中文字幕| 91精品国产91久久久久久一区二区| 91精品欧美一区二区三区综合在| 欧美一级日韩一级| 国产目拍亚洲精品99久久精品| 中文字幕一区二区三区色视频| 亚洲激情中文1区| 免费看欧美女人艹b| 国产一区91精品张津瑜| 91麻豆精东视频| 欧美精品少妇一区二区三区| 久久精品欧美一区二区三区不卡| 自拍偷拍亚洲综合| 日韩中文字幕1| 国产成人在线免费| 欧美在线不卡视频| 日韩欧美一区二区久久婷婷| 国产精品免费久久久久| 亚洲成人av在线电影| 国产一区二区三区四区五区美女| 99视频热这里只有精品免费| 欧美日韩精品福利| 国产农村妇女毛片精品久久麻豆 | 91精品国产综合久久久久久久久久| 久久久99久久精品欧美| 亚洲精品美国一| 国内精品国产三级国产a久久| 91在线视频播放地址| 日韩欧美在线综合网| 中文字幕一区二| 另类中文字幕网| 日本高清免费不卡视频| 久久九九影视网| 亚洲成人av电影在线| 国产福利一区二区三区视频在线| 欧美亚洲一区二区三区四区| 国产欧美日韩在线视频| 青青草原综合久久大伊人精品| 99这里只有精品| 欧美精品一区二区三区蜜桃视频 | 日韩欧美在线网站| 亚洲精品乱码久久久久久日本蜜臀| 国产suv精品一区二区三区| 日本高清成人免费播放| 久久综合久久综合久久综合| 亚洲国产乱码最新视频| heyzo一本久久综合| 精品久久久久久最新网址| 亚洲国产日韩一级| 91浏览器在线视频| 国产三级三级三级精品8ⅰ区| 婷婷丁香激情综合| 欧美在线观看视频在线| 亚洲欧洲成人自拍| 成人综合婷婷国产精品久久 | 亚洲乱码中文字幕| 粉嫩aⅴ一区二区三区四区五区| 日韩免费电影网站| 日韩黄色在线观看| 欧美日韩大陆一区二区| 亚洲激情在线播放| 91小视频在线免费看| 国产精品美女久久久久久久久| 韩国视频一区二区| 精品乱人伦一区二区三区| 五月天国产精品| 欧美日韩国产欧美日美国产精品| 一区二区三区91| 欧美在线视频日韩| 亚洲韩国精品一区| 欧美视频三区在线播放| 亚洲制服丝袜一区| 欧美偷拍一区二区| 性感美女久久精品| 欧美群妇大交群的观看方式| 亚洲国产综合人成综合网站| 欧美性大战久久久| 天堂av在线一区| 91精品国产欧美日韩| 美女诱惑一区二区| 精品国免费一区二区三区| 精一区二区三区| 国产午夜一区二区三区| 国产99久久久精品| 自拍偷拍亚洲综合| 91久久线看在观草草青青| 亚洲在线视频一区| 6080日韩午夜伦伦午夜伦| 蜜桃视频在线一区| 国产欧美精品在线观看| 成人理论电影网| 一区二区日韩av| 日韩一区二区中文字幕| 国产在线精品一区二区| 中文子幕无线码一区tr| 色香蕉成人二区免费| 亚洲123区在线观看| 欧美成人a∨高清免费观看| 国产高清一区日本| 亚洲欧美一区二区三区国产精品 | 日韩成人dvd| 久久一区二区视频| 99re热这里只有精品免费视频| 亚洲欧美激情一区二区| 欧美三电影在线| 精品亚洲免费视频| 国产精品久久久久久久岛一牛影视 | 中文字幕日本乱码精品影院| 一本到一区二区三区| 日韩高清在线电影| 国产欧美精品一区aⅴ影院 | 欧美精品一级二级三级| 韩国视频一区二区| 亚洲欧美福利一区二区| 日韩三级在线观看| 94-欧美-setu| 日韩精品成人一区二区三区| 欧美精品一区二区三区四区 | 国产欧美一区二区三区在线看蜜臀| 成人动漫视频在线| 日韩精品三区四区| 国产精品系列在线| 3d动漫精品啪啪一区二区竹菊 | 欧美日韩国产综合视频在线观看| 麻豆高清免费国产一区| 亚洲视频一二三区| 2023国产精品| 欧美日韩视频一区二区| 国产91精品精华液一区二区三区 | 久久久久久久久97黄色工厂| 色猫猫国产区一区二在线视频| 麻豆国产一区二区| 伊人夜夜躁av伊人久久| 国产性色一区二区| 日韩一区二区三区视频| 色婷婷精品久久二区二区蜜臂av| 国产一区二区免费看| 亚洲第一会所有码转帖| 欧美韩国日本一区|