📄 kwtools.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 + -