windows-nt/Source/XPSP1/NT/base/fs/utils/untfs/inc/attrcol.hxx

249 lines
4.4 KiB
C++
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*++
Copyright (c) 1991-2000 Microsoft Corporation
Module Name:
attrcol.hxx
Abstract:
This module contains the declarations for the
NTFS_ATTRIBUTE_COLUMNS class, which models
the attribute columns of an attribute definition table
file for an NTFS volume.
Author:
Norbert P. Kusters (norbertk) 19-Aug-91
--*/
#if !defined( NTFS_ATRIBUTE_COLUMNS_DEFN )
#define NTFS_ATRIBUTE_COLUMNS_DEFN
DECLARE_CLASS( NTFS_ATTRIBUTE_COLUMNS );
DECLARE_CLASS( NTFS_ATTRIBUTE );
#include "bigint.hxx"
#include "wstring.hxx"
class NTFS_ATTRIBUTE_COLUMNS : public OBJECT {
public:
DECLARE_CONSTRUCTOR( NTFS_ATTRIBUTE_COLUMNS );
VIRTUAL
~NTFS_ATTRIBUTE_COLUMNS(
);
NONVIRTUAL
BOOLEAN
Initialize(
IN ULONG NumberOfColumns,
IN PCATTRIBUTE_DEFINITION_COLUMNS Columns DEFAULT NULL
);
NONVIRTUAL
BOOLEAN
Read(
IN OUT PNTFS_ATTRIBUTE AttributeDefinitionTableData
);
NONVIRTUAL
BOOLEAN
QueryIndex(
IN ATTRIBUTE_TYPE_CODE AttributeCode,
OUT PULONG Index
) CONST;
NONVIRTUAL
ULONG
QueryFlags(
IN ULONG Index
) CONST;
NONVIRTUAL
BOOLEAN
QueryAttributeName(
IN ULONG Index,
OUT PWSTRING AttributeName
) CONST;
NONVIRTUAL
BIG_INT
QueryMinimumLength(
IN ULONG Index
) CONST;
NONVIRTUAL
BIG_INT
QueryMaximumLength(
IN ULONG Index
) CONST;
NONVIRTUAL
PCATTRIBUTE_DEFINITION_COLUMNS
GetColumns(
OUT PULONG NumColumns
) CONST;
private:
NONVIRTUAL
VOID
Construct(
);
NONVIRTUAL
VOID
Destroy(
);
PATTRIBUTE_DEFINITION_COLUMNS _columns;
ULONG _num_columns;
};
INLINE
ULONG
NTFS_ATTRIBUTE_COLUMNS::QueryFlags(
IN ULONG Index
) CONST
/*++
Routine Description:
This routine returns the flags for the attribute type
with the supplied index.
Arguments:
Index - Supplies the index of the desired attribute type code.
Return Value:
The flags for the attribute type currently in focus.
--*/
{
return _columns[Index].Flags;
}
INLINE
BOOLEAN
NTFS_ATTRIBUTE_COLUMNS::QueryAttributeName(
IN ULONG Index,
OUT PWSTRING AttributeName
) CONST
/*++
Routine Description:
This routine returns the attribute name for the attribute type
with the supplied index.
Arguments:
Index - Supplies the index of the desired attribute type code.
AttributeName - Returns the attribute name.
Return Value:
FALSE - Failure.
TRUE - Success.
--*/
{
return AttributeName->Initialize(_columns[Index].AttributeName);
}
INLINE
BIG_INT
NTFS_ATTRIBUTE_COLUMNS::QueryMinimumLength(
IN ULONG Index
) CONST
/*++
Routine Description:
This routine returns the minimum length for the attribute type
with the supplied index.
Arguments:
Index - Supplies the index of the desired attribute type code.
Return Value:
The minimum length for the attribute type currently in focus.
--*/
{
PLARGE_INTEGER p;
p = (PLARGE_INTEGER)&_columns[Index].MinimumLength;
return *p;
}
INLINE
BIG_INT
NTFS_ATTRIBUTE_COLUMNS::QueryMaximumLength(
IN ULONG Index
) CONST
/*++
Routine Description:
This routine returns the maximum length for the attribute type
with the supplied index.
Arguments:
Index - Supplies the index of the desired attribute type code.
Return Value:
The maximum length for the attribute type currently in focus.
--*/
{
PLARGE_INTEGER p;
p = (PLARGE_INTEGER)&_columns[Index].MaximumLength;
return *p;
}
INLINE
PCATTRIBUTE_DEFINITION_COLUMNS
NTFS_ATTRIBUTE_COLUMNS::GetColumns(
OUT PULONG NumColumns
) CONST
/*++
Routine Description:
This routine returns a pointer to the raw columns data.
Arguments:
NumColumns - Returns the number of columns.
Return Value:
The attribute columns data.
--*/
{
*NumColumns = _num_columns;
return _columns;
}
#endif // NTFS_ATRIBUTE_COLUMNS_DEFN