⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 atmsmdbg.h

📁 驱动开发,经过测试可以直接编译后使用,编译使用DDK中的build工具
💻 H
字号:
/*++

Copyright (c) 1990-1998  Microsoft Corporation, All Rights Reserved.

Module Name:

    ATMSMDbg.h

Abstract:

    Debug macros for ATMSMDRV

Author:

    Anil Francis Thomas (10/98)

Environment:

    Kernel

Revision History:

--*/

#ifndef _ATMSMDbg__H
#define _ATMSMDbg__H


#define MEMORY_TAG  'MSDN'

//
// The ID of each source section (Used as the first 28 bits of AtmSmDebugFlag)
//
#define MODULE_INIT         0x00000010

#define MODULE_ADAPTER      0x00000100
#define MODULE_CALLMGR      0x00000200

#define MODULE_WMI          0x00001000
#define MODULE_PACKET       0x00002000

#define MODULE_SEND         0x00010000
#define MODULE_RECV         0x00020000

#define MODULE_MISC         0x00100000
#define MODULE_REQUEST      0x00200000
#define MODULE_IOCTL        0x00400000

#define MODULE_DEBUG        0x10000000



#if DBG

// The value here defines what debug output you wants to see. The value is a 
// combination of DebugLevel and the module IDs
// All messages in the specified modules with urgency lower than 
// specified will be enabled.
extern UINT AtmSmDebugFlag;

//
// Message verbosity: lower values indicate higher urgency. 
// (specified in the last 4 bits of AtmSmDebugFlag)
//
#define ATMSMD_VERY_LOUD        6
#define ATMSMD_IN_OUT           5
#define ATMSMD_LOUD             4
#define ATMSMD_INFO             3
#define ATMSMD_WARN             2
#define ATMSMD_ERR              1
#define ATMSMD_FATAL            0
#define ATMSMD_ALWAYS           0

#define DBG_LVL(DbgFlag) (DbgFlag & 0x0000000F)


#define CheckLockCount(Count) {                                 \
                                                                \
    if ((INT)(Count) < 0) {                                     \
                                                                \
        DbgPrint("Lock Count %d is < 0! File %s, Line %d\n",    \
            Count, __FILE__, __LINE__);                         \
        DbgBreakPoint();                                        \
    }                                                           \
}


#define ATMSMDebugP(Level, Fmt) {                               \
                                                                \
    if((MODULE_ID & AtmSmDebugFlag)                             \
        && (Level <= DBG_LVL(AtmSmDebugFlag))) {                \
                                                                \
        DbgPrint("** AtmSmDrv (0x%X): ",    MODULE_ID );        \
        DbgPrint Fmt;                                           \
    }                                                           \
}


#define DbgVeryLoud(Fmt)    ATMSMDebugP(ATMSMD_VERY_LOUD,  Fmt)
#define DbgInOut(Fmt)       ATMSMDebugP(ATMSMD_IN_OUT,  Fmt)
#define DbgLoud(Fmt)        ATMSMDebugP(ATMSMD_LOUD,  Fmt)
#define DbgInfo(Fmt)        ATMSMDebugP(ATMSMD_INFO,  Fmt)
#define DbgWarn(Fmt)        ATMSMDebugP(ATMSMD_WARN,  Fmt)
#define DbgErr(Fmt)         ATMSMDebugP(ATMSMD_ERR,  Fmt)
#define DbgFatal(Fmt)       ATMSMDebugP(ATMSMD_FATAL, Fmt)
#define DbgAlways(Fmt)      ATMSMDebugP(ATMSMD_ALWAYS, Fmt)

#define TraceIn(x)          DbgInOut(("--> "#x"\n"))
#define TraceOut(x)         DbgInOut(("<-- "#x"\n"))

//
// Memory Allocation/Freeing Auditing:
//

#define INIT_DONE_PATTERN       0x01020102
#define TRAILER_PATTERN         0x0A0B0C0D

