亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ffilemanagerwindows.h

?? 虛幻的再開發程序包源代碼
?? H
字號:
/*=============================================================================
	FFileManagerWindows.h: Unreal Windows OS based file manager.
	Copyright 1997-1999 Epic Games, Inc. All Rights Reserved.

	Revision history:
		* Created by Tim Sweeney
=============================================================================*/

#include "FFileManagerGeneric.h"

/*-----------------------------------------------------------------------------
	File Manager.
-----------------------------------------------------------------------------*/

// File manager.
class FArchiveFileReader : public FArchive
{
public:
	FArchiveFileReader( HANDLE InHandle, FOutputDevice* InError, INT InSize )
	:	Handle			( InHandle )
	,	Error			( InError )
	,	Size			( InSize )
	,	Pos				( 0 )
	,	BufferBase		( 0 )
	,	BufferCount		( 0 )
	{
		guard(FArchiveFileReader::FArchiveFileReader);
		ArIsLoading = ArIsPersistent = 1;
		unguard;
	}
	~FArchiveFileReader()
	{
		guard(FArchiveFileReader::~FArchiveFileReader);
		if( Handle )
			Close();
		unguard;
	}
	void Precache( INT HintCount )
	{
		guardSlow(FArchiveFileReader::Precache);
		checkSlow(Pos==BufferBase+BufferCount);
		BufferBase = Pos;
		BufferCount = Min( Min( HintCount, (INT)(ARRAY_COUNT(Buffer) - (Pos&(ARRAY_COUNT(Buffer)-1))) ), Size-Pos );
		INT Count=0;
		ReadFile( Handle, Buffer, BufferCount, (DWORD*)&Count, NULL );
		if( Count!=BufferCount )
		{
			ArIsError = 1;
			Error->Logf( TEXT("ReadFile failed: Count=%i BufferCount=%i Error=%s"), Count, BufferCount, appGetSystemErrorMessage() );
		}
		unguardSlow;
	}
	void Seek( INT InPos )
	{
		guard(FArchiveFileReader::Seek);
		check(InPos>=0);
		check(InPos<=Size);
		if( SetFilePointer( Handle, InPos, 0, FILE_BEGIN )==0xFFFFFFFF )
		{
			ArIsError = 1;
			Error->Logf( TEXT("SetFilePointer Failed %i/%i: %i %s"), InPos, Size, Pos, appGetSystemErrorMessage() );
		}
		Pos         = InPos;
		BufferBase  = Pos;
		BufferCount = 0;
		unguard;
	}
	INT Tell()
	{
		return Pos;
	}
	INT TotalSize()
	{
		return Size;
	}
	UBOOL Close()
	{
		guardSlow(FArchiveFileReader::Close);
		if( Handle )
			CloseHandle( Handle );
		Handle = NULL;
		return !ArIsError;
		unguardSlow;
	}
	void Serialize( void* V, INT Length )
	{
		guardSlow(FArchiveFileReader::Serialize);
		while( Length>0 )
		{
			INT Copy = Min( Length, BufferBase+BufferCount-Pos );
			if( Copy==0 )
			{
				if( Length >= ARRAY_COUNT(Buffer) )
				{
					INT Count=0;
					ReadFile( Handle, V, Length, (DWORD*)&Count, NULL );
					if( Count!=Length )
					{
						ArIsError = 1;
						Error->Logf( TEXT("ReadFile failed: Count=%i Length=%i Error=%s"), Count, Length, appGetSystemErrorMessage() );
					}
					Pos += Length;
					BufferBase += Length;
					return;
				}
				Precache( MAXINT );
				Copy = Min( Length, BufferBase+BufferCount-Pos );
				check(Copy>0);
			}
			appMemcpy( V, Buffer+Pos-BufferBase, Copy );
			Pos       += Copy;
			Length    -= Copy;
			V          = (BYTE*)V + Copy;
		}
		unguardSlow;
	}
protected:
	HANDLE			Handle;
	FOutputDevice*	Error;
	INT				Size;
	INT				Pos;
	INT				BufferBase;
	INT				BufferCount;
	BYTE			Buffer[1024];
};
class FArchiveFileWriter : public FArchive
{
public:
	FArchiveFileWriter( HANDLE InHandle, FOutputDevice* InError, INT InPos )
	:	Handle		( InHandle )
	,	Error		( InError )
	,	Pos			( InPos )
	,	BufferCount	( 0 )
	{}
	~FArchiveFileWriter()
	{
		guard(FArchiveFileWriter::~FArchiveFileWriter);
		if( Handle )
			Close();
		Handle = NULL;
		unguard;
	}
	void Seek( INT InPos )
	{
		Flush();
		if( SetFilePointer( Handle, InPos, 0, FILE_BEGIN )==0xFFFFFFFF )
		{
			ArIsError = 1;
			Error->Logf( LocalizeError("SeekFailed",TEXT("Core")) );
		}
		Pos = InPos;
	}
	INT Tell()
	{
		return Pos;
	}
	UBOOL Close()
	{
		guardSlow(FArchiveFileWriter::Close);
		Flush();
		if( Handle && !CloseHandle(Handle) )
		{
			ArIsError = 1;
			Error->Logf( LocalizeError("WriteFailed",TEXT("Core")) );
		}
		return !ArIsError;
		unguardSlow;
	}
	void Serialize( void* V, INT Length )
	{
		Pos += Length;
		INT Copy;
		while( Length > (Copy=ARRAY_COUNT(Buffer)-BufferCount) )
		{
			appMemcpy( Buffer+BufferCount, V, Copy );
			BufferCount += Copy;
			Length      -= Copy;
			V            = (BYTE*)V + Copy;
			Flush();
		}
		if( Length )
		{
			appMemcpy( Buffer+BufferCount, V, Length );
			BufferCount += Length;
		}
	}
	void Flush()
	{
		if( BufferCount )
		{
			INT Result=0;
			if( !WriteFile( Handle, Buffer, BufferCount, (DWORD*)&Result, NULL ) )
			{
				ArIsError = 1;
				Error->Logf( LocalizeError("WriteFailed",TEXT("Core")) );
			}
		}
		BufferCount = 0;
	}
protected:
	HANDLE			Handle;
	FOutputDevice*	Error;
	INT				Pos;
	INT				BufferCount;
	BYTE			Buffer[4096];
};
class FFileManagerWindows : public FFileManagerGeneric
{
public:
	FArchive* CreateFileReader( const TCHAR* Filename, FOutputDevice* Error )
	{
		guard(FFileManagerWindows::CreateFileReader);
		DWORD  Access = GENERIC_READ;
		DWORD  Flags  = FILE_SHARE_READ;
		DWORD  Create = OPEN_EXISTING;
		HANDLE Handle = TCHAR_CALL_OS( CreateFileW( Filename, Access, Flags, NULL, Create, FILE_ATTRIBUTE_NORMAL, NULL ), CreateFileA( TCHAR_TO_ANSI(Filename), Access, Flags, NULL, Create, FILE_ATTRIBUTE_NORMAL, NULL ) );
		if( Handle==INVALID_HANDLE_VALUE )
			return NULL;
		return new(TEXT("WindowsFileReader"))FArchiveFileReader(Handle,Error,GetFileSize(Handle,NULL));
		unguard;
	}
	FArchive* CreateFileWriter( const TCHAR* Filename, UBOOL ReplaceExisting, UBOOL EvenIfReadOnly, UBOOL Unbuffered, UBOOL Append, FOutputDevice* Error )
	{
		guard(FFileManagerWindows::CreateFileWriter);
		if( EvenIfReadOnly )
			TCHAR_CALL_OS(SetFileAttributesW(Filename, 0),SetFileAttributesA(TCHAR_TO_ANSI(Filename), 0));
		DWORD  Access = GENERIC_WRITE;
		DWORD  Flags  = 0;
		DWORD  Create = Append ? OPEN_ALWAYS : ReplaceExisting ? CREATE_ALWAYS : CREATE_NEW;
		HANDLE Handle = TCHAR_CALL_OS( CreateFileW( Filename, Access, Flags, NULL, Create, FILE_ATTRIBUTE_NORMAL, NULL ), CreateFileA( TCHAR_TO_ANSI(Filename), Access, Flags, NULL, Create, FILE_ATTRIBUTE_NORMAL, NULL ) );
		INT    Pos    = 0;
		if( Handle==INVALID_HANDLE_VALUE )
			return NULL;
		if( Append )
			Pos = SetFilePointer( Handle, 0, 0, FILE_END );
		return new(TEXT("WindowsFileWriter"))FArchiveFileWriter(Handle,Error,Pos);
		unguard;
	}
	INT FileSize( const TCHAR* Filename )
	{
		guard(FFileManagerWindows::FileSize);
		HANDLE Handle = TCHAR_CALL_OS( CreateFileW( Filename, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ), CreateFileA( TCHAR_TO_ANSI(Filename), GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL ) );
		if( Handle==INVALID_HANDLE_VALUE )
			return -1;
		DWORD Result = GetFileSize( Handle, NULL );
		CloseHandle( Handle );
		return Result;
		unguard;
	}
	UBOOL Copy( const TCHAR* DestFile, const TCHAR* SrcFile, UBOOL ReplaceExisting, UBOOL EvenIfReadOnly, UBOOL Attributes, void (*Progress)(FLOAT Fraction) )
	{
		if( EvenIfReadOnly )
			TCHAR_CALL_OS(SetFileAttributesW(DestFile, 0),SetFileAttributesA(TCHAR_TO_ANSI(DestFile), 0));
		UBOOL Result
		=	Progress
		?	FFileManagerGeneric::Copy( DestFile, SrcFile, ReplaceExisting, EvenIfReadOnly, Attributes, Progress )
		:	TCHAR_CALL_OS(CopyFileW(SrcFile, DestFile, !ReplaceExisting),CopyFileA(TCHAR_TO_ANSI(SrcFile), TCHAR_TO_ANSI(DestFile), !ReplaceExisting))!=0;
		if( Result && !Attributes )
			TCHAR_CALL_OS(SetFileAttributesW(DestFile, 0),SetFileAttributesA(TCHAR_TO_ANSI(DestFile), 0));
		return Result;
	}
	UBOOL Delete( const TCHAR* Filename, UBOOL RequireExists=0, UBOOL EvenReadOnly=0 )
	{
		guard(FFileManagerWindows::Delete);
		if( EvenReadOnly )
			TCHAR_CALL_OS(_wchmod(Filename, _S_IREAD | _S_IWRITE),_chmod(TCHAR_TO_ANSI(Filename), _S_IREAD | _S_IWRITE));
		return TCHAR_CALL_OS(_wunlink(Filename),_unlink(TCHAR_TO_ANSI(Filename)))==0 || (errno==ENOENT && !RequireExists);
		unguard;
	}
	UBOOL Move( const TCHAR* Dest, const TCHAR* Src, UBOOL Replace=1, UBOOL EvenIfReadOnly=0, UBOOL Attributes=0 )
	{
		guard(FFileManagerWindows::Move);
		//warning: MoveFileEx is broken on Windows 95 (Microsoft bug).
		Delete( Dest, 0, 1 );
		INT Result = TCHAR_CALL_OS( MoveFileW(Src,Dest), MoveFileA(TCHAR_TO_ANSI(Src),TCHAR_TO_ANSI(Dest)) );
		if( !Result )
			debugf( NAME_Warning, TEXT("Error moving file '%s' to '%s'"), Src, Dest );
		return Result!=0;
		unguard;
	}
	SQWORD GetGlobalTime( const TCHAR* Filename )
	{
		//return grenwich mean time as expressed in nanoseconds since the creation of the universe.
		//time is expressed in meters, so divide by the speed of light to obtain seconds.
		//assumes the speed of light in a vacuum is constant.
		//the file specified by Filename is assumed to be in your reference frame, otherwise you
		//must transform the result by the path integral of the minkowski metric tensor in order to
		//obtain the correct result.
		return 0;
	}
	UBOOL SetGlobalTime( const TCHAR* Filename )
	{
		return 0;//!!
	}
	UBOOL MakeDirectory( const TCHAR* Path, UBOOL Tree=0 )
	{
		guard(FFileManagerWindows::MakeDirectory);
		if( Tree )
			return FFileManagerGeneric::MakeDirectory( Path, Tree );
		return TCHAR_CALL_OS( _wmkdir(Path), _mkdir(TCHAR_TO_ANSI(Path)) )==0 || errno==EEXIST;
		unguard;
	}
	UBOOL DeleteDirectory( const TCHAR* Path, UBOOL RequireExists=0, UBOOL Tree=0 )
	{
		guard(FFileManagerWindows::DeleteDirectory);
		if( Tree )
			return FFileManagerGeneric::DeleteDirectory( Path, RequireExists, Tree );
		return TCHAR_CALL_OS( _wrmdir(Path), _rmdir(TCHAR_TO_ANSI(Path)) )==0 || (errno==ENOENT && !RequireExists);
		unguard;
	}
	TArray<FString> FindFiles( const TCHAR* Filename, UBOOL Files, UBOOL Directories )
	{
		guard(FFileManagerWindows::FindFiles);
		TArray<FString> Result;
#if UNICODE
		if( GUnicodeOS )
		{
			_wfinddata_t Found;
			long hFind = _wfindfirst( Filename, &Found );
			if( hFind != -1 )
			do
				if
				(	appStrcmp(Found.name,TEXT("."))!=0
				&&	appStrcmp(Found.name,TEXT(".."))!=0
				&&	((Found.attrib & _A_SUBDIR) ? Directories : Files) )
					new(Result)FString( Found.name );
			while( _wfindnext( hFind, &Found )!=-1 );
			_findclose(hFind);
		}
		else
#endif
		{
			_finddata_t Found;
			long hFind = _findfirst( TCHAR_TO_ANSI(Filename), &Found );
			if( hFind != -1 )
			{
				do
				{
					const TCHAR* Name = ANSI_TO_TCHAR(Found.name);
					if
					(	appStrcmp(Name,TEXT("."))!=0
					&&	appStrcmp(Name,TEXT(".."))!=0
					&&	((Found.attrib & _A_SUBDIR) ? Directories : Files) )
						new(Result)FString( Name );
				}
				while( _findnext( hFind, &Found )!=-1 );
			}
			_findclose(hFind);
		}
		return Result;
		unguard;
	}
	UBOOL SetCurrentDirectory( const TCHAR* Filename )
	{
		guard(FFileManagerWindows::SetCurrentDirectory);
		return TCHAR_CALL_OS( _wchdir(Filename), chdir(TCHAR_TO_ANSI(Filename)) )==0;
		unguard;
	}
	FString GetCurrentDirectory()
	{
		guard(FFileManagerWindows::GetCurrentDirectory);
#if UNICODE
		if( GUnicodeOS )
		{
			TCHAR Buffer[1024]=TEXT("");
			_wgetcwd(Buffer,ARRAY_COUNT(Buffer));
			return FString(Buffer);
		}
		else
#endif
		{
			ANSICHAR Buffer[1024]="";
			getcwd( Buffer, ARRAY_COUNT(Buffer) );
			return appFromAnsi( Buffer );//!!return TCHAR_TO_ANSI is fucked up by Visual C++.
		}
		unguard;
	}
};

