//
//  Define flags and specific dump routines for the UDFR/W structures
//

#include "pch.h"
#include "fatkd.h"
#include "..\..\udfs\nodetype.h"
#include "..\..\udfs\udf.h"
#include "..\..\udfs\udfstruc.h"
#include "..\..\udfs\udfdata.h"

//
//  UDFS R/O In memory structure flag descriptions
//

STATE UdfFcbState[] = {

    {   FCB_STATE_INITIALIZED,      FCB_STATE_INITIALIZED,      "Initialised"},
    {   FCB_STATE_IN_FCB_TABLE,     FCB_STATE_IN_FCB_TABLE,     "InFcbTable"},
    {   FCB_STATE_VMCB_MAPPING,     FCB_STATE_VMCB_MAPPING,     "VMCB"},
    {   FCB_STATE_EMBEDDED_DATA,    FCB_STATE_EMBEDDED_DATA,    "EmbeddedData"},
    {   FCB_STATE_MCB_INITIALIZED,  FCB_STATE_MCB_INITIALIZED,  "McbInit"},
    {   FCB_STATE_ALLOW_ONEGIG_WORKAROUND, FCB_STATE_ALLOW_ONEGIG_WORKAROUND, "OneGigWorkaround"},
    { 0 }
};

STATE UdfIrpContextFlags[] = {

    {   IRP_CONTEXT_FLAG_ON_STACK,          IRP_CONTEXT_FLAG_ON_STACK,          "OnStack"},
    {   IRP_CONTEXT_FLAG_MORE_PROCESSING,   IRP_CONTEXT_FLAG_MORE_PROCESSING,   "MoreProcessing"},
    {   IRP_CONTEXT_FLAG_FORCE_POST,        IRP_CONTEXT_FLAG_FORCE_POST,        "ForcePost"},
    {   IRP_CONTEXT_FLAG_WAIT,              IRP_CONTEXT_FLAG_WAIT,              "Wait"},    
    {   IRP_CONTEXT_FLAG_TOP_LEVEL,         IRP_CONTEXT_FLAG_TOP_LEVEL,         "TopLevel"},
    {   IRP_CONTEXT_FLAG_TOP_LEVEL_UDFS,    IRP_CONTEXT_FLAG_TOP_LEVEL_UDFS,    "TopLevelUdfs"},    
    {   IRP_CONTEXT_FLAG_IN_TEARDOWN,       IRP_CONTEXT_FLAG_IN_TEARDOWN,       "InTeardown"},
    {   IRP_CONTEXT_FLAG_ALLOC_IO,          IRP_CONTEXT_FLAG_ALLOC_IO,          "AllocIo"},
    {   IRP_CONTEXT_FLAG_DISABLE_POPUPS,    IRP_CONTEXT_FLAG_DISABLE_POPUPS,    "DisablePopups"},
    {   IRP_CONTEXT_FLAG_IN_FSP,            IRP_CONTEXT_FLAG_IN_FSP,            "InFsp"},
    {   IRP_CONTEXT_FLAG_FULL_NAME,         IRP_CONTEXT_FLAG_FULL_NAME,         "FullName"},
    {   IRP_CONTEXT_FLAG_TRAIL_BACKSLASH,   IRP_CONTEXT_FLAG_TRAIL_BACKSLASH,   "TrailBackslash"},
    { 0 }
};


STATE UdfVcbStateFlags[] = {

    {   VCB_STATE_REMOVABLE_MEDIA,  VCB_STATE_REMOVABLE_MEDIA,  "Removable"},
    {   VCB_STATE_LOCKED,           VCB_STATE_LOCKED,           "Locked"},
    {   VCB_STATE_NOTIFY_REMOUNT,   VCB_STATE_NOTIFY_REMOUNT,   "NotifyRemount"},
    {   VCB_STATE_METHOD_2_FIXUP,   VCB_STATE_METHOD_2_FIXUP,   "Method2Fixup"},
    { 0 }
};


STATE UdfCcbFlags[] = {

    {   CCB_FLAG_OPEN_BY_ID,                    CCB_FLAG_OPEN_BY_ID,                    "OpenById"},
    {   CCB_FLAG_OPEN_RELATIVE_BY_ID,           CCB_FLAG_OPEN_RELATIVE_BY_ID,           "OpenRelById"},
    {   CCB_FLAG_IGNORE_CASE,                   CCB_FLAG_IGNORE_CASE,                   "IgnoreCase"},
    {   CCB_FLAG_DISMOUNT_ON_CLOSE,             CCB_FLAG_DISMOUNT_ON_CLOSE,             "DismountOnClose"},
    {   CCB_FLAG_ALLOW_EXTENDED_DASD_IO,        CCB_FLAG_ALLOW_EXTENDED_DASD_IO,        "ExtendedDASD"},
    {   CCB_FLAG_ENUM_NAME_EXP_HAS_WILD,        CCB_FLAG_ENUM_NAME_EXP_HAS_WILD,        "EnumNameHasWild"},
    {   CCB_FLAG_ENUM_MATCH_ALL,                CCB_FLAG_ENUM_MATCH_ALL,                "EnumMatchAll"},
    {   CCB_FLAG_ENUM_RETURN_NEXT,              CCB_FLAG_ENUM_RETURN_NEXT,              "EnumReturnNext"},
    {   CCB_FLAG_ENUM_INITIALIZED,              CCB_FLAG_ENUM_INITIALIZED,              "EnumInitialised"},
    {   CCB_FLAG_ENUM_NOMATCH_CONSTANT_ENTRY,   CCB_FLAG_ENUM_NOMATCH_CONSTANT_ENTRY,   "NoMatchConstantEntry"},
    { 0 }
};


STATE UdfLcbFlags[] = {

    {   LCB_FLAG_IGNORE_CASE,       LCB_FLAG_IGNORE_CASE,  "IgnoreCase"},
    {   LCB_FLAG_SHORT_NAME,        LCB_FLAG_SHORT_NAME,   "ShortName"},
    {   LCB_FLAG_POOL_ALLOCATED,    LCB_FLAG_POOL_ALLOCATED, "PoolAllocated"},
    { 0 }
};


STATE UdfPcbFlags[] = {

    {   PCB_FLAG_PHYSICAL_PARTITION,    PCB_FLAG_PHYSICAL_PARTITION,    "Physical"},
    {   PCB_FLAG_VIRTUAL_PARTITION,     PCB_FLAG_VIRTUAL_PARTITION,     "Virtual"},
    {   PCB_FLAG_SPARABLE_PARTITION,    PCB_FLAG_SPARABLE_PARTITION,    "Sparable"},
    { 0 }
};