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

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

?? mp_req.c

?? Intel EtherExpressTM PRO/100+ Ethernet 網卡在Windows2000/xp下的PCI驅動程序源代碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
/*++

Copyright (c) 1999  Microsoft Corporation

Module Name:
    mp_req.c

Abstract:
    This module contains miniport OID related handlers

Revision History:
    Who         When        What
    --------    --------    ----------------------------------------------
    DChen       11-01-99    created

Notes:

--*/

#include "precomp.h"
#include "e100_wmi.h"

#if DBG
#define _FILENUMBER     'QERM'
#endif

#if OFFLOAD

//
// This miniport only supports one Encapsultion type: IEEE_802_3_Encapsulation
// one task version: NDIS_TASK_OFFLOAD_VERSION. Modify the code below OID_TCP_
// TASK_OFFLOAD in query and setting information functions to make it support
// more than one encapsulation type and task version
//
// Define the task offload the miniport currently supports.
// This miniport only supports two kinds of offload tasks:
// TCP/IP checksum offload and Segmentation large TCP packet offload
// Later if it can supports more tasks, just redefine this task array
// 
NDIS_TASK_OFFLOAD OffloadTasks[] = {
    {   
        NDIS_TASK_OFFLOAD_VERSION,
        sizeof(NDIS_TASK_OFFLOAD),
        TcpIpChecksumNdisTask,
        0,
        sizeof(NDIS_TASK_TCP_IP_CHECKSUM)
    },

    {   
        NDIS_TASK_OFFLOAD_VERSION,
        sizeof(NDIS_TASK_OFFLOAD),
        TcpLargeSendNdisTask,
        0,
        sizeof(NDIS_TASK_TCP_LARGE_SEND)
    }
};

//
// Get the number of offload tasks this miniport supports
// 
ULONG OffloadTasksCount = sizeof(OffloadTasks) / sizeof(OffloadTasks[0]);

//
// Specify TCP/IP checksum offload task, the miniport can only supports, for now,
// TCP checksum and IP checksum on the sending side, also it supports TCP and IP 
// options
// 
NDIS_TASK_TCP_IP_CHECKSUM TcpIpChecksumTask = {
    {1, 1, 1, 0, 1},
    {0, 0, 0, 0, 0},
    {0, 0, 0, 0},
    {0, 0, 0, 0}
};
//
// Specify Large Send offload task, the miniport supports TCP options and IP options,
// and the minimum segment count the protocol can offload is 1. At this point, we
// cannot specify the maximum offload size(here is 0), because it depends on the size
// of shared memory and the number of TCB used by the driver.
// 
NDIS_TASK_TCP_LARGE_SEND TcpLargeSendTask = {
    0,      //Currently the version is set to 0, later it may change
    0,
    1,
    TRUE,
    TRUE
};

#endif // OFFLOAD


ULONG VendorDriverVersion = NIC_VENDOR_DRIVER_VERSION;

