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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? request.c

?? HomePNA的Usb網(wǎng)卡驅(qū)動(dòng)
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
/*++

Copyright (c) 1999  Microsoft Corporation

Module Name:

    request.c  | usb NDIS Miniport Driver

Abstract:

    Query and Set information handlers

Environment:

    kernel mode only

Notes:

  THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
  KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
  IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
  PURPOSE.

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


Revision History:


--*/
#define BINARY_COMPATIBLE 1 // for win9x compatibility with ndis.h

#define DOBREAKS    // enable debug breaks

#include <ndis.h>
#include <ntddndis.h>  // defines OID's

#include "debug.h"
#include "common.h"
#include "USBNDIS.h"
//
//  These are the OIDs we support 
//


UINT supportedOIDs[] =
{
    //
    // General required OIDs.
    //

    OID_GEN_SUPPORTED_LIST,
    OID_GEN_HARDWARE_STATUS,
    OID_GEN_MEDIA_SUPPORTED,
    OID_GEN_MEDIA_IN_USE,
    OID_GEN_MAXIMUM_LOOKAHEAD,
    OID_GEN_MAXIMUM_FRAME_SIZE,
    OID_GEN_LINK_SPEED,
    OID_GEN_TRANSMIT_BUFFER_SPACE,
    OID_GEN_RECEIVE_BUFFER_SPACE,
    OID_GEN_TRANSMIT_BLOCK_SIZE,
    OID_GEN_RECEIVE_BLOCK_SIZE,
    OID_GEN_VENDOR_ID,
    OID_GEN_VENDOR_DESCRIPTION,
    OID_GEN_CURRENT_PACKET_FILTER,
    OID_GEN_CURRENT_LOOKAHEAD,
    OID_GEN_DRIVER_VERSION,
    OID_GEN_MAXIMUM_TOTAL_SIZE,
    OID_GEN_PROTOCOL_OPTIONS,
    OID_GEN_MAC_OPTIONS,
    OID_GEN_MEDIA_CONNECT_STATUS,
    OID_GEN_MAXIMUM_SEND_PACKETS,
    OID_GEN_VENDOR_DRIVER_VERSION,

    //
    // Required statistical OIDs.
    //

    OID_GEN_XMIT_OK,
    OID_GEN_RCV_OK,
    OID_GEN_XMIT_ERROR,
    OID_GEN_RCV_ERROR,
    OID_GEN_RCV_NO_BUFFER,


    OID_PNP_CAPABILITIES/*,
    OID_PNP_SET_POWER,  
    OID_PNP_QUERY_POWER,
    OID_PNP_ENABLE_WAKE_UP
    OID_PNP_ADD_WAKE_UP_PATTERN        
    OID_PNP_REMOVE_WAKE_UP_PATTERN    
    OID_PNP_WAKE_UP_PATTERN_LIST    
    OID_PNP_WAKE_UP_OK        
    OID_PNP_WAKE_UP_ERROR    */

}; 



//
//    PnP and PM OIDs
//

#define    OID_PNP_CAPABILITIES                    0xFD010100
#define    OID_PNP_SET_POWER                        0xFD010101
#define    OID_PNP_QUERY_POWER                        0xFD010102
#define OID_PNP_ADD_WAKE_UP_PATTERN                0xFD010103
#define OID_PNP_REMOVE_WAKE_UP_PATTERN            0xFD010104
#define    OID_PNP_WAKE_UP_PATTERN_LIST            0xFD010105
#define    OID_PNP_ENABLE_WAKE_UP                    0xFD010106

//
//    PnP/PM Statistics (Optional).
//
#define    OID_PNP_WAKE_UP_OK                        0xFD020200
#define    OID_PNP_WAKE_UP_ERROR                    0xFD020201







