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

📄 mem.h

📁 WinCE 3.0 BSP, 包含Inter SA1110, Intel_815E, Advantech_PCM9574 等
💻 H
字号:
/*++
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) 1995-1998  Microsoft Corporation

Module Name:

    mem.h

Abstract:

    This file contains memory allocation functions and debug memory tracking
    functions.  This is provided as a sample to platform writers and is
    expected to be able to be used without modification on most (if not
    all) hardware platforms.

Functions:


Notes:


--*/

#ifndef _MEM_H_
#define _MEM_H_

#ifdef MEMTRACKING

//
// Memory tracking ids for different objects.
//

#define MT_NOT_SPECIFIED        0x00000000
#define MT_IR_DEVICE            0x00010000
#define MT_IR_DEVICE_SEND       0x00010001
#define MT_IR_DEVICE_RECV       0x00010002
#define MT_NDIS                 0x00020000
#define MT_NDIS_PACKET_POOL     0x00020001
#define MT_NDIS_BUFFER_POOL     0x00020002
#define MT_NDIS_PACKET          0x00020004
#define MT_NDIS_BUFFER          0x00020008
#define MT_NDIS_SPINLOCK        0x00020010

// Variable initialized in DllEntry.
extern DWORD Irsir_MemTypeId;

// Callback for mem tracking.
__inline VOID
Irsir_TrackerCallback(
    DWORD  dwFlags,
    DWORD  dwMemTypeId,
    HANDLE hItem,
    DWORD  Proc,
    BOOL   fDeleted,
    DWORD  dwSize,
    DWORD  dw1,
    DWORD  dw2
    )
{
    RETAILMSG(1, (TEXT("%08lx:%08lx"), dw1, dw2));

    if (fDeleted == TRUE)
    {
        RETAILMSG(1, (TEXT("Freed.\r\n")));
    }
    else
    {
        RETAILMSG(1, (TEXT("\r\n")));
    }
    return;
}

__inline void *
IrsirTrackedAlloc(
    DWORD dwId,
    size_t stAllocateBlock
    )
{
    void *ptr;

    ptr = LocalAlloc(LPTR, stAllocateBlock);

    if (ptr != NULL)
    {
        AddTrackedItem(
            Irsir_MemTypeId,
            ptr,
            Irsir_TrackerCallback,
            GetCurrentProcessId(),
            stAllocateBlock,
            HIWORD(dwId),
            LOWORD(dwId)
            );
    }
    return (ptr);
}

__inline void *
IrsirTrackedFree(
    void *ptr
    )
{
    void *ptrTemp;

    ptrTemp = LocalFree(ptr);

    if (ptrTemp == NULL)
    {
        DeleteTrackedItem(
            Irsir_MemTypeId,
            ptr
            );
    }

    return (ptrTemp);
}

__inline void
IrsirAddTrackedItem(
    DWORD dwId,
    LPVOID lpPtr,
    size_t cbPtr
    )
{
    AddTrackedItem(
        Irsir_MemTypeId,
        lpPtr,
        Irsir_TrackerCallback,
        GetCurrentProcessId(),
        cbPtr,
        HIWORD(dwId),
        LOWORD(dwId)
        );
}

__inline void
IrsirDelTrackedItem(
    LPVOID lpPtr
    )
{
    DeleteTrackedItem(Irsir_MemTypeId, lpPtr);
}

#define IrsirAlloc(_dwId, _size) IrsirTrackedAlloc(_dwId, _size)
#define IrsirFree(_ptr)          IrsirTrackedFree(_ptr)

#else // MEMTRACKING

#define IrsirAlloc(_dwId, _size) LocalAlloc(LPTR, _size)
#define IrsirFree(_ptr)          LocalFree(_ptr)

#define IrsirAddTrackedItem(_dwId, _ptr, _size) (0)
#define IrsirDelTrackedItem(_ptr)               (0)

#endif // !MEMTRACKING

#endif // _MEM_H_

⌨️ 快捷键说明

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