/*-----------------------------------------------------------------------------
	The End.
-----------------------------------------------------------------------------*/

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色婷婷精品久久二区二区蜜臂av | 精品国产区一区| 91美女视频网站| 视频一区在线播放| 精品国产一二三区| 精品久久久久香蕉网| 99免费精品在线观看| 天堂影院一区二区| 日本一区二区三区在线观看| 欧美亚洲一区三区| 国产精品自在欧美一区| 国产黑丝在线一区二区三区| 一个色在线综合| 国产欧美日韩不卡免费| 欧美色窝79yyyycom| 黄网站免费久久| 一区二区三区自拍| 首页综合国产亚洲丝袜| 久久久不卡网国产精品一区| 欧美色视频在线| 成人毛片在线观看| 91免费版pro下载短视频| 欧美视频一区二区三区在线观看| 国产精品国产三级国产aⅴ入口| 欧美久久久久久久久中文字幕| 国产成人亚洲综合a∨婷婷图片| 午夜精品一区在线观看| 亚洲人成人一区二区在线观看| 成人激情免费网站| 丝袜国产日韩另类美女| 激情小说亚洲一区| 奇米色一区二区| 成人午夜视频网站| 精品亚洲免费视频| 天天综合日日夜夜精品| 国产乱码精品一区二区三区忘忧草| 国产欧美一区二区三区鸳鸯浴| 欧美精品久久99| 欧美私人免费视频| 337p日本欧洲亚洲大胆精品| 欧美一区二区不卡视频| 欧美视频一区在线| 国产色产综合色产在线视频| 亚洲资源在线观看| 一级日本不卡的影视| 亚洲日本一区二区| 另类综合日韩欧美亚洲| 五月婷婷久久综合| 午夜不卡av在线| 99久久99久久精品免费看蜜桃| 亚洲.国产.中文慕字在线| 国v精品久久久网| 日韩精品一区二区在线| 日韩午夜激情av| 亚洲精品菠萝久久久久久久| 国产成人综合亚洲网站| 国产91丝袜在线18| 成人高清免费在线播放| 成人激情av网| 精品国产一区二区精华| 日韩精品色哟哟| 精品中文字幕一区二区| 久久超碰97中文字幕| 国产精品羞羞答答xxdd| 成人国产一区二区三区精品| 欧美成人精品3d动漫h| 午夜免费久久看| 久久精品国产第一区二区三区| 一区二区三区精品在线| 成人激情黄色小说| 欧美中文字幕一区二区三区| 欧美日韩国产电影| 欧美一区二区视频在线观看2022 | 欧美亚洲综合另类| 日本一二三不卡| 亚洲日本在线视频观看| 午夜精品一区在线观看| 欧美午夜精品久久久久久超碰| 成人小视频在线| 久久久美女毛片| 亚洲日韩欧美一区二区在线| 北条麻妃国产九九精品视频| 欧美性猛交xxxxxx富婆| 一区二区免费看| 欧美区在线观看| 日日夜夜一区二区| 日韩女优电影在线观看| 日韩毛片精品高清免费| 91在线无精精品入口| 欧美人妖巨大在线| 久久伊人中文字幕| 国产成人在线色| 成人欧美一区二区三区1314| 91亚洲精品久久久蜜桃| 日韩欧美激情一区| 成人黄色综合网站| 欧美大胆人体bbbb| 亚洲日本在线天堂| 国产一区在线观看麻豆| 欧美性猛交xxxxxx富婆| 欧美国产精品一区二区三区| 日韩av一区二区三区| 99久久99久久精品免费观看| 日韩亚洲欧美中文三级| 一区二区三区不卡视频| 国产suv精品一区二区三区| 欧美剧情电影在线观看完整版免费励志电影| 色综合色狠狠综合色| 久久久久久久久久美女| 94-欧美-setu| 国产精品色哟哟网站| 久久精品国产免费| 欧美日韩一区二区三区不卡 | 国内成人精品2018免费看| 欧美三级电影精品| 国产真实乱偷精品视频免| 欧美乱熟臀69xxxxxx| 亚洲你懂的在线视频| 91丝袜美女网| 国产精品国产a| 成人美女视频在线观看| 26uuu成人网一区二区三区| 日本不卡的三区四区五区| 欧美三级在线播放| 懂色av一区二区三区蜜臀| 午夜伦理一区二区| 欧美美女bb生活片| 奇米色777欧美一区二区| 91精品国产aⅴ一区二区| 午夜久久久久久电影| 制服丝袜成人动漫| 天天操天天干天天综合网| 制服丝袜av成人在线看| 日韩激情一区二区| 日韩精品一区二区三区三区免费| 国产性色一区二区| 成人性视频网站| 亚洲欧美在线视频观看| 久久精品这里都是精品| 高清不卡在线观看av| 亚洲视频一区在线| 在线观看三级视频欧美| 亚洲国产精品久久久久秋霞影院| 国产高清无密码一区二区三区| 国产亚洲成av人在线观看导航| 美女国产一区二区| 久久无码av三级| 91精品国产高清一区二区三区蜜臀 | 亚洲国产日韩综合久久精品| 欧美美女视频在线观看| 欧美自拍丝袜亚洲| 日本中文字幕一区二区视频| 精品国产制服丝袜高跟| av日韩在线网站| 日韩电影在线观看一区| 亚洲一区二区影院| 精品久久久久一区| 久久综合九色欧美综合狠狠| 成人久久视频在线观看| 成人国产精品免费网站| 午夜亚洲国产au精品一区二区| 精品欧美一区二区在线观看| 亚洲精品一区二区三区99| 成人18视频日本| 日韩电影免费在线看| 国产色一区二区| 欧美乱妇15p| 成人一道本在线| 日韩—二三区免费观看av| 青青草国产精品97视觉盛宴| 中文字幕日本乱码精品影院| 欧美日韩成人一区| 精品福利av导航| 在线观看av一区二区| 国产高清无密码一区二区三区| 久久久国产精品麻豆| 欧美日韩一区视频| 成人黄色国产精品网站大全在线免费观看| 久久综合狠狠综合久久综合88| 色哟哟国产精品| 国产精品亚洲第一区在线暖暖韩国| 亚洲mv在线观看| 亚洲日本丝袜连裤袜办公室| 久久先锋影音av鲁色资源网| 宅男噜噜噜66一区二区66| 精品国产一区二区三区不卡 | 国产高清不卡一区二区| 日韩电影免费在线观看网站| 九九视频精品免费| 日韩经典一区二区| 成人免费看黄yyy456| 欧美夫妻性生活| 中文字幕精品一区二区精品绿巨人 | 久久久久久久久一| 日韩美女视频一区二区在线观看| 欧美日韩中文字幕一区| 91视频免费看| 欧美中文字幕一二三区视频| 日韩美女在线视频| 久久综合久久综合亚洲|