⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 kwtools.h

📁 EFI(Extensible Firmware Interface)是下一代BIOS
💻 H
字号:
/*******************************************************
Copyright (c) 2005  Lenovo Corporation
All rights reserved.

Module Name:
    kwTools.h    

Abstract:
	提供常用好使的工具函数

Author: WangZhe
Revision History

********************************************************/
#ifndef _KWTOOLS_H_
#define _KWTOOLS_H_
#include <efi.h>
#include <efilib.h>
#include <shell.h>

#ifndef EOF
#define EOF 0xff
#endif  //EOF
//==================================================
//内存函数
void *MEM_ALLOC( UINTN n );//开辟内存
void MEM_FREE( void *pBase );//释放内存

//==================================================
//字符串函数
//返回最终8为字符串的长度
INTN 	String16To8(CHAR16* SrcStr, CHAR8* DestStr);
//返回最终16为字符串的长度
INTN 	String8To16(CHAR8* SrcStr, CHAR16* DestStr);
//返回最终16为字符串的长度
//将接收的宽8位字符串(其实已经是Unicode编码形式了),变成Unicode
INTN 	StringWide8To16(CHAR8* SrcStr, CHAR16* DestStr);
//==================================================
#define FILESEEK_CUR    	0	//从当前找
#define FILESEEK_END    	1	//从尾找
#define FILESEEK_SET    	2	//从头找
#define FILE_CREATE         EFI_FILE_MODE_READ  | \
                            EFI_FILE_MODE_WRITE | \
                            EFI_FILE_MODE_CREATE
//文件处理函数
VOID KWFreeFileArg ( IN SHELL_FILE_ARG   *Arg);
EFI_FILE_HANDLE kwfopen(CHAR16 *filename,CHAR16 *AccessMode);
UINTN kwfread(VOID *Buffer,UINTN ItemSize,UINTN Length,EFI_FILE_HANDLE Handle);
//读出Handle此时所处位置的一行出来行的结束标记是\n\r就是 0D 0A
//返回这一行的长度,读取完毕后Handle处于\r后的那个位置
UINTN kwfreadLine(UINT8 *ExBuffer,EFI_FILE_HANDLE Handle);
UINTN kwfwrite(VOID *Buffer,UINTN ItemSize,UINTN Length,EFI_FILE_HANDLE Handle);
EFI_STATUS kwfclose(EFI_FILE_HANDLE Handle);
UINT64 kwfsize(EFI_FILE_HANDLE Handle);
UINT64 GetFileSize(CHAR16 *filename);
UINT64 kwftell(EFI_FILE_HANDLE Handle);
UINT64 kwfseek(EFI_FILE_HANDLE Handle,INT64 Offset,INTN Origin);
BOOLEAN kwfeof(EFI_FILE_HANDLE Handle);



typedef struct _TAG_TIGERTIMER {
		UINTN 		EventID;
		EFI_EVENT   EventHandle;
		UINT64      Period;
} TAG_TIGERTIMER;

//事件单元
typedef struct _KWEvent{
		UINTN 		EventID;
		UINTN   	EventType;//类型
}KWEvent;

///////////////////////////////////////////////////////////////////////
//事件处理系统
#define EVENT_KEYPRESSED 	0
#define EVENT_TEST			1

//事件类型
#define EVENTTYPE_SYSTEM		0	//系统事件,不可删
#define EVENTTYPE_USER			1	//用户自定义事件,可删

//创建事件
void	CreateEvent(EFI_EVENT EventHandle,//事件句柄,为空(NULL)代表创建一个时间触发事件
						UINTN EventID, //事件ID
						UINTN nMilSec,//时间事件间隔,单位是微秒,只有在EventHandle==NULL时才有效
						UINTN EventType);//事件的类型,分为系统和自定义

void	KillUserEvent(UINTN EventID);//关闭事件
void	KillAllUserEvent();//关闭所有事件
void	ProcessEvent();//处理事件,全局循环,仅供参考

////////////////////////////////////////////////////////////////////
//压缩,解压缩系统



#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -