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

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

?? mp_dbg.c

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

Copyright (c) 1999  Microsoft Corporation

Module Name:
    mp_dbg.c

Abstract:
    This module contains all debug-related code.

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

Notes:

--*/

#include "precomp.h"

#if DBG

/**
Constants
**/

#define _FILENUMBER     'GBED'

// Bytes to appear on each line of dump output.
//
#define DUMP_BytesPerLine 16

ULONG               MPDebugLevel = MP_WARN;
ULONG               MPAllocCount = 0;       // the number of outstanding allocs
NDIS_SPIN_LOCK      MPMemoryLock;           // spinlock for the debug mem list
LIST_ENTRY          MPMemoryList;
BOOLEAN             MPInitDone = FALSE;     // debug mem list init flag 

NDIS_STATUS MPAuditAllocMem(
    PVOID           *pPointer,
    UINT            Size,
    UINT            Flags,
    NDIS_PHYSICAL_ADDRESS HighestAddr,
    ULONG           FileNumber,
    ULONG           LineNumber
    )
{
    NDIS_STATUS     Status;
    PMP_ALLOCATION  pAllocInfo;

    if (!MPInitDone)
    {
        NdisAllocateSpinLock(&MPMemoryLock);
        InitializeListHead(&MPMemoryList);
        MPInitDone = TRUE;
    }

    //
    // Ensure Flags is non-zero, 
    // otherwise NdisAllocateMemoryWithTag should be used
    //
    ASSERT(Flags);                  

    Status = NdisAllocateMemory(
                 (PVOID *)(&pAllocInfo), 
                 (UINT)(Size + sizeof(MP_ALLOCATION)), 
                 Flags,
                 HighestAddr);

    if (pAllocInfo == (PMP_ALLOCATION)NULL)
    {
        DBGPRINT(MP_LOUD,
            ("MPAuditAllocMemCore: file %d, line %d, Size %d failed!\n",
            FileNumber, LineNumber, Size));
        *pPointer = NULL;
    }
    else
    {
        *pPointer = (PVOID)&(pAllocInfo->UserData);
        MP_MEMSET(*pPointer, Size, 0xc);

        pAllocInfo->Signature = 'DOOG';
        pAllocInfo->FileNumber = FileNumber;
        pAllocInfo->LineNumber = LineNumber;
        pAllocInfo->Size = Size;
        pAllocInfo->Location = pPointer;
        pAllocInfo->Flags = Flags;

        NdisAcquireSpinLock(&MPMemoryLock);
        InsertTailList(&MPMemoryList, &pAllocInfo->List);
        MPAllocCount++;
        NdisReleaseSpinLock(&MPMemoryLock);
    }

    DBGPRINT(MP_LOUD,
        ("MPAuditAllocMem: file %c%c%c%c, line %d, %d bytes, [0x"PTR_FORMAT"] <- 0x"PTR_FORMAT"\n",
        (CHAR)(FileNumber & 0xff),
        (CHAR)((FileNumber >> 8) & 0xff),
        (CHAR)((FileNumber >> 16) & 0xff),
        (CHAR)((FileNumber >> 24) & 0xff),
        LineNumber, Size, pPointer, *pPointer));

    return(Status);
}

NDIS_STATUS MPAuditAllocMemTag(
    PVOID *  pPointer,
    UINT     Size,
    ULONG    FileNumber,
    ULONG    LineNumber
    )
{
    NDIS_STATUS     Status;
    PMP_ALLOCATION  pAllocInfo;

    if (!MPInitDone)
    {
        NdisAllocateSpinLock(&MPMemoryLock);
        InitializeListHead(&MPMemoryList);
        MPInitDone = TRUE;
    }

    Status = NdisAllocateMemoryWithTag(
                 (PVOID *)(&pAllocInfo), 
                 (UINT)(Size + sizeof(MP_ALLOCATION)), 
                 NIC_TAG);

    if (pAllocInfo == (PMP_ALLOCATION)NULL)
    {
        *pPointer = NULL;

        DBGPRINT(MP_LOUD,
            ("MPAuditAllocMemCore: file %d, line %d, Size %d failed!\n",
            FileNumber, LineNumber, Size));
    }
    else
    {
        *pPointer = (PVOID)&(pAllocInfo->UserData);
        MP_MEMSET(*pPointer, Size, 0xc);

        pAllocInfo->Signature = 'DOOG';
        pAllocInfo->FileNumber = FileNumber;
        pAllocInfo->LineNumber = LineNumber;
        pAllocInfo->Size = Size;
        pAllocInfo->Location = pPointer;
        pAllocInfo->Flags = 0;

        NdisAcquireSpinLock(&MPMemoryLock);
        InsertTailList(&MPMemoryList, &pAllocInfo->List);
        MPAllocCount++;
        NdisReleaseSpinLock(&MPMemoryLock);
    }

    DBGPRINT(MP_LOUD,
        ("MPAuditAllocMemTag: file %c%c%c%c, line %d, %d bytes, [0x"PTR_FORMAT"] <- 0x"PTR_FORMAT"\n",
        (CHAR)(FileNumber & 0xff),
        (CHAR)((FileNumber >> 8) & 0xff),
        (CHAR)((FileNumber >> 16) & 0xff),
        (CHAR)((FileNumber >> 24) & 0xff),
        LineNumber, Size, pPointer, *pPointer));

    return(Status);
}

VOID MPAuditFreeMem(
    IN PVOID  Pointer, 
    IN UINT   Size,
    IN UINT   Flags
    )
{
    PMP_ALLOCATION  pAllocInfo;

    pAllocInfo = CONTAINING_RECORD(Pointer, MP_ALLOCATION, UserData);

    ASSERT(pAllocInfo->Signature == (ULONG)'DOOG');
    ASSERT(pAllocInfo->Size == Size);
    ASSERT(pAllocInfo->Flags == Flags);

    NdisAcquireSpinLock(&MPMemoryLock);
    pAllocInfo->Signature = (ULONG)'DEAD';
    RemoveEntryList(&pAllocInfo->List);
    MPAllocCount--;
    NdisReleaseSpinLock(&MPMemoryLock);

    NdisFreeMemory(pAllocInfo, Size + sizeof(MP_ALLOCATION), Flags);
}

VOID mpDbgPrintUnicodeString(
    IN  PUNICODE_STRING UnicodeString
    )
{
    UCHAR Buffer[256];

    USHORT i;

    for (i = 0; (i < UnicodeString->Length / 2) && (i < 255); i++) 
    {
        Buffer[i] = (UCHAR)UnicodeString->Buffer[i];
    }

    Buffer[i] = '\0';

    DbgPrint("%s", Buffer);
}



// Hex dump 'cb' bytes starting at 'p' grouping 'ulGroup' bytes together.
// For example, with 'ulGroup' of 1, 2, and 4:
//
// 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
// 0000 0000 0000 0000 0000 0000 0000 0000 |................|
// 00000000 00000000 00000000 00000000 |................|
//
// If 'fAddress' is true, the memory address dumped is prepended to each
// line.
//
VOID
Dump(
    IN CHAR*   p,
    IN ULONG   cb,
    IN BOOLEAN fAddress,
    IN ULONG   ulGroup 
    )
{
    INT cbLine;

    while (cb)
    {

        cbLine = (cb < DUMP_BytesPerLine) ? cb : DUMP_BytesPerLine;
        DumpLine( p, cbLine, fAddress, ulGroup );
        cb -= cbLine;
        p += cbLine;
    }
}