NDIS_OID NICSupportedOids[] =
{
    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_VENDOR_DRIVER_VERSION,
    OID_GEN_CURRENT_PACKET_FILTER,
    OID_GEN_CURRENT_LOOKAHEAD,
    OID_GEN_DRIVER_VERSION,
    OID_GEN_MAXIMUM_TOTAL_SIZE,
    OID_GEN_MAC_OPTIONS,
    OID_GEN_MEDIA_CONNECT_STATUS,
    OID_GEN_MAXIMUM_SEND_PACKETS,
    OID_GEN_SUPPORTED_GUIDS,
    OID_GEN_XMIT_OK,
    OID_GEN_RCV_OK,
    OID_GEN_XMIT_ERROR,
    OID_GEN_RCV_ERROR,
    OID_GEN_RCV_NO_BUFFER,
    OID_GEN_RCV_CRC_ERROR,
    OID_GEN_TRANSMIT_QUEUE_LENGTH,
    OID_802_3_PERMANENT_ADDRESS,
    OID_802_3_CURRENT_ADDRESS,
    OID_802_3_MULTICAST_LIST,
    OID_802_3_MAXIMUM_LIST_SIZE,
    OID_802_3_RCV_ERROR_ALIGNMENT,
    OID_802_3_XMIT_ONE_COLLISION,
    OID_802_3_XMIT_MORE_COLLISIONS,
    OID_802_3_XMIT_DEFERRED,
    OID_802_3_XMIT_MAX_COLLISIONS,
    OID_802_3_RCV_OVERRUN,
    OID_802_3_XMIT_UNDERRUN,
    OID_802_3_XMIT_HEARTBEAT_FAILURE,
    OID_802_3_XMIT_TIMES_CRS_LOST,
    OID_802_3_XMIT_LATE_COLLISIONS,

#if !BUILD_W2K
    OID_GEN_PHYSICAL_MEDIUM,
#endif

#if OFFLOAD
    OID_TCP_TASK_OFFLOAD,
#endif 
    
/* powermanagement */

    OID_PNP_CAPABILITIES,
    OID_PNP_SET_POWER,
    OID_PNP_QUERY_POWER,
    OID_PNP_ADD_WAKE_UP_PATTERN,
    OID_PNP_REMOVE_WAKE_UP_PATTERN,
    OID_PNP_ENABLE_WAKE_UP,


/* custom oid WMI support */
    OID_CUSTOM_DRIVER_SET,
    OID_CUSTOM_DRIVER_QUERY,
    OID_CUSTOM_ARRAY,
    OID_CUSTOM_STRING
};

//
// WMI support
// check out the e100.mof file for examples of how the below
// maps into a .mof file for external advertisement of GUIDs
//
#define NIC_NUM_CUSTOM_GUIDS    4       
//
// Define the following values to demonstrate that the driver should
// always validat the content in the information buffer whether the OID
// is for set or query
//
#define CUSTOM_DRIVER_SET_MIN   0x1       
#define CUSTOM_DRIVER_SET_MAX   0xFFFFFF       

#if BUILD_W2K

static const NDIS_GUID NICGuidList[NIC_NUM_CUSTOM_GUIDS] = {
    { // {F4A80276-23B7-11d1-9ED9-00A0C9010057} example of a uint set
        E100BExampleSetUINT_OIDGuid,
        OID_CUSTOM_DRIVER_SET,
        sizeof(ULONG),
        (fNDIS_GUID_TO_OID )
    },
    { // {F4A80277-23B7-11d1-9ED9-00A0C9010057} example of a uint query
        E100BExampleQueryUINT_OIDGuid,
            OID_CUSTOM_DRIVER_QUERY,
            sizeof(ULONG),
            (fNDIS_GUID_TO_OID)
    },
    { // {F4A80278-23B7-11d1-9ED9-00A0C9010057} example of an array query
        E100BExampleQueryArrayOIDGuid,
            OID_CUSTOM_ARRAY,
            sizeof(UCHAR),  // size is size of each element in the array
            (fNDIS_GUID_TO_OID|fNDIS_GUID_ARRAY )
    },
    { // {F4A80279-23B7-11d1-9ED9-00A0C9010057} example of a string query
        E100BExampleQueryStringOIDGuid,
            OID_CUSTOM_STRING,
            (ULONG) -1, // size is -1 for ANSI or NDIS_STRING string types
            (fNDIS_GUID_TO_OID|fNDIS_GUID_ANSI_STRING)
    }
};

