代码拉取完成,页面将自动刷新
package skf
import (
"fmt"
"gitee.com/sushuxinan/crypto-hw-std-interface/skf/util"
"unsafe"
)
// EnumerateFile 枚举出应用中的所有文件
//
// handle 应用句柄
func EnumerateFile(handle unsafe.Pointer) ([]string, error) {
var listLen uint32
// 先获取应用列表字节长度
if c := enumFiles(handle, nil, &listLen); c != util.Ok {
return nil, fmt.Errorf("文件列表获取失败:%s", util.ParseErrorCode(c))
}
nameList := make([]byte, listLen)
// 再获取应用列表
if c := enumFiles(handle, &nameList[0], &listLen); c != util.Ok {
return nil, fmt.Errorf("文件列表获取失败:%s", util.ParseErrorCode(c))
}
return util.ParseList(nameList), nil
}
// GetFileInfo 获取名称为 filename 的文件信息
//
// handle 应用句柄 filename 文件名称
func GetFileInfo(handle unsafe.Pointer, filename string) (*FileAttribute, error) {
filenameBytes := []byte(filename)
info := &FileAttribute{}
if c := getFileInfo(handle, &filenameBytes[0], info); c != util.Ok {
return nil, fmt.Errorf("文件信息获取失败:%s", util.ParseErrorCode(c))
}
return info, nil
}
// CreateFile 在应用中创建文件
//
// handle 应用句柄 info 文件信息
func CreateFile(handle unsafe.Pointer, info *FileInfo) error {
if info.Filename == "" {
return fmt.Errorf("文件名称不能为空")
}
if info.Size == 0 {
return fmt.Errorf("文件大小不能为空")
}
if info.ReadRights == 0 {
info.ReadRights = SECURE_ANYONE_ACCOUNT
}
if info.WriteRights == 0 {
info.WriteRights = SECURE_ANYONE_ACCOUNT
}
filenameBytes := []byte(info.Filename)
c := createFile(handle, &filenameBytes[0], info.Size, info.ReadRights, info.WriteRights)
if c != util.Ok {
return fmt.Errorf("创建文件失败:%s", util.ParseErrorCode(c))
}
return nil
}
// DeleteFile 删除应用中名称为 filename 的文件
//
// handle 应用句柄 filename 文件名称
func DeleteFile(handle unsafe.Pointer, filename string) error {
filenameBytes := []byte(filename)
if c := deleteFile(handle, &filenameBytes[0]); c != util.Ok {
return fmt.Errorf("删除文件失败:%s", util.ParseErrorCode(c))
}
return nil
}
// ReadFile 读取应用中名称为 filename 的文件
//
// handle 应用句柄 filename 文件名 offset 文件读取偏移量 size 要读取长度
func ReadFile(handle unsafe.Pointer, filename string, offset, size uint32) ([]byte, error) {
var (
outDataLen = size
outData = make([]byte, size)
filenameBytes = []byte(filename)
)
c := readFile(handle, &filenameBytes[0], offset, size, &outData[0], &outDataLen)
if c != util.Ok {
return nil, fmt.Errorf("读取文件失败:%s", util.ParseErrorCode(c))
}
return outData[:outDataLen], nil
}
// WriteFile 向应用中写入文件
//
// handle 应用句柄 filename 文件名 offset 文件写入偏移位置 inData 写入的数据
func WriteFile(handle unsafe.Pointer, filename string, offset uint32, inData []byte) error {
filenameBytes := []byte(filename)
c := writeFile(handle, &filenameBytes[0], offset, &inData[0], uint32(len(inData)))
if c != util.Ok {
return fmt.Errorf("写入文件失败:%s", util.ParseErrorCode(c))
}
return nil
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。