/*****************************************************************************
*
*  Function:   MiniportQueryInformation
*
*  Synopsis:   Queries the capabilities and status of the miniport driver.
*
*  Arguments:  MiniportAdapterContext  - miniport context area (PUSB_DEVICE)
*              Oid                     - system defined OID_Xxx
*              InformationBuffer       - where to return Oid specific info
*              InformationBufferLength - specifies size of InformationBuffer
*              BytesWritten            - bytes written to InformationBuffer
*              BytesNeeded             - addition bytes required if
*                                        InformationBufferLength is less than
*                                        what the Oid requires to write
*
*  Returns:    NDIS_STATUS_SUCCESS       - success
*              NDIS_STATUS_PENDING       - will complete asynchronously and
*                                          call NdisMQueryInformationComplete
*              NDIS_STATUS_INVALID_OID   - don't recognize the Oid
*              NDIS_STATUS_INVALID_LENGTH- InformationBufferLength does not
*                                          match length for the Oid
*              NDIS_STATUS_NOT_ACCEPTED  - failure
*              NDIS_STATUS_NOT_SUPPORTED - do not support an optional Oid
*              NDIS_STATUS_RESOURCES     - failed allocation of resources
*
*  Notes:
*       See list of Supported OIDs at the top of this module in the supportedOIDs[] array
*
*
*****************************************************************************/

