/*++ 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