#else
//
// Support for the fNDIS_GUID_ALLOW_READ flag has been added in WinXP for
// both 5.0 and 5.1 miniports
//
static const NDIS_GUID NICGuidList[NIC_NUM_CUSTOM_GUIDS] = {
    { // {F4A80276-23B7-11d1-9ED9-00A0C9010057} example of a uint set
        E100BExampleSetUINT_OIDGuid,
        OID_CUSTOM_DRIVER_SET,
        sizeof(ULONG),
        // Not setting fNDIS_GUID_ALLOW_WRITE flag means that we don't allow
        // users without administrator privilege to set this value, but we do 
        // allow any user to query this value
        (fNDIS_GUID_TO_OID | fNDIS_GUID_ALLOW_READ)
    },
    { // {F4A80277-23B7-11d1-9ED9-00A0C9010057} example of a uint query
        E100BExampleQueryUINT_OIDGuid,
            OID_CUSTOM_DRIVER_QUERY,
            sizeof(ULONG),
            // setting fNDIS_GUID_ALLOW_READ flag means that we allow any
            // user to query this value.
            (fNDIS_GUID_TO_OID | fNDIS_GUID_ALLOW_READ)
    },
    { // {F4A80278-23B7-11d1-9ED9-00A0C9010057} example of an array query
        E100BExampleQueryArrayOIDGuid,
            OID_CUSTOM_ARRAY,
            sizeof(UCHAR),  // size is size of each element in the array
            // setting fNDIS_GUID_ALLOW_READ flag means that we allow any
            // user to query this value.
            (fNDIS_GUID_TO_OID|fNDIS_GUID_ARRAY | fNDIS_GUID_ALLOW_READ)
    },
    { // {F4A80279-23B7-11d1-9ED9-00A0C9010057} example of a string query
        E100BExampleQueryStringOIDGuid,
            OID_CUSTOM_STRING,
            (ULONG) -1, // size is -1 for ANSI or NDIS_STRING string types
            // setting fNDIS_GUID_ALLOW_READ flag means that we allow any
            // user to query this value.
            (fNDIS_GUID_TO_OID|fNDIS_GUID_ANSI_STRING | fNDIS_GUID_ALLOW_READ)
    }
};
#endif
/**
Local Prototypes
**/
NDIS_STATUS
MPSetPower(
    PMP_ADAPTER               Adapter,
    NDIS_DEVICE_POWER_STATE   PowerState 
    );

VOID
MPFillPoMgmtCaps (
    IN PMP_ADAPTER                  Adapter, 
    IN OUT PNDIS_PNP_CAPABILITIES   pPower_Management_Capabilities, 
    IN OUT PNDIS_STATUS             pStatus,
    IN OUT PULONG                   pulInfoLen
    );

NDIS_STATUS
MPAddWakeUpPattern(
    IN PMP_ADAPTER   pAdapter,
    IN PVOID         InformationBuffer, 
    IN UINT          InformationBufferLength,
    IN OUT PULONG    BytesRead,
    IN OUT PULONG    BytesNeeded    
    );

NDIS_STATUS
MPRemoveWakeUpPattern(
    IN PMP_ADAPTER  pAdapter,
    IN PVOID        InformationBuffer, 
    IN UINT         InformationBufferLength,
    OUT PULONG      BytesRead,
    OUT PULONG      BytesNeeded
    );

BOOLEAN 
MPAreTwoPatternsEqual(
    IN PNDIS_PM_PACKET_PATTERN pNdisPattern1,
    IN PNDIS_PM_PACKET_PATTERN pNdisPattern2
    );


//
// Macros used to walk a doubly linked list. Only macros that are not defined in ndis.h
// The List Next macro will work on Single and Doubly linked list as Flink is a common
// field name in both
//

/*
PLIST_ENTRY
ListNext (
    IN PLIST_ENTRY
    );

PSINGLE_LIST_ENTRY
ListNext (
    IN PSINGLE_LIST_ENTRY
    );
*/
#define ListNext(_pL)                       (_pL)->Flink

/*
PLIST_ENTRY
ListPrev (
    IN LIST_ENTRY *
    );
*/
#define ListPrev(_pL)                       (_pL)->Blink


__inline 
BOOLEAN  
MPIsPoMgmtSupported(
   IN PMP_ADAPTER pAdapter
   )
{

    if (pAdapter->RevsionID  >= E100_82559_A_STEP   && 
         pAdapter->RevsionID <= E100_82559_C_STEP )
    {
        return TRUE;
    }
    else
    {
        return FALSE;
    }
    
}


NDIS_STATUS MPQueryInformation(
    IN  NDIS_HANDLE  MiniportAdapterContext,
    IN  NDIS_OID     Oid,
    IN  PVOID        InformationBuffer,
    IN  ULONG        InformationBufferLength,
    OUT PULONG       BytesWritten,
    OUT PULONG       BytesNeeded
    )
