Leaked source code of windows server 2003
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
/*++
Copyright (c) 1991 Microsoft Corporation
Module Name:
upcase.hxx
Abstract:
This module contains the declarations for the NTFS_UPCASE_TABLE class. This class models the upcase table stored on an NTFS volume, which is used to upcase attribute names and file names resident on that volume.
Author:
Bill McJohn (billmc) 04-March-92
Environment:
ULIB, User Mode
--*/
#if !defined( _NTFS_UPCASE_TABLE_DEFN_ )
#define _NTFS_UPCASE_TABLE_DEFN_
DECLARE_CLASS( NTFS_ATTRIBUTE ); DECLARE_CLASS( NTFS_BITMAP ); DECLARE_CLASS( NTFS_UPCASE_TABLE );
#include "attrib.hxx"
// This function is used to compare two NTFS names. Its definition
// appears in upcase.cxx.
//
LONG UNTFS_EXPORT NtfsUpcaseCompare( IN PCWSTR LeftName, IN ULONG LeftNameLength, IN PCWSTR RightName, IN ULONG RightNameLength, IN PCNTFS_UPCASE_TABLE UpcaseTable, IN BOOLEAN CaseSensitive );
class NTFS_UPCASE_TABLE : public OBJECT {
public:
UNTFS_EXPORT DECLARE_CONSTRUCTOR( NTFS_UPCASE_TABLE );
VIRTUAL UNTFS_EXPORT ~NTFS_UPCASE_TABLE( );
NONVIRTUAL UNTFS_EXPORT BOOLEAN Initialize( IN PNTFS_ATTRIBUTE Attribute );
NONVIRTUAL BOOLEAN Initialize( IN PWCHAR Data, IN ULONG Length );
NONVIRTUAL BOOLEAN Initialize( );
NONVIRTUAL BOOLEAN Verify( ) CONST;
NONVIRTUAL WCHAR UpperCase( IN WCHAR Character ) CONST;
NONVIRTUAL BOOLEAN Write( IN OUT PNTFS_ATTRIBUTE Attribute, IN OUT PNTFS_BITMAP VolumeBitmap OPTIONAL );
NONVIRTUAL PCWCHAR GetUpcaseArray( OUT PULONG Length ) CONST;
STATIC ULONG QueryDefaultLength( );
STATIC ULONG QueryDefaultSize( );
private:
NONVIRTUAL VOID Construct( );
NONVIRTUAL VOID Destroy( );
PWCHAR _Data; ULONG _Length; };
INLINE WCHAR NTFS_UPCASE_TABLE::UpperCase( IN WCHAR Character ) CONST /*++
Routine Description:
This method returns the upper-case value of the supplied character.
Arguments:
Character -- Supplies the character to upcase.
Notes:
If Character is not in the table (ie. is greater or equal to _Length), it upcases to itself.
--*/ { return( (Character < _Length) ? _Data[Character] : Character ); }
INLINE BOOLEAN NTFS_UPCASE_TABLE::Write( IN OUT PNTFS_ATTRIBUTE Attribute, IN OUT PNTFS_BITMAP VolumeBitmap ) /*++
Routine Description:
This method writes the upcase table through the supplied attribute.
Arguments:
Attribute -- Supplies the attribute which has the upcase table as its value. VolumeBitmap -- Supplies the volume bitmap. This parameter may be omitted if the attribute is already the correct size.
Return Value:
TRUE upon successful completion.
--*/ { ULONG BytesInTable, BytesWritten;
BytesInTable = _Length * sizeof( WCHAR );
return( Attribute->Resize( _Length, VolumeBitmap ) && Attribute->Write( _Data, 0, BytesInTable, &BytesWritten, VolumeBitmap ) && BytesWritten == BytesInTable );
}
INLINE PCWCHAR NTFS_UPCASE_TABLE::GetUpcaseArray( OUT PULONG Length ) CONST /*++
Routine Description:
This method returns the in-memory upcase array.
Arguments:
Length - Returns the number of characters in the array.
Return Value:
The in-memory upcase array.
--*/ { *Length = _Length; return _Data; }
INLINE ULONG NTFS_UPCASE_TABLE::QueryDefaultLength( ) /*++
Routine Description:
This method returns the length (in characters) of the default upcase table.
Arguments:
None.
Return Value:
The length (in characters) of the default upcase table.
--*/ { return 0x10000; }
INLINE ULONG NTFS_UPCASE_TABLE::QueryDefaultSize( ) /*++
Routine Description:
This method returns the size of the default upcase table.
Arguments:
None.
Return Value:
The size of the default upcase table.
--*/ { return( QueryDefaultLength() * sizeof( WCHAR ) ); }
#endif
|