/*++
    Copyright (c) 2000 Microsoft Corporation

    Module Name:
        debug.c

    Abstract: This module contains all the debug functions.

    Environment:
        Kernel mode

    Author:
        Michael Tsang (MikeTs) 20-Nov-2000

    Revision History:
--*/

#include "pch.h"

#ifdef DEBUG

NAMETABLE MajorFnNames[] =
{
    IRP_MJ_CREATE,                      "Create",
    IRP_MJ_CREATE_NAMED_PIPE,           "CreateNamedPipe",
    IRP_MJ_CLOSE,                       "Close",
    IRP_MJ_READ,                        "Read",
    IRP_MJ_WRITE,                       "Write",
    IRP_MJ_QUERY_INFORMATION,           "QueryInfo",
    IRP_MJ_SET_INFORMATION,             "SetInfo",
    IRP_MJ_QUERY_EA,                    "QueryEA",
    IRP_MJ_SET_EA,                      "SetEA",
    IRP_MJ_FLUSH_BUFFERS,               "FlushBuffers",
    IRP_MJ_QUERY_VOLUME_INFORMATION,    "QueryVolInfo",
    IRP_MJ_SET_VOLUME_INFORMATION,      "SetVolInfo",
    IRP_MJ_DIRECTORY_CONTROL,           "DirectoryControl",
    IRP_MJ_FILE_SYSTEM_CONTROL,         "FileSystemControl",
    IRP_MJ_DEVICE_CONTROL,              "DeviceControl",
    IRP_MJ_INTERNAL_DEVICE_CONTROL,     "InternalDevControl",
    IRP_MJ_SHUTDOWN,                    "Shutdown",
    IRP_MJ_LOCK_CONTROL,                "LockControl",
    IRP_MJ_CLEANUP,                     "CleanUp",
    IRP_MJ_CREATE_MAILSLOT,             "CreateMailSlot",
    IRP_MJ_QUERY_SECURITY,              "QuerySecurity",
    IRP_MJ_SET_SECURITY,                "SetSecurity",
    IRP_MJ_POWER,                       "Power",
    IRP_MJ_SYSTEM_CONTROL,              "SystemControl",
    IRP_MJ_DEVICE_CHANGE,               "DeviceChange",
    IRP_MJ_QUERY_QUOTA,                 "QueryQuota",
    IRP_MJ_SET_QUOTA,                   "SetQuota",
    IRP_MJ_PNP,                         "PnP",
    0x00,                               NULL
};

NAMETABLE PnPMinorFnNames[] =
{
    IRP_MN_START_DEVICE,                "StartDevice",
    IRP_MN_QUERY_REMOVE_DEVICE,         "QueryRemoveDevice",
    IRP_MN_REMOVE_DEVICE,               "RemoveDevice",
    IRP_MN_CANCEL_REMOVE_DEVICE,        "CancelRemoveDevice",
    IRP_MN_STOP_DEVICE,                 "StopDevice",
    IRP_MN_QUERY_STOP_DEVICE,           "QueryStopDevice",
    IRP_MN_CANCEL_STOP_DEVICE,          "CancelStopDevice",
    IRP_MN_QUERY_DEVICE_RELATIONS,      "QueryDeviceRelations",
    IRP_MN_QUERY_INTERFACE,             "QueryInterface",
    IRP_MN_QUERY_CAPABILITIES,          "QueryCapabilities",
    IRP_MN_QUERY_RESOURCES,             "QueryResources",
    IRP_MN_QUERY_RESOURCE_REQUIREMENTS, "QueryResRequirements",
    IRP_MN_QUERY_DEVICE_TEXT,           "QueryDeviceText",
    IRP_MN_FILTER_RESOURCE_REQUIREMENTS,"FilterResRequirements",
    IRP_MN_READ_CONFIG,                 "ReadConfig",
    IRP_MN_WRITE_CONFIG,                "WriteConfig",
    IRP_MN_EJECT,                       "Eject",
    IRP_MN_SET_LOCK,                    "SetLock",
    IRP_MN_QUERY_ID,                    "QueryID",
    IRP_MN_QUERY_PNP_DEVICE_STATE,      "QueryPNPDeviceState",
    IRP_MN_QUERY_BUS_INFORMATION,       "QueryBusInfo",
    IRP_MN_DEVICE_USAGE_NOTIFICATION,   "DeviceUsageNotify",
    IRP_MN_SURPRISE_REMOVAL,            "SurpriseRemoval",
    0x18,                               "QueryLegacyBusInfo",
    0x00,                               NULL
};