//
// The ATMSMD_ALLOCATION structure stores all info about one AtmSmMemAlloc.
//
typedef struct _ATMSMD_ALLOCATION {

        ULONG                       ulSignature;
        struct _ATMSMD_ALLOCATION   *Next;
        struct _ATMSMD_ALLOCATION   *Prev;
        ULONG                       ulModuleNumber;
        ULONG                       ulLineNumber;
        ULONG                       ulSize;
        UINT_PTR                    Location;   // where the returned pointer was put

} ATMSMD_ALLOCATION, *PATMSMD_ALLOCATION;


typedef struct _ATMSMD_ALLOC_GLOBAL {

        PATMSMD_ALLOCATION          pAtmSmHead;
        PATMSMD_ALLOCATION          pAtmSmTail;
        ULONG                       ulAtmSmAllocCount;
        NDIS_SPIN_LOCK              AtmSmMemoryLock;
        ULONG                       ulAtmSmInitDonePattern;

} ATMSMD_ALLOC_GLOBAL, *PATMSMD_ALLOC_GLOBAL;

extern
VOID
AtmSmInitializeAuditMem(
    );

extern
VOID
AtmSmShutdownAuditMem(
    );

extern
PVOID
AtmSmAuditAllocMem (
    PVOID       *ppPointer,
    ULONG       ulSize,
    ULONG       ulModuleNumber,
    ULONG       ulLineNumber
    );

extern
VOID
AtmSmAuditFreeMem(
    PVOID       Pointer
    );

#define ATMSM_INITIALIZE_AUDIT_MEM()    AtmSmInitializeAuditMem()
#define ATMSM_SHUTDOWN_AUDIT_MEM()      AtmSmShutdownAuditMem()

#define AtmSmAllocMem(ppPointer, TYPE, Size) \
            *ppPointer = (TYPE)AtmSmAuditAllocMem((PVOID *)ppPointer, Size, \
                                                    MODULE_ID, __LINE__)

#define AtmSmFreeMem(pPointer)  AtmSmAuditFreeMem((PVOID)pPointer)


VOID
PrintATMAddr(
    IN      char            *pStr,
    IN      PATM_ADDRESS    pAtmAddr
    );

#define DumpATMAddress(Level, Str, Addr) {                      \
                                                                \
        if((MODULE_ID & AtmSmDebugFlag)                         \
            && (Level <= DBG_LVL(AtmSmDebugFlag))) {            \
                                                                \
            PrintATMAddr(Str,Addr);                             \
        }                                                       \
    }


#define ATMSM_GET_ENTRY_IRQL(_Irql) \
            _Irql = KeGetCurrentIrql()
#define ATMSM_CHECK_EXIT_IRQL(_EntryIrql, _ExitIrql) \
        {                                       \
            _ExitIrql = KeGetCurrentIrql();     \
            if (_ExitIrql != _EntryIrql)        \
            {                                   \
                DbgPrint("File %s, Line %d, Exit IRQ %d != Entry IRQ %d\n", \
                        __FILE__, __LINE__, _ExitIrql, _EntryIrql);         \
                DbgBreakPoint();                \
            }                                   \
        }

#else   // DBG

//
// No debug
//
#define ATMSM_INITIALIZE_AUDIT_MEM()

#define ATMSM_SHUTDOWN_AUDIT_MEM()

#define AtmSmAllocMem(ppPointer, TYPE, Size) \
            NdisAllocateMemoryWithTag((PVOID *)ppPointer, (ULONG)Size, \
                                                            (ULONG)MEMORY_TAG)

#define AtmSmFreeMem(pPointer)  NdisFreeMemory((PVOID)(pPointer), 0, 0)


#define CheckLockCount(Count)

#define DbgVeryLoud(Fmt)
#define DbgInOut(Fmt)
#define DbgLoud(Fmt)
#define DbgInfo(Fmt)
#define DbgWarn(Fmt)
#define DbgErr(Fmt)
#define DbgFatal(Fmt)
#define DbgAlways(Fmt)

#define TraceIn(x)
#define TraceOut(x)

#define DumpATMAddress(Level, Str, Addr)

#define ATMSM_GET_ENTRY_IRQL(Irql)
#define ATMSM_CHECK_EXIT_IRQL(EntryIrql, ExitIrql)

#endif  // DBG

#endif // _AtmSmDbg__H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -