Windows NT 4.0 source code leak
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.
 
 
 
 
 
 

253 lines
3.9 KiB

/*++
Copyright (c) 1991 Microsoft Corporation
Module Name:
system.hxx
Abstract:
This module contains the definition for the SYSTEM class. The SYSTEM
class is an abstract class which offers an interface for communicating
with the underlying operating system.
Author:
David J. Gilman (davegi) 13-Jan-1991
Environment:
ULIB, User Mode
Notes:
--*/
#if ! defined( _SYSTEM_ )
#define _SYSTEM_
DECLARE_CLASS( FSN_DIRECTORY );
DECLARE_CLASS( FSN_FILE );
DECLARE_CLASS( FSNODE );
DECLARE_CLASS( WSTRING );
DECLARE_CLASS( STREAM );
DECLARE_CLASS( TIMEINFO );
#include "message.hxx"
#include "path.hxx"
#include "basesys.hxx"
extern "C" {
#include <stdarg.h>
}
enum DRIVE_TYPE {
UnknownDrive,
RemovableDrive,
FixedDrive,
RemoteDrive,
CdRomDrive,
RamDiskDrive
};
enum FILE_TYPE {
UnknownFile,
DiskFile,
CharFile,
PipeFile
};
struct _VOL_SERIAL_NUMBER {
ULONG HighOrder32Bits;
ULONG LowOrder32Bits;
};
DEFINE_TYPE( struct _VOL_SERIAL_NUMBER, VOL_SERIAL_NUMBER );
class SYSTEM : public BASE_SYSTEM {
friend
BOOLEAN
InitializeUlib(
IN HANDLE DllHandle,
IN ULONG Reason,
IN PVOID Reserved
);
public:
STATIC
ULIB_EXPORT
PFSN_DIRECTORY
MakeDirectory (
IN PCPATH Path,
IN PCPATH TemplatePath OPTIONAL
);
STATIC
ULIB_EXPORT
PFSN_FILE
MakeFile (
IN PCPATH Path
);
STATIC
ULIB_EXPORT
PFSN_FILE
MakeTemporaryFile (
IN PCWSTRING PrefixString,
IN PCPATH Path DEFAULT NULL
);
STATIC
ULIB_EXPORT
BOOLEAN
RemoveNode (
IN PFSNODE *PointerToNode,
IN BOOLEAN Force DEFAULT FALSE
);
STATIC
ULIB_EXPORT
BOOLEAN
IsCorrectVersion (
);
STATIC
PPATH
QueryCurrentPath (
);
STATIC
ULIB_EXPORT
PFSN_DIRECTORY
QueryDirectory (
IN PCPATH Path,
IN BOOLEAN GetWhatYouCan DEFAULT FALSE
);
STATIC
ULIB_EXPORT
PWSTRING
QueryEnvironmentVariable (
IN PCWSTRING Variable
);
STATIC
ULIB_EXPORT
PPATH
QuerySystemDirectory (
);
STATIC
ULIB_EXPORT
PPATH
SearchPath(
PWSTRING pFileName,
PWSTRING pSearchPath DEFAULT NULL
);
STATIC
ULIB_EXPORT
PFSN_FILE
QueryFile (
IN PCPATH Path
);
STATIC
ULIB_EXPORT
BOOLEAN
QueryCurrentDosDriveName(
OUT PWSTRING DosDriveName
);
STATIC
ULIB_EXPORT
DRIVE_TYPE
QueryDriveType(
IN PCWSTRING DosDriveName
);
STATIC
ULIB_EXPORT
FILE_TYPE
QueryFileType(
IN PCWSTRING DosFileName
);
STATIC
ULIB_EXPORT
PWSTRING
QueryVolumeLabel(
IN PPATH Path,
OUT PVOL_SERIAL_NUMBER SerialNumber
);
STATIC
ULIB_EXPORT
FARPROC
QueryLibraryEntryPoint(
IN PCWSTRING LibraryName,
IN PCWSTRING EntryPointName,
OUT PHANDLE LibraryHandle
);
STATIC
ULIB_EXPORT
VOID
FreeLibraryHandle(
IN HANDLE LibraryHandle
);
STATIC
BOOLEAN
PutStandardStream(
IN DWORD StdHandle,
IN PSTREAM pStream
);
STATIC
ULIB_EXPORT
BOOLEAN
QueryLocalTimeFromUTime(
IN PCTIMEINFO UTimeInfo,
OUT PTIMEINFO LocalTimeInfo
);
STATIC
BOOLEAN
QueryUTimeFromLocalTime(
IN PCTIMEINFO LocalTimeInfo,
OUT PTIMEINFO UTimeInfo
);
STATIC
ULIB_EXPORT
BOOLEAN
QueryWindowsErrorMessage(
IN ULONG WindowsErrorCode,
OUT PWSTRING ErrorMessage
);
};
INLINE
PPATH
SYSTEM::QueryCurrentPath (
)
{
DebugAssert( FALSE );
return( NEW PATH );
}
#endif // SYSTEM_DEFN