/*++
Routine Description:

    MiniportQueryInformation handler            

Arguments:

    MiniportAdapterContext  Pointer to the adapter structure
    Oid                     Oid for this query
    InformationBuffer       Buffer for information
    InformationBufferLength Size of this buffer
    BytesWritten            Specifies how much info is written
    BytesNeeded             In case the buffer is smaller than what we need, tell them how much is needed
    
Return Value:
    
    NDIS_STATUS_SUCCESS
    NDIS_STATUS_NOT_SUPPORTED
    NDIS_STATUS_BUFFER_TOO_SHORT
    
--*/
{
    NDIS_STATUS                 Status = NDIS_STATUS_SUCCESS;
    PMP_ADAPTER                 Adapter;

    NDIS_HARDWARE_STATUS        HardwareStatus = NdisHardwareStatusReady;
    NDIS_MEDIUM                 Medium = NIC_MEDIA_TYPE;
    UCHAR                       VendorDesc[] = NIC_VENDOR_DESC;
    NDIS_PNP_CAPABILITIES       Power_Management_Capabilities;

    ULONG                       ulInfo = 0;
    ULONG64                     ul64Info = 0;
    
    USHORT                      usInfo = 0;                                              
    PVOID                       pInfo = (PVOID) &ulInfo;
    ULONG                       ulInfoLen = sizeof(ulInfo);
    ULONG                       ulBytesAvailable = ulInfoLen;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久99国内精品| 99国产麻豆精品| 青青草91视频| 国产高清亚洲一区| 99久免费精品视频在线观看| 欧美日韩一区不卡| 欧美一区二区三区视频免费播放| 国产亚洲欧美色| 一区二区三区日韩欧美| 国产一区91精品张津瑜| 日本韩国欧美三级| 欧美一级日韩免费不卡| 日韩女同互慰一区二区| 日韩美女视频一区二区| 久久国产视频网| 91视频国产观看| 日韩精品专区在线影院重磅| 最新国产成人在线观看| 九色综合国产一区二区三区| 9l国产精品久久久久麻豆| www国产成人| 午夜精品久久久久久久| 九九国产精品视频| 成人高清视频在线| 精品国产一区二区国模嫣然| 婷婷丁香久久五月婷婷| 91猫先生在线| 国产欧美日韩在线看| 日韩精品电影在线| 91官网在线观看| 亚洲欧洲日韩av| 国产v综合v亚洲欧| 亚洲精品一区二区三区在线观看| 欧美国产1区2区| 韩国欧美一区二区| 91精品国产综合久久香蕉麻豆| 亚洲人一二三区| 91性感美女视频| 国产日韩亚洲欧美综合| 久久99精品视频| 欧美一区二区日韩一区二区| 天天影视网天天综合色在线播放| 色噜噜狠狠一区二区三区果冻| 欧美激情在线免费观看| 国产·精品毛片| 国产精品视频看| 成人免费va视频| 中文字幕不卡的av| 成人avav影音| 亚洲人成人一区二区在线观看| 成人av午夜电影| 亚洲欧美自拍偷拍色图| 不卡视频一二三| 中文字幕永久在线不卡| 不卡视频免费播放| 国产精品三级久久久久三级| 成人免费高清在线| 综合色天天鬼久久鬼色| 91免费观看在线| 一区二区三区不卡视频在线观看| 色老综合老女人久久久| 亚洲综合精品自拍| 欧美日本国产视频| 日韩成人免费电影| 精品少妇一区二区三区在线播放 | 欧美男生操女生| 午夜视黄欧洲亚洲| 欧美一区二区三区免费视频| 国产精品资源在线看| 精品国产伦一区二区三区免费| 亚洲最新视频在线观看| 欧美男同性恋视频网站| 国产一区二区三区国产| 一区精品在线播放| 色婷婷综合视频在线观看| 亚洲va韩国va欧美va| 日韩视频在线永久播放| 大陆成人av片| 亚洲一区二区影院| 欧美日韩一区二区在线视频| 精品一区二区综合| 国产精品久久久久国产精品日日| 色婷婷av一区二区三区之一色屋| 日韩精品免费视频人成| 国产三级久久久| 91成人看片片| 国产自产v一区二区三区c| 国产精品嫩草影院av蜜臀| 欧美喷潮久久久xxxxx| 国产成人免费在线视频| 亚洲一区二区三区视频在线 | 在线观看视频一区二区欧美日韩| 亚洲成人三级小说| 国产亚洲欧美一级| 欧美日韩国产123区| 国产成人日日夜夜| 日本亚洲欧美天堂免费| 最新热久久免费视频| 久久综合狠狠综合久久激情| 欧美三级中文字幕| 91色婷婷久久久久合中文| 久久99热这里只有精品| 亚洲国产欧美在线| 国产女同性恋一区二区| 欧美精选在线播放| 91蜜桃在线免费视频| 精品一区二区三区免费视频| 日本一区二区三区四区| 精品奇米国产一区二区三区| 在线观看免费一区| av亚洲精华国产精华精| 国产成人综合亚洲91猫咪| 亚洲福利一区二区| 亚洲精品第1页| 国产精品乱码人人做人人爱| 日韩精品最新网址| 日韩一级二级三级| 欧美写真视频网站| 91小视频在线免费看| 成人精品视频.| 国产一区二区三区四| 免费观看在线色综合| 日本大胆欧美人术艺术动态| 亚洲无人区一区| 国产视频视频一区| 久久久噜噜噜久久人人看| 欧美成va人片在线观看| 8x福利精品第一导航| 欧美日韩精品一区二区| 欧美视频一区二| 欧美影片第一页| 欧美丝袜丝交足nylons图片| 99精品久久99久久久久| 久久99国产精品久久| 麻豆精品在线观看| 蜜臀久久久久久久| 久久精品99国产国产精| 日本成人在线视频网站| 麻豆精品视频在线观看免费| 精品一区二区三区视频在线观看| 麻豆专区一区二区三区四区五区| 久久精品免费看| 国产在线精品一区二区夜色 | 日本亚洲欧美天堂免费| 麻豆精品视频在线观看视频| 国内精品久久久久影院色| 亚洲欧美区自拍先锋| 亚洲自拍与偷拍| 国产一区二区0| 欧美视频在线观看一区| 亚洲精品一区二区三区精华液| 亚洲日本va在线观看| 老汉av免费一区二区三区| 91日韩在线专区| 精品国产sm最大网站免费看| 亚洲日本成人在线观看| 精品亚洲porn| 欧美色图激情小说| 中文字幕av资源一区| 日韩国产欧美在线播放| av一区二区三区黑人| 欧美一区午夜视频在线观看| 成人欧美一区二区三区小说| 另类的小说在线视频另类成人小视频在线| av一区二区久久| 久久久综合精品| 奇米色一区二区三区四区| 91无套直看片红桃| 久久天堂av综合合色蜜桃网| 午夜激情一区二区三区| av中文字幕在线不卡| 欧美精品一区二区蜜臀亚洲| 视频一区二区中文字幕| 91丨九色丨国产丨porny| 久久日一线二线三线suv| 日韩和欧美一区二区三区| 在线观看视频欧美| 亚洲男人的天堂一区二区 | 日本vs亚洲vs韩国一区三区| 91在线免费看| 国产偷国产偷精品高清尤物| 久久激情五月婷婷| 91精品国产全国免费观看| 亚洲国产日日夜夜| 在线欧美小视频| 亚洲欧美影音先锋| 成人精品免费网站| 中文av字幕一区| 国产**成人网毛片九色| 久久这里只有精品首页| 六月婷婷色综合| 日韩免费高清视频| 视频在线观看一区二区三区| 色噜噜久久综合| 一区二区三区在线观看动漫| 日本高清不卡视频| 亚洲自拍都市欧美小说| 欧美性一二三区| 亚洲成av人在线观看| 欧美日韩国产三级|