VOID
DumpLine(
    IN CHAR*   p,
    IN ULONG   cb,
    IN BOOLEAN fAddress,
    IN ULONG   ulGroup 
    )
{

    CHAR* pszDigits = "0123456789ABCDEF";
    CHAR szHex[ ((2 + 1) * DUMP_BytesPerLine) + 1 ];
    CHAR* pszHex = szHex;
    CHAR szAscii[ DUMP_BytesPerLine + 1 ];
    CHAR* pszAscii = szAscii;
    ULONG ulGrouped = 0;

    if (fAddress) 
    {
        DbgPrint( "E100: %p: ", p );
    }
    else 
    {
        DbgPrint( "E100: " );
    }

    while (cb)
    {
        *pszHex++ = pszDigits[ ((UCHAR )*p) / 16 ];
        *pszHex++ = pszDigits[ ((UCHAR )*p) % 16 ];

        if (++ulGrouped >= ulGroup)
        {
            *pszHex++ = ' ';
            ulGrouped = 0;
        }

        *pszAscii++ = (*p >= 32 && *p < 128) ? *p : '.';

        ++p;
        --cb;
    }

    *pszHex = '\0';
    *pszAscii = '\0';

    DbgPrint(
        "%-*s|%-*s|\n",
        (2 * DUMP_BytesPerLine) + (DUMP_BytesPerLine / ulGroup), szHex,
        DUMP_BytesPerLine, szAscii );
}



