亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
777a∨成人精品桃花网| 成人免费黄色大片| 视频一区国产视频| 美女高潮久久久| 国产精品自拍av| 91麻豆精东视频| 欧美视频第二页| 欧美电影免费观看高清完整版| 欧美日韩国产高清一区二区| 欧美电视剧在线观看完整版| 久久人人爽爽爽人久久久| 国产亚洲欧美一区在线观看| 久久久精品免费网站| 一区二区三区在线播放| 久久精品免费看| 91在线国产观看| 精品99一区二区三区| 亚洲青青青在线视频| 久久99久久久久久久久久久| 成人h动漫精品一区二| 欧美一级夜夜爽| 亚洲精品自拍动漫在线| 国产在线精品免费av| 一区二区欧美在线观看| 色偷偷一区二区三区| 午夜免费久久看| 国产激情偷乱视频一区二区三区| 99麻豆久久久国产精品免费| 69p69国产精品| 亚洲男人的天堂在线aⅴ视频| 狠狠色丁香久久婷婷综| 欧美日韩高清一区二区三区| 中文字幕中文乱码欧美一区二区| 日本欧美一区二区三区| 日本精品裸体写真集在线观看| 2023国产精品自拍| 日韩va亚洲va欧美va久久| 欧美日韩一区不卡| 一区二区三区在线观看网站| 成人美女视频在线观看18| 精品国一区二区三区| 久久精品国产精品亚洲综合| 日韩欧美在线1卡| 国产精品18久久久久久vr| 欧美日韩三级在线| 美腿丝袜亚洲三区| www久久久久| 91视频在线观看免费| 综合中文字幕亚洲| 欧美日韩小视频| 极品美女销魂一区二区三区免费| 精品久久久久久久人人人人传媒| 久久av中文字幕片| 亚洲天天做日日做天天谢日日欢 | 粉嫩av一区二区三区| 久久久精品黄色| 日本大香伊一区二区三区| 亚洲一级片在线观看| 精品国内二区三区| 99re成人在线| 日本免费新一区视频| 中文字幕免费不卡在线| 制服丝袜一区二区三区| 成人午夜电影久久影院| 麻豆精品在线观看| 夜夜精品浪潮av一区二区三区| 日韩一区二区三区观看| 91老师片黄在线观看| 九色综合狠狠综合久久| 一区二区三区在线免费| 国产精品人妖ts系列视频| 7777女厕盗摄久久久| 91小视频在线免费看| 国产精品一线二线三线精华| 亚洲主播在线观看| 亚洲欧美日韩国产综合在线| 精品国产91洋老外米糕| 欧美美女一区二区| 在线日韩一区二区| 91在线一区二区| av电影天堂一区二区在线| 精品一区二区三区欧美| 日本午夜精品视频在线观看| 亚洲国产一区视频| 亚洲男女毛片无遮挡| 亚洲乱码精品一二三四区日韩在线 | 国产**成人网毛片九色| 国产精品夜夜嗨| 成人在线视频一区二区| 国产91精品一区二区麻豆网站 | 2020国产精品自拍| 久久久激情视频| 国产日韩欧美高清| 亚洲色图.com| 午夜一区二区三区视频| 天天做天天摸天天爽国产一区| 亚洲成在人线免费| 久久99国产精品免费网站| 国产成人免费视频网站 | 亚洲品质自拍视频网站| 亚洲一区二区三区四区在线免费观看 | 亚洲欧美日韩国产成人精品影院| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 中文字幕一区二区三区在线不卡| 亚洲国产一区二区三区| 蜜臀久久久久久久| 99久久免费精品高清特色大片| 91麻豆精品在线观看| 精品国产一区a| 亚洲乱码国产乱码精品精的特点| 日韩精品视频网| 成人性生交大片| 精品国产亚洲在线| 午夜国产不卡在线观看视频| 麻豆精品一区二区| 欧美午夜精品久久久| 国产欧美一区二区精品性色| 亚洲mv在线观看| 91视频在线看| 亚洲日本一区二区| 成人久久视频在线观看| 精品处破学生在线二十三| 婷婷中文字幕综合| 色一区在线观看| 亚洲欧美日韩在线| 91麻豆免费在线观看| 亚洲女同ⅹxx女同tv| 91在线视频免费91| 中文字幕亚洲一区二区va在线| 国产精品主播直播| 久久免费午夜影院| 国产一区美女在线| 国产精品污网站| 91免费看`日韩一区二区| 亚洲色图第一区| 欧美日韩一区久久| 麻豆高清免费国产一区| 欧美tickle裸体挠脚心vk| 人人精品人人爱| 国产丝袜在线精品| 91美女在线看| 免费观看成人av| 欧美激情在线观看视频免费| 99综合电影在线视频| 亚洲黄网站在线观看| 欧美一二三四区在线| 国产福利一区二区三区视频在线 | 欧美bbbbb| 国产精品成人一区二区三区夜夜夜| 99精品欧美一区二区三区小说| 亚洲第一福利一区| 久久蜜桃一区二区| 日本乱人伦一区| 国产在线精品免费av| 一区二区三区四区激情| 2023国产精华国产精品| 色国产综合视频| 国产真实乱对白精彩久久| 一片黄亚洲嫩模| 久久综合av免费| 日韩欧美专区在线| 欧美性生活久久| 99久久99久久久精品齐齐| 激情综合色综合久久综合| 亚洲欧洲制服丝袜| 国产午夜三级一区二区三| 欧美福利视频一区| 欧美三级三级三级| 日本韩国欧美一区二区三区| 国产aⅴ精品一区二区三区色成熟| 亚洲丝袜自拍清纯另类| 成人激情小说网站| 又紧又大又爽精品一区二区| 91激情在线视频| 成人精品视频网站| 国产a精品视频| 成人午夜视频免费看| 国产成人在线网站| 成人午夜电影久久影院| www.成人在线| 色婷婷久久久久swag精品 | 日韩写真欧美这视频| 欧美日韩国产乱码电影| 在线电影院国产精品| 日韩欧美亚洲一区二区| 精品久久久久99| 国产精品麻豆视频| 樱桃视频在线观看一区| 午夜精品福利一区二区三区av | 91麻豆精品国产综合久久久久久| 欧美日韩极品在线观看一区| 欧美猛男男办公室激情| 日韩欧美二区三区| 国产精品理论在线观看| 国产精品久久久久久一区二区三区| 国产精品入口麻豆九色| 天天综合日日夜夜精品| 国产麻豆成人传媒免费观看| 一道本成人在线| 欧美一区二区三区免费观看视频 |