/*++ Copyright (c) 1991-2000 Microsoft Corporation Module Name: file.hxx Abstract: This module contains the declaration for the FSN_FILE class. FSN_FILE is derived from the abstract FSNODE class. It offers an interface which supports manipulation of the external (i.e. non data) portion of files. Author: David J. Gilman (davegi) 09-Jan-1991 Environment: ULIB, User Mode --*/ #if ! defined( _FSN_FILE_ ) #define _FSN_FILE_ #include "fsnode.hxx" #include "filestrm.hxx" // // Forward references // DECLARE_CLASS( FSN_FILE ); DECLARE_CLASS( FSN_FILTER ); class FSN_FILE : public FSNODE { friend FSN_FILTER; friend SYSTEM; public: DECLARE_CAST_MEMBER_FUNCTION( FSN_FILE ); NONVIRTUAL ULIB_EXPORT BOOLEAN Copy ( IN OUT PPATH NewFile, OUT PCOPY_ERROR ErrorCode DEFAULT NULL, IN ULONG CopyFlags DEFAULT 0, IN LPPROGRESS_ROUTINE CallBack DEFAULT NULL, IN VOID * Data DEFAULT NULL, IN PBOOL Cancel DEFAULT NULL ) CONST; VIRTUAL BOOLEAN DeleteFromDisk( IN BOOLEAN Force DEFAULT FALSE ); NONVIRTUAL ULONG64 QuerySize ( ) CONST; ULIB_EXPORT PFILE_STREAM QueryStream ( IN STREAMACCESS Access, IN DWORD Attributes DEFAULT 0 ); protected: DECLARE_CONSTRUCTOR( FSN_FILE ); private: }; INLINE ULONG64 FSN_FILE::QuerySize ( ) CONST /*++ Routine Description: Return the size of the file in bytes. Arguments: None. Return Value: ULONG - returns the file size --*/ { ULARGE_INTEGER x; x.LowPart = _FileData.nFileSizeLow; x.HighPart = _FileData.nFileSizeHigh; return x.QuadPart; } #endif // _FSN_FILE_