NDIS_STATUS
MiniportQueryInformation(
            IN  NDIS_HANDLE MiniportAdapterContext,
            IN  NDIS_OID    Oid,
            IN  PVOID       InformationBuffer,
            IN  ULONG       InformationBufferLength,
            OUT PULONG      BytesWritten,
            OUT PULONG      BytesNeeded
            )
{
    PUSB_DEVICE      device;
    NDIS_STATUS     status;
    UINT            speeds;
    UINT            i;
    UINT            infoSizeNeeded;
    UINT            *infoPtr;
    ULONG           OidCategory = Oid & 0xFF000000;
    BOOLEAN            fBusy;

    static char vendorDesc[] = "Usb Infrared Port";

    DEBUGMSG(DBG_FUNC, ("+MiniportQueryInformation\n"));

    device = CONTEXT_TO_DEV(MiniportAdapterContext);

    ASSERT( NULL != device ); 
    ASSERT( NULL != BytesWritten );
    ASSERT( NULL != BytesNeeded );

    status = NDIS_STATUS_SUCCESS;

    NdisGetCurrentSystemTime( &device->LastQueryTime ); //used by check for hang handler
    device->fQuerypending = TRUE;

    //DUMP_STATS_SEC( device, 180 ); // dump statistics every n seconds if debugging

    if ( NULL == InformationBuffer && InformationBufferLength > 0 ) { // Should be impossible but it happened on an MP system!

        DEBUGMSG(DBG_ERR, ("    MiniportQueryInformation() NULL info buffer passed!,InformationBufferLength = dec %d\n",InformationBufferLength));
        status = NDIS_STATUS_NOT_ACCEPTED;
        *BytesNeeded =0;
        *BytesWritten = 0;
        goto done;
 
    }


    //
    // Figure out buffer size needed.
    // Most OIDs just return a single UINT, but there are exceptions.
    //

    switch (Oid)
    {
        case OID_GEN_SUPPORTED_LIST:
            infoSizeNeeded = sizeof(supportedOIDs);

            break;
        case OID_PNP_CAPABILITIES:
            infoSizeNeeded = sizeof(NDIS_PNP_CAPABILITIES);
            break;

        case OID_GEN_DRIVER_VERSION:
            infoSizeNeeded = sizeof(USHORT);

            break;

        case OID_GEN_VENDOR_DESCRIPTION:
            infoSizeNeeded = sizeof(vendorDesc);

            break;

        default:
            infoSizeNeeded = sizeof(UINT);

            break;
    }

    //
    // If the protocol provided a large enough buffer, we can go ahead
    // and complete the query.
    //

    if (InformationBufferLength >= infoSizeNeeded)
    {
        //
        // Set default results.
        //

        *BytesWritten = infoSizeNeeded;
        *BytesNeeded = 0;

        switch (Oid)
        {
            //
            // Generic OIDs.
            //

            case OID_GEN_SUPPORTED_LIST:
                DEBUGONCE(DBG_FUNC, ("    MiniportQueryInformation(OID_GEN_SUPPORTED_LIST)\n"));
/*
                Specifies an array of OIDs for objects that the underlying
                 driver or its device supports. Objects include general, media-specific,
                 and implementation-specific objects.

                The underlying driver should order the OID list it returns 
                in increasing numeric order. NDIS forwards a subset of the returned 
                list to protocols that make this query. That is, NDIS filters
                any supported statistics OIDs out of the list since protocols
                never make statistics queries subsequentlly. 

*/
                NdisMoveMemory(
                            InformationBuffer,
                            (PVOID)supportedOIDs,
                            sizeof(supportedOIDs)
                            );

                break;

            case OID_GEN_HARDWARE_STATUS:
                DEBUGONCE(DBG_FUNC, ("    MiniportQueryInformation(OID_GEN_HARDWARE_STATUS)\n"));

                //
                // If we can be called with a context, then we are
                // initialized and ready.
                //

                *(UINT *)InformationBuffer = NdisHardwareStatusReady;

                break;

            case OID_GEN_MEDIA_SUPPORTED:
                DEBUGONCE(DBG_FUNC, ("    MiniportQueryInformation(OID_GEN_MEDIA_SUPPORTED)\n"));

                *(UINT *)InformationBuffer = NdisMedium802_3;

                break;

            case OID_GEN_MEDIA_IN_USE:
                DEBUGONCE(DBG_FUNC, ("    MiniportQueryInformation(OID_GEN_MEDIA_IN_USE)\n"));

                *(UINT *)InformationBuffer = NdisMedium802_3;

                break;

            case OID_GEN_TRANSMIT_BUFFER_SPACE: 
                DEBUGONCE(DBG_FUNC, ("    MiniportQueryInformation(OID_GEN_TRANSMIT_BUFFER_SPACE)\n"));
/*
                The amount of memory, in bytes, on the device available 
                for buffering transmit data.  

*/
                *(UINT *)InformationBuffer = MAX_PACKET_SIZE+2;

                break;

            case OID_GEN_RECEIVE_BUFFER_SPACE: 
                DEBUGONCE(DBG_FUNC, ("    MiniportQueryInformation(OID_GEN_RECEIVE_BUFFER_SPACE)\n"));
/*
                The amount of memory on the device available 
                for buffering receive data.
*/
                
                *(UINT *)InformationBuffer = MAX_PACKET_SIZE+4;

                break;

            case OID_GEN_TRANSMIT_BLOCK_SIZE: 
                DEBUGONCE(DBG_FUNC, ("    MiniportQueryInformation(OID_GEN_TRANSMIT_BLOCK_SIZE)\n"));
/*

                The minimum number of bytes that a single net packet 
                occupies in the transmit buffer space of the device.
                For example, on some devices the transmit space is 
                divided into 256-byte pieces so such a device's 
                transmit block size would be 256. To calculate 
                the total transmit buffer space on such a device, 
                its driver multiplies the number of transmit 
                buffers on the device by its transmit block size.

                For other devices, the transmit block size is
                identical to its maximum packet size. 

*/
                 *(UINT *)InformationBuffer = MAX_PACKET_SIZE+2;

                break;

            case OID_GEN_RECEIVE_BLOCK_SIZE: 
                DEBUGONCE(DBG_FUNC, ("    MiniportQueryInformation(OID_GEN_RECEIVE_BLOCK_SIZE)\n"));
/*
                The amount of storage, in bytes, that a single packet
                occupies in the receive buffer space of the device

*/
                 *(UINT *)InformationBuffer = MAX_PACKET_SIZE+4;
 
                break;

            case OID_GEN_MAXIMUM_LOOKAHEAD: 
                DEBUGONCE(DBG_FUNC, ("    MiniportQueryInformation(OID_GEN_MAXIMUM_LOOKAHEAD)\n"));
/*
                The maximum number of bytes the device can always provide as lookahead data.
                If the underlying driver supports multipacket receive indications,
                bound protocols are given full net packets on every indication. 
                Consequently, this value is identical to that 
                returned for OID_GEN_RECEIVE_BLOCK_SIZE. 

*/
                 *(UINT *)InformationBuffer = MAX_PACKET_SIZE+4;

                break;

            case OID_GEN_CURRENT_LOOKAHEAD: 
                DEBUGONCE(DBG_FUNC, ("    MiniportQueryInformation(OID_GEN_CURRENT_LOOKAHEAD)\n"));
/*
                The number of bytes of received packet data, 
                excluding the header, that will be indicated 
                to the protocol driver. For a query, 
                NDIS returns the largest lookahead size from 
                among all the bindings. A protocol driver can 
                set a suggested value for the number of bytes 
                to be used in its binding; however, 
                the underlying device driver is never required 
                to limit its indications to the value set. 

                If the underlying driver supports multipacket
                receive indications, bound protocols are given
                full net packets on every indication. Consequently,
                this value is identical to that returned for OID_GEN_RECEIVE_BLOCK_SIZE. 

*/

                 *(UINT *)InformationBuffer =  MAX_PACKET_SIZE+4;

                break;

            case OID_GEN_MAXIMUM_FRAME_SIZE:
                DEBUGMSG(DBG_FUNC, ("    MiniportQueryInformation(OID_GEN_MAXIMUM_FRAME_SIZE)\n"));
/*
                The maximum network packet size in bytes 
                the device supports, not including a header. 
                For a binding emulating another medium type, 
                the device driver must define the maximum frame 

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一卡二卡在线观看| 免费视频一区二区| 99久久精品免费看| 亚洲男同性视频| 91看片淫黄大片一级在线观看| 一区视频在线播放| 在线免费观看日本欧美| 日韩国产成人精品| 精品美女一区二区| 韩日欧美一区二区三区| 亚洲国产精品二十页| 91女厕偷拍女厕偷拍高清| 亚洲成人av一区二区| 欧美v国产在线一区二区三区| 国产呦萝稀缺另类资源| 国产精品久久久久久久第一福利| 在线免费观看视频一区| 久久精品久久精品| 亚洲欧美色图小说| 欧美一区二区三区日韩| www.成人在线| 五月婷婷久久丁香| 国产精品区一区二区三| 51精品国自产在线| 丁香亚洲综合激情啪啪综合| 亚洲亚洲精品在线观看| 久久综合精品国产一区二区三区| www.欧美.com| 久草在线在线精品观看| 国产精品免费网站在线观看| 欧美精选午夜久久久乱码6080| 久久 天天综合| 亚洲码国产岛国毛片在线| 欧美不卡在线视频| 在线精品观看国产| 成人午夜激情在线| 美美哒免费高清在线观看视频一区二区| 美国十次了思思久久精品导航| 久久久久亚洲综合| 精品视频免费在线| 91在线云播放| 精品一区二区精品| 亚洲国产精品自拍| 国产精品成人一区二区三区夜夜夜| 欧美日韩高清一区| 99久久精品国产一区二区三区| 狠狠色狠狠色综合系列| 天天综合天天做天天综合| 国产精品传媒入口麻豆| 久久亚洲一区二区三区明星换脸| 欧美性视频一区二区三区| 国产999精品久久| 精品一区中文字幕| 午夜精品久久久久影视| 亚洲另类在线制服丝袜| 国产欧美一区二区三区在线老狼| 久久精品日韩一区二区三区| 欧美美女bb生活片| 日本韩国一区二区三区| jlzzjlzz亚洲女人18| 国产一区 二区| 老司机免费视频一区二区三区| 亚洲成av人影院| 亚洲精品视频自拍| 亚洲激情在线激情| 亚洲黄色性网站| 中文字幕日韩av资源站| 国产精品三级在线观看| 欧美国产精品一区二区三区| 26uuu欧美| 久久久www成人免费毛片麻豆| 日韩欧美亚洲国产另类| 51午夜精品国产| 日韩一区二区三区在线| 777久久久精品| 欧美日韩免费视频| 欧美日韩亚洲综合一区| 欧美三级乱人伦电影| 欧美二区三区91| 欧美一区二区三区不卡| 欧美一级欧美三级| 久久亚洲精精品中文字幕早川悠里| 精品国产免费一区二区三区香蕉| www日韩大片| 国产女同互慰高潮91漫画| 国产精品免费久久久久| 中文子幕无线码一区tr| 亚洲三级免费观看| 亚洲国产成人av| 久久精品国产99国产| 免费人成精品欧美精品| 韩国av一区二区| 粉嫩av亚洲一区二区图片| 丁香六月综合激情| 91亚洲大成网污www| 欧美综合久久久| 欧美一级日韩免费不卡| 2020国产精品自拍| 综合分类小说区另类春色亚洲小说欧美| 亚洲男人的天堂一区二区| 香蕉成人伊视频在线观看| 激情欧美一区二区三区在线观看| 国产精品一品二品| 在线中文字幕不卡| 欧美一级生活片| 中文字幕不卡一区| 舔着乳尖日韩一区| 国产成人啪午夜精品网站男同| 91在线视频播放地址| 69久久夜色精品国产69蝌蚪网| 精品伦理精品一区| 亚洲精品国产品国语在线app| 日日噜噜夜夜狠狠视频欧美人| 国产主播一区二区三区| 色哟哟一区二区三区| 日韩你懂的电影在线观看| 自拍偷拍亚洲激情| 日本91福利区| 99久久伊人精品| 欧美va亚洲va香蕉在线| 亚洲黄色小说网站| 国产成人亚洲综合a∨婷婷| 欧美日免费三级在线| 久久女同性恋中文字幕| 一区二区三区91| 国产99久久久国产精品免费看 | 国产91精品一区二区麻豆网站| aa级大片欧美| 精品美女被调教视频大全网站| 亚洲麻豆国产自偷在线| 国产在线精品视频| 91.成人天堂一区| 亚洲色图视频网站| 国产精品性做久久久久久| 777奇米四色成人影色区| 国产精品毛片高清在线完整版 | 亚洲男人天堂av网| 国产黄色精品视频| 日韩欧美亚洲另类制服综合在线| 亚洲精品第1页| 不卡的av中国片| 久久综合久久综合久久| 日韩av网站免费在线| 99视频在线精品| 久久久99精品久久| 久久国产三级精品| 91精品国产欧美一区二区成人| 亚洲免费观看高清完整版在线观看 | 7777精品伊人久久久大香线蕉经典版下载 | 亚洲福利视频一区二区| 岛国一区二区三区| 久久看人人爽人人| 狠狠色丁香久久婷婷综合丁香| 欧美猛男男办公室激情| 有坂深雪av一区二区精品| 国产不卡一区视频| 精品欧美一区二区在线观看| 奇米亚洲午夜久久精品| 69堂精品视频| 日韩激情中文字幕| 欧美另类videos死尸| 亚洲mv在线观看| 7777精品伊人久久久大香线蕉 | 国产在线视频一区二区三区| 69成人精品免费视频| 五月天亚洲婷婷| 5566中文字幕一区二区电影| 99久久精品国产麻豆演员表| 综合分类小说区另类春色亚洲小说欧美| 在线看国产一区二区| 96av麻豆蜜桃一区二区| 一区二区三区精品在线观看| 欧美日韩国产首页| 国产一级精品在线| 午夜精品久久久久久久久久 | 懂色av一区二区三区蜜臀| 国产亲近乱来精品视频| 在线视频欧美区| 日韩欧美色综合| 日韩女优电影在线观看| 国内外精品视频| 国产视频一区二区三区在线观看| 国产在线精品一区在线观看麻豆| 久久蜜臀中文字幕| 成人精品一区二区三区四区| 中文字幕永久在线不卡| 色诱视频网站一区| 奇米四色…亚洲| 国产亚洲精品精华液| 99精品国产热久久91蜜凸| 亚洲国产精品久久人人爱蜜臀| 91精品国产入口| 国产v综合v亚洲欧| 一级女性全黄久久生活片免费| 91精品麻豆日日躁夜夜躁| 国产成人亚洲综合色影视 | 国产亚洲欧美激情| 日本福利一区二区| 精品无人码麻豆乱码1区2区 | 视频一区在线视频|