NAMETABLE PowerMinorFnNames[] =
{
    IRP_MN_WAIT_WAKE,                   "WaitWake",
    IRP_MN_POWER_SEQUENCE,              "PowerSequence",
    IRP_MN_SET_POWER,                   "SetPower",
    IRP_MN_QUERY_POWER,                 "QueryPower",
    0x00,                               NULL
};

NAMETABLE PowerStateNames[] =
{
    PowerDeviceUnspecified,             "Unspecified",
    PowerDeviceD0,                      "D0",
    PowerDeviceD1,                      "D1",
    PowerDeviceD2,                      "D2",
    PowerDeviceD3,                      "D3",
    PowerDeviceMaximum,                 "Maximum",
    0x00,                               NULL
};

NAMETABLE QueryIDTypeNames[] =
{
    BusQueryDeviceID,                   "DeviceID",
    BusQueryHardwareIDs,                "HardwareIDs",
    BusQueryCompatibleIDs,              "CompatibleIDs",
    BusQueryDeviceSerialNumber,         "DeviceSerialNumber",
    0x00,                               NULL
};

NAMETABLE IoctlNames[] =
{
    IOCTL_SMBLITE_GETBRIGHTNESS,        "GetBrightness",
    IOCTL_SMBLITE_SETBRIGHTNESS,        "SetBrightness",
#ifdef SYSACC
    IOCTL_SYSACC_MEM_REQUEST,           "MemRequest",
    IOCTL_SYSACC_IO_REQUEST,            "IORequest",
    IOCTL_SYSACC_PCICFG_REQUEST,        "PCICfgRequest",
    IOCTL_SYSACC_SMBUS_REQUEST,         "SMBusRequest",
#endif
    0x00,                               NULL
};

NAMETABLE ProtocolNames[] =
{
    SMB_WRITE_QUICK,                    "QuickWrite",
    SMB_READ_QUICK,                     "QuickRead",
    SMB_SEND_BYTE,                      "SendByte",
    SMB_RECEIVE_BYTE,                   "ReceiveByte",
    SMB_WRITE_BYTE,                     "WriteByte",
    SMB_READ_BYTE,                      "ReadByte",
    SMB_WRITE_WORD,                     "WriteWord",
    SMB_READ_WORD,                      "ReadWord",
    SMB_WRITE_BLOCK,                    "WriteBlock",
    SMB_READ_BLOCK,                     "ReadBlock",
    SMB_PROCESS_CALL,                   "ProcessAll",
    0x00,                               NULL
};

int giVerboseLevel = 0;

/*++
    @doc    INTERNAL

    @func   PSZ | LookupName |
            Look up name string of a code in the given name table.

    @parm   IN ULONG | Code | The given code to lookup.

    @parm   IN PNAMETABLE | NameTable | The name table to look into.

    @rvalue SUCCESS - Returns pointer to the minor function name string.
    @rvalue FAILURE - Returns "unknown".
--*/

PSZ INTERNAL
LookupName(
    IN ULONG      Code,
    IN PNAMETABLE NameTable
    )
{
    PROCNAME("LookupName")
    PSZ pszName = "unknown";

    ENTER(5, ("(Code=%x,pNameTable=%p)\n", Code, NameTable));

    ASSERT(NameTable != NULL);
    while (NameTable->pszName != NULL)
    {
        if (Code == NameTable->Code)
        {
            pszName = NameTable->pszName;
            break;
        }
        NameTable++;
    }

    EXIT(5, ("=%s\n", pszName));
    return pszName;
}       //LookupName

#endif  //ifdef DEBUG