#endif // DBG

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久一区二区三区 | 日本午夜一本久久久综合| 国产精品不卡一区| 国产精品拍天天在线| 国产欧美日韩在线视频| 亚洲国产岛国毛片在线| 国产精品久久久久一区二区三区共 | 国产不卡视频一区| 国产成人免费在线| 99久久精品国产网站| 色欧美88888久久久久久影院| 97精品久久久午夜一区二区三区| 一本高清dvd不卡在线观看| 欧美性xxxxxxxx| 日韩午夜av一区| 国产女主播一区| 亚洲国产视频a| 久久se这里有精品| 97精品视频在线观看自产线路二 | 午夜国产精品一区| 日本午夜精品一区二区三区电影 | 欧美午夜精品久久久| 欧美精品18+| 久久人人爽爽爽人久久久| 亚洲欧洲精品一区二区三区| 亚洲一区二区三区视频在线| 免费久久99精品国产| 成a人片亚洲日本久久| 欧美视频一二三区| 久久品道一品道久久精品| 亚洲日本在线a| 日本亚洲天堂网| 日韩欧美一级精品久久| 欧美sm极限捆绑bd| 一区二区三区成人| 经典三级一区二区| 欧美天堂一区二区三区| 久久久国产午夜精品| 亚洲第一主播视频| 成人av在线电影| 亚洲精品一区在线观看| 亚洲成人免费观看| 成人黄色电影在线| 欧美变态口味重另类| 一区二区三区自拍| 丁香啪啪综合成人亚洲小说 | 久久99久久99精品免视看婷婷| 成人h动漫精品一区二区| 91精品在线麻豆| 一区二区三区四区五区视频在线观看| 美女诱惑一区二区| 精品视频色一区| 亚洲色图欧洲色图| 国产精品一区专区| 日韩区在线观看| 亚洲综合激情另类小说区| 岛国精品在线播放| 久久精品视频在线免费观看| 蜜臀久久99精品久久久久久9 | 91精品欧美综合在线观看最新 | 日韩影院在线观看| 欧美性三三影院| 亚洲激情在线播放| 色天天综合久久久久综合片| 国产婷婷精品av在线| 狠狠色丁香婷综合久久| 欧美电影精品一区二区| 日本最新不卡在线| 欧美一级一区二区| 日韩成人免费电影| 日韩一区二区不卡| 日韩国产欧美在线观看| 欧美精品一二三四| 天天综合天天做天天综合| 欧美理论在线播放| 日韩一区精品视频| 日韩精品影音先锋| 国产一区二区女| 中文字幕国产一区| av亚洲精华国产精华精华| 自拍视频在线观看一区二区| 国产ts人妖一区二区| 欧美韩国一区二区| caoporen国产精品视频| 亚洲视频在线一区| 在线视频欧美区| 日韩精品欧美精品| 精品成人a区在线观看| 国产一区二区三区综合| 国产欧美精品国产国产专区| 99re这里只有精品首页| 一区二区三区不卡视频 | 久久免费电影网| 成人国产精品视频| 亚洲资源中文字幕| 亚洲最新在线观看| 91精品国产麻豆国产自产在线| 久99久精品视频免费观看| 日本一二三不卡| 欧美日韩在线不卡| 国产伦精品一区二区三区免费迷| 国产精品久久久久影院亚瑟| 在线观看91精品国产入口| 欧美96一区二区免费视频| 日本一区二区三区久久久久久久久不 | 欧美一区二区三区免费大片| 国产另类ts人妖一区二区| 亚洲三级久久久| 欧美一区二区三区在线| 国产成人亚洲精品青草天美| 一区二区三区加勒比av| 精品国产精品网麻豆系列| 成人理论电影网| 免费一级片91| 亚洲天堂a在线| 久久综合久久综合久久| 欧美亚洲丝袜传媒另类| 国产乱人伦偷精品视频不卡 | 国产一区二区三区美女| 亚洲欧美日韩国产手机在线| 欧美mv日韩mv| 欧美吻胸吃奶大尺度电影 | 亚洲一二三四在线| 久久综合狠狠综合久久综合88| 成人av在线观| 国产精品99久久久久久有的能看 | 视频一区二区三区入口| 中文字幕一区av| 久久久久综合网| 欧美一区在线视频| 欧美在线一区二区三区| 床上的激情91.| 狠狠久久亚洲欧美| 日本aⅴ亚洲精品中文乱码| 亚洲人成伊人成综合网小说| 精品对白一区国产伦| 欧美一区二区在线免费播放| 日本精品一区二区三区高清| 成人久久18免费网站麻豆| 国产一区二区三区不卡在线观看| 青草av.久久免费一区| 亚洲综合一二区| 亚洲美女少妇撒尿| 亚洲黄一区二区三区| 亚洲欧美一区二区视频| 亚洲国产精品99久久久久久久久| 久久久久久影视| 国产亚洲欧美激情| 久久精品视频一区二区三区| 精品播放一区二区| 国产性色一区二区| 久久久久青草大香线综合精品| 久久婷婷色综合| 国产亚洲精品中文字幕| 国产亚洲精品aa| 亚洲欧美综合网| 亚洲愉拍自拍另类高清精品| 亚洲午夜av在线| 91视频在线看| 在线欧美一区二区| 欧美日韩国产影片| 欧美一级理论片| 久久综合久久综合九色| 国产精品日韩成人| 亚洲精品写真福利| 午夜欧美在线一二页| 免费视频一区二区| 国产·精品毛片| 色悠久久久久综合欧美99| 欧美午夜电影在线播放| 日韩免费性生活视频播放| 久久亚洲综合av| 亚洲男同性恋视频| 日韩激情av在线| 成人性色生活片免费看爆迷你毛片| 91亚洲永久精品| 日韩一卡二卡三卡| 中文字幕av一区二区三区高| 一区二区三区在线高清| 青青草原综合久久大伊人精品| 国产麻豆午夜三级精品| 91免费版在线| 日韩一级视频免费观看在线| 国产精品伦理一区二区| 亚洲成人三级小说| 成人免费毛片高清视频| 欧美日韩一二区| 日本一区二区三级电影在线观看| 亚洲欧美日韩久久精品| 精品午夜久久福利影院 | 欧美日韩一区二区三区在线| 精品久久免费看| 一区二区三区产品免费精品久久75| 另类的小说在线视频另类成人小视频在线 | 国产九九视频一区二区三区| 欧美无乱码久久久免费午夜一区| 久久久久九九视频| 男人操女人的视频在线观看欧美| 99久久国产综合精品麻豆| 精品久久久久久久久久久久久久久久久 |