第 4 章 - Azure RTOS FileX 服务说明

本章按字母顺序介绍所有 Azure RTOS FileX 服务。 服务名称设计为将所有相似的服务组合在一起。

fx_directory_attributes_read

读取指定目录的属性。

原型

UINT fx_directory_attributes_read ( 
    FX_MEDIA *media_ptr,
    CHAR *directory_name,
    UINT *attributes_ptr);

说明

此服务从指定的媒体读取目录的属性。

输入参数

  • media_ptr:指向媒体控制块的指针。
  • directory_name:指向请求的目录名称的指针(目录路径是可选的)。
  • attributes_ptr:指向目录属性要放置的目标的指针。 目录属性以位图格式返回,具有以下可能的设置。
    • FX_READ_ONLY (0x01)
    • FX_HIDDEN (0x02)
    • FX_SYSTEM (0x04)
    • FX_VOLUME (0x08)
    • FX_DIRECTORY (0x10)
    • FX_ARCHIVE (0x20)

返回值

  • FX_SUCCESS (0x00) 成功读取目录属性
  • FX_MEDIA_NOT_OPEN (0x11) 指定的媒体未打开
  • FX _NOT FOUND (0x04) 在媒体中未找到指定的目录
  • FX_NOT_DIRECTORY (0x0E) 条目不是目录
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误
  • FX_FILE_CORRUPT (0x08) 文件已损坏
  • FX_SECTOR_INVALID (0x89) 扇区无效
  • FX_FAT_READ_ERROR (0x03) 无法读取 FAT 条目
  • FX_NO_MORE_SPACE (0x0A) 不再有空间来完成该操作
  • FX_MEDIA_INVALID (0x02) 媒体无效
  • FX_PTR_ERROR (0x18) 媒体指针无效
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例

FX_MEDIA     my_media;
UINT     status;
/* Retrieve the attributes of "mydir" from the specified media.*/
status = fx_directory_attributes_read(&my_media, "mydir", &attributes);
/* If status equals FX_SUCCESS, "attributes" contains the directory attributes of "mydir". */

另请参阅

  • fx_directory_attributes_set
  • fx_directory_create
  • fx_directory_default_get
  • fx_directory_default_set
  • fx_directory_delete
  • fx_directory_first_entry_find
  • fx_directory_first_full_entry_find
  • fx_directory_information_get
  • fx_directory_local_path_clear
  • fx_directory_local_path_get
  • fx_directory_local_path_restore
  • fx_directory_local_path_set
  • fx_directory_long_name_get
  • fx_directory_name_test
  • fx_directory_next_entry_find
  • fx_directory_next_full_entry_find
  • fx_directory_rename
  • fx_directory_short_name_get
  • fx_unicode_directory_create
  • fx_unicode_directory_rename

fx_directory_attributes_set

设置指定目录的属性。

原型

UINT fx_directory_attributes_set(
    FX_MEDIA *media_ptr,
    CHAR *directory_name,
    UINT *attributes);

说明

此服务将目录的属性设置为调用方指定的属性。

警告

仅允许此应用程序使用此服务修改目录属性的子集。 任何设置其他属性的尝试都将导致错误。

输入参数

  • media_ptr:指向媒体控制块的指针。
  • directory_name:指向请求的目录名称的指针(目录路径是可选的)。
  • attributes:此目录的新属性。 有效目录属性定义如下。
    • FX_READ_ONLY (0x01)
    • FX_HIDDEN (0x02)
    • FX_SYSTEM (0x04)
    • FX_ARCHIVE (0x20)

返回值

  • FX_SUCCESS (0x00) 成功设置目录属性
  • FX_MEDIA_NOT_OPEN (0x11) 指定的媒体未打开
  • FX_NOT_FOUND (0x04) 在媒体中未找到指定的目录
  • FX_NOT_DIRECTORY (0x0E) 条目不是目录
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误
  • FX_WRITE_PROTECT (0x23) 指定的媒体受到写入保护
  • FX_FILE_CORRUPT (0x08) 文件已损坏
  • FX_SECTOR_INVALID (0x89) 扇区无效
  • FX_FAT_READ_ERROR (0x03) 无法读取 FAT 条目
  • FX_NO_MORE_SPACE (0x0A) 不再有空间来完成该操作
  • FX_MEDIA_INVALID (0x02) 媒体无效
  • FX_NO_MORE_ENTRIES (0x0F) 此目录中不再有条目
  • FX_PTR_ERROR (0x18) 媒体指针无效
  • FX_INVALID_ATTR (0x19) 选择了无效属性。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例

FX_MEDIA             my_media;
UINT                 status;
status = fx_directory_attributes_set(&my_media, "mydir", FX_READ_ONLY);
/*Set the attributes of "mydir" to read-only. */
/* If status equals FX_SUCCESS, the directory "mydir" is read-only. */

另请参阅

  • fx_directory_attributes_read
  • fx_directory_create
  • fx_directory_default_get
  • fx_directory_default_set
  • fx_directory_delete
  • fx_directory_first_entry_find
  • fx_directory_first_full_entry_find
  • fx_directory_information_get
  • fx_directory_local_path_clear
  • fx_directory_local_path_get
  • fx_directory_local_path_restore
  • fx_directory_local_path_set
  • fx_directory_long_name_get
  • fx_directory_name_test
  • fx_directory_next_entry_find
  • fx_directory_next_full_entry_find
  • fx_directory_rename
  • fx_directory_short_name_get
  • fx_unicode_directory_create
  • fx_unicode_directory_rename

fx_directory_create

创建子目录

原型

UINT fx_directory_create(
    FX_MEDIA *media_ptr,
    CHAR *directory_name);

说明

此服务在当前默认目录或目录名称中提供的路径中创建子目录。 与根目录不同,子目录不会限制其可容纳的文件数。 根目录只能容纳由启动记录确定的条目数。

输入参数

  • media_ptr:指向媒体控制块的指针。
  • directory_name:指向要创建的目录名称的指针(目录路径是可选的)。

返回值

  • FX_SUCCESS (0x00) 成功创建目录。
  • FX_MEDIA_NOT_OPEN (0x11) 指定的媒体未打开
  • FX_NOT_FOUND (0x04) 在媒体中未找到指定的目录
  • FX_NOT_DIRECTORY (0x0E) 条目不是目录
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误
  • FX_FILE _CORRUPT (0x08) 文件已损坏
  • FX_SECTOR_INVALID (0x89) 扇区无效
  • FX_FAT_READ_ERROR (0x03) 无法读取 FAT 条目
  • FX_NO_MORE_SPACE (0x0A) 不再有空间来完成该操作
  • FX_MEDIA_INVALID (0x02) 媒体无效
  • FX_NO_MORE_ENTRIES (0x0F) 此目录中不再有条目
  • FX_PTR_ERROR (0x18) 媒体指针无效
  • FX_INVALID_ATTR (0x19) 选择了无效属性。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例

FX_MEDIA             my_media;
UINT                 status;
/* Create a subdirectory called "temp" in the current default directory. */

status = fx_directory_create(&my_media, "temp");

/* If status equals FX_SUCCESS, the new subdirectory "temp" has been created. */

另请参阅

  • fx_directory_attributes_read
  • fx_directory_attributes_set
  • fx_directory_default_get
  • fx_directory_default_set
  • fx_directory_delete
  • fx_directory_first_entry_find
  • fx_directory_first_full_entry_find
  • fx_directory_information_get
  • fx_directory_local_path_clear
  • fx_directory_local_path_get
  • fx_directory_local_path_restore
  • fx_directory_local_path_set
  • fx_directory_long_name_get
  • fx_directory_name_test
  • fx_directory_next_entry_find
  • fx_directory_next_full_entry_find
  • fx_directory_rename
  • fx_directory_short_name_get
  • fx_unicode_directory_create
  • fx_unicode_directory_rename

fx_directory_default_get

获取上一个默认目录

原型

UINT fx_directory_default_get(
    FX_MEDIA *media_ptr,
    CHAR **return_path_name);

说明

此服务将指针返回到 fx_directory_default_set 最后设置的路径。 如果尚未设置默认目录,或者当前默认目录为根目录,则返回值 FX_NULL。

重要

内部路径字符串的默认大小为 256 个字符;通过修改 fx_api.h 中的 FX_MAXIMUM_PATH 并重新生成整个 FileX 库可以更改大小。 字符串路径会保留用于应用程序,不会由 FileX 在内部使用。

输入参数

  • media_ptr:指向媒体控制块的指针。
  • return_path_name:指向最后一个默认目录字符串的目标的指针。 如果默认目录的当前设置是根目录,则返回值 FX_NULL。 媒体打开时,根目录为默认值。

返回值

  • FX_SUCCESS (0x00) 成功获取默认目录
  • FX_MEDIA_NOT_OPEN (0x11) 指定的媒体未打开
  • FX_PTR_ERROR (0x18) 媒体或目标指针无效。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例

FX_MEDIA my_media;
CHAR *current_default_dir;
UINT status;
/* Retrieve the current default directory. */
status = fx_directory_default_get(&my_media, &current_default_dir);
/* If status equals FX_SUCCESS, "current_default_dir" 
    contains a pointer to the current default directory).*/

另请参阅

  • fx_directory_attributes_read
  • fx_directory_attributes_set
  • fx_directory_create
  • fx_directory_default_set
  • fx_directory_delete
  • fx_directory_first_entry_find
  • fx_directory_first_full_entry_find
  • fx_directory_information_get
  • fx_directory_local_path_clear
  • fx_directory_local_path_get
  • fx_directory_local_path_restore
  • fx_directory_local_path_set
  • fx_directory_long_name_get
  • fx_directory_name_test
  • fx_directory_next_entry_find
  • fx_directory_next_full_entry_find
  • fx_directory_rename
  • fx_directory_short_name_get
  • fx_unicode_directory_create
  • fx_unicode_directory_rename

fx_directory_default_set

设置默认目录

原型


UINT fx_directory_default_set(
    FX_MEDIA *media_ptr,
    CHAR *new_path_name);

说明

此服务设置媒体的默认目录。 如果提供了值 FX_NULL,则默认目录将设置为媒体的根目录。 所有未显式指定路径的后续文件操作都将默认为此目录。

重要

内部路径字符串的默认大小为 256 个字符;通过修改 fx_api.h 中的 FX_MAXIMUM_PATH 并重新生成整个 FileX 库可以更改大小。 字符串路径会保留用于应用程序,不会由 FileX 在内部使用。

重要

对于应用程序提供的名称,FileX 支持反斜杠 (\) 和正斜杠字符串来分隔目录、子目录和文件名。 但是,FileX 仅在返回到应用程序的路径中使用反斜杠字符。

输入参数

  • media_ptr:指向媒体控制块的指针。
  • new_path_name:指向新默认目录名称的指针。 如果提供了值 FX_NULL,则媒体的默认目录将设置为媒体的根目录。

返回值

  • FX_SUCCESS (0x00) 成功设置默认目录
  • FX_MEDIA_NOT_OPEN (0x11) 指定的媒体未打开
  • FX_INVALID_PATH (0x0D) 找不到新目录
  • FX_PTR_ERROR (0x18) 媒体指针无效。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例

FX_MEDIA     my_media;
UINT status;
/* Set the default directory to \abc\def\ghi. */
status = fx_directory_default_set(&my_media, "\\abc\\def\\ghi");
/* If status equals FX_SUCCESS, the default directory for this media is \abc\def\ghi. All subsequent file operations that do not explicitly specify a path will default to this directory. Note that the character "\" serves as an escape character in a string. To represent the character "\", use the construct "\\". This is done because of the C language- only one "\" is really present in the string. */

另请参阅

  • fx_directory_attributes_read
  • fx_directory_attributes_set
  • fx_directory_create
  • fx_directory_default_get
  • fx_directory_delete
  • fx_directory_first_entry_find
  • fx_directory_first_full_entry_find
  • fx_directory_information_get
  • fx_directory_local_path_clear
  • fx_directory_local_path_get
  • fx_directory_local_path_restore
  • fx_directory_local_path_set
  • fx_directory_long_name_get
  • fx_directory_name_test
  • fx_directory_next_entry_find
  • fx_directory_next_full_entry_find
  • fx_directory_rename
  • fx_directory_short_name_get
  • fx_unicode_directory_create
  • fx_unicode_directory_rename

fx_directory_delete

删除指定子目录。

原型

UINT fx_directory_delete(
    FX_MEDIA *media_ptr,
    CHAR *directory_name);

说明

此服务删除指定的目录。 请注意,目录必须为空才能将其删除。

输入参数

  • media_ptr:指向媒体控制块的指针。
  • directory_name:指向要删除的目录名称的指针(目录路径是可选的)。

返回值

  • FX_SUCCESS (0x00) 成功创建目录
  • FX_MEDIA_NOT_OPEN (0x11) 指定的媒体未打开
  • FX_NOT_FOUND (0x04) 未找到指定的目录
  • FX_DIR_NOT_EMPTY (0x10) 指定的目录不为空
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误
  • FX_WRITE_PROTECT (0x23) 指定的媒体受到写入保护
  • FX_FILE_CORRUPT (0x08) 文件已损坏
  • FX_SECTOR_INVALID (0x89) 扇区无效
  • FX_FAT_READ_ERROR (0x03) 无法读取 FAT 条目
  • FX_NO_MORE_SPACE (0x0A) 不再有空间来完成该操作
  • FX_MEDIA_INVALID (0x02) 媒体无效
  • FX_NO_MORE_ENTRIES (0x0F) 此目录中不再有条目
  • FX_NOT_DIRECTORY (0x0E) 不是目录条目
  • FX_PTR_ERROR (0x18) 媒体指针无效
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例

FX_MEDIA     my_media;
UINT status;
/* Set the default directory to \abc\def\ghi. */
status = fx_directory_delete(&my_media, "abc");
/* Delete the subdirectory "abc." */
/* If status equals FX_SUCCESS, the subdirectory "abc" was deleted. */

另请参阅

  • fx_directory_attributes_read
  • fx_directory_attributes_set
  • fx_directory_create
  • fx_directory_default_get
  • fx_directory_default_set
  • fx_directory_first_entry_find
  • fx_directory_first_full_entry_find
  • fx_directory_information_get
  • fx_directory_local_path_clear
  • fx_directory_local_path_get
  • fx_directory_local_path_restore
  • fx_directory_local_path_set
  • fx_directory_long_name_get
  • fx_directory_name_test
  • fx_directory_next_entry_find
  • fx_directory_next_full_entry_find
  • fx_directory_rename
  • fx_directory_short_name_get
  • fx_unicode_directory_create
  • fx_unicode_directory_rename

fx_directory_first_entry_find

获取第一个目录条目。

原型

UINT fx_directory_first_entry_find(
    FX_MEDIA *media_ptr,
    CHAR *return_entry_name);

说明

此服务检索默认目录中的第一个条目名称,并将其复制到指定目标。

警告

指定的目标必须足够大,才能容纳 FX_MAX_LONG_NAME_LEN 定义的最大大小的 FileX 名称。

警告

如果使用非本地路径,则务必在目录遍历发生时(通过 ThreadX 信号灯、互斥或优先级更改)阻止其他应用程序线程更改此目录。 否则,可能获得无效结果。

输入参数

  • media_ptr:指向媒体控制块的指针。
  • return_entry_name:指向默认目录中第一个条目名称的目标的指针。

返回值

  • FX_SUCCESS (0x00) 成功查找第一个目录条目
  • FX_MEDIA_NOT_OPEN (0x11) 指定的媒体未打开
  • FX_NO_MORE_ENTRIES (0x0F) 此目录中不再有条目
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误
  • FX_FILE_CORRUPT (0x08) 文件已损坏
  • FX_SECTOR_INVALID (0x89) 扇区无效
  • FX_FAT_READ_ERROR (0x03) 无法读取 FAT 条目
  • FX_PTR_ERROR (0x18) 媒体或目标指针无效
  • FX_CALLER_ERROR (0x20) 调用方不是线程

允许来自

线程数

示例

FX_MEDIA         my_media;
UINT             status;
CHAR             entry[FX_MAX_LONG_NAME_LEN];
/* Retrieve the first directory entry in the current directory. */
status = fx_directory_first_entry_find(&my_media, entry);
/* If status equals FX_SUCCESS, the entry in the directory is the "entry" string. */

另请参阅

  • fx_directory_attributes_read
  • fx_directory_attributes_set
  • fx_directory_create
  • fx_directory_default_get
  • fx_directory_default_set
  • fx_directory_delete
  • fx_directory_first_full_entry_find
  • fx_directory_information_get
  • fx_directory_local_path_clear
  • fx_directory_local_path_get
  • fx_directory_local_path_restore
  • fx_directory_local_path_set
  • fx_directory_long_name_get
  • fx_directory_name_test
  • fx_directory_next_entry_find
  • fx_directory_next_full_entry_find
  • fx_directory_rename
  • fx_directory_short_name_get
  • fx_unicode_directory_create
  • fx_unicode_directory_rename

fx_directory_first_full_entry_find

获取包含完整信息的第一个目录条目。

原型

UINT fx_directory_first_full_entry_find(
    FX_MEDIA *media_ptr,
    CHAR *directory_name,
    UINT *attributes,
    ULONG *size,
    UINT *year, UINT *month, UINT *day,
    UINT *hour, UINT *minute, UINT *second);

输入参数

  • media_ptr:指向媒体控制块的指针。
  • directory_name:指向目录条目名称的目标的指针。 大小必须至少为 FX_MAX_LONG_NAME_LEN。
  • attributes:如果非 Null,则为指向条目属性要放置的目标的指针。 属性以位图格式返回,具有以下可能的设置。
    • FX_READ_ONLY (0x01)
    • FX_HIDDEN (0x02)
    • FX_SYSTEM (0x04)
    • FX_VOLUME (0x08)
    • FX_DIRECTORY (0x10)
    • FX_ARCHIVE (0x20)
  • size:如果非 Null,则为指向条目大小(字节)的目标的指针。
  • year:如果非 Null,则为指向条目的修改年份的目标的指针。
  • month:如果非 Null,则为指向条目的修改月份的目标的指针。
  • day:如果非 Null,则为指向条目的修改日期的目标的指针。
  • hour:如果非 Null,则为指向条目的修改时间(小时)的目标的指针。
  • minute:如果非 Null,则为指向条目的修改时间(分钟)的目标的指针。
  • second:如果非 Null,则为指向条目的修改时间(秒)的目标的指针。

返回值

  • FX_SUCCESS (0x00) 成功查找第一个目录条目
  • FX_MEDIA_NOT_OPEN (0x11) 指定的媒体未打开
  • FX_NO_MORE_ENTRIES (0x0F) 此目录中不再有条目
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误
  • FX_WRITE_PROTECT (0x23) 指定的媒体受到写入保护
  • FX_FILE _CORRUPT (0x08) 文件已损坏
  • FX_SECTOR_INVALID (0x89) 扇区无效
  • FX_FAT_READ_ERROR (0x03) 无法读取 FAT 条目
  • FX_NO_MORE_SPACE (0x0A) 不再有空间来完成该操作
  • FX_MEDIA_INVALID (0x02) 媒体无效
  • FX_PTR_ERROR (0x18) 媒体或目标指针无效。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例

FX_MEDIA     my_media;
UINT         status;
CHAR         entry_name[FX_MAX_LONG_NAME_LEN];
UINT         attributes;
ULONG        size;
UINT         year;
UINT         month;
UINT         day;
UINT         hour;
UINT         minute;
UINT         second;
/* Get the first directory entry in the default directory with full information. */
status = fx_directory_first_full_entry_find(&my_media, entry_name,
    &attributes, &size, &year, &month, &day, &hour, &minute, &second);

/* If status equals FX_SUCCESS, the entry's information is in the local variables. */

另请参阅

  • fx_directory_attributes_read
  • fx_directory_attributes_set
  • fx_directory_create
  • fx_directory_default_get
  • fx_directory_default_set
  • fx_directory_delete
  • fx_directory_first_full_entry_find
  • fx_directory_information_get
  • fx_directory_local_path_clear
  • fx_directory_local_path_get
  • fx_directory_local_path_restore
  • fx_directory_local_path_set
  • fx_directory_long_name_get
  • fx_directory_name_test
  • fx_directory_next_entry_find
  • fx_directory_next_full_entry_find
  • fx_directory_rename
  • fx_directory_short_name_get
  • fx_unicode_directory_create
  • fx_unicode_directory_rename

fx_directory_information_get

获取目录的输入信息

原型

UINT fx_directory_first_full_entry_find(
    FX_MEDIA *media_ptr,
    CHAR *directory_name,
    UINT *attributes,
    ULONG *size,
    UINT *year, UINT *month, UINT *day,
    UINT *hour, UINT *minute, UINT *second);

输入参数

  • media_ptr:指向媒体控制块的指针。
  • directory_name:指向目录条目名称的指针。
  • attributes:指向属性的目标的指针。
  • size:指向大小的目标的指针。
  • year:指向年份的目标的指针。
  • month:指向月份的目标的指针。
  • day:指向日期的目标的指针。
  • hour:指向时间(小时)的目标的指针。
  • minute:指向时间(分钟)的目标的指针。
  • second:指向时间(秒)的目标的指针。

返回值

  • FX_SUCCESS (0x00) 成功查找第一个目录条目
  • FX_MEDIA_NOT_OPEN (0x11) 指定的媒体未打开
  • FX_NOT_FOUND (0x04) 在媒体中未找到指定的目录
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误
  • FX_MEDIA_INVALID (0x02) 媒体无效
  • FX_FILE _CORRUPT (0x08) 文件已损坏
  • FX_FAT_READ_ERROR (0x03) 无法读取 FAT 条目
  • FX_NO_MORE_SPACE (0x0A) 不再有空间来完成该操作
  • FX_SECTOR_INVALID (0x89) 扇区无效
  • FX_PTR_ERROR (0x18) 媒体或目标指针无效。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例

FX_MEDIA     my_media;
UINT         status; attributes; year; month; day;
CHAR         entry_name[FX_MAX_LONG_NAME_LEN];
ULONG        size;
UINT         hour; minute; second;
/* Retrieve information about the directory entry "myfile.txt".*/
status = fx_directory_information_get(&my_media, "myfile.txt", &attributes, &size,
                                      &year, &month, &day,
                                      &hour, &minute, &second);
/* If status equals FX_SUCCESS, the directory entry information is available in the local variables. */

另请参阅

  • fx_directory_attributes_read
  • fx_directory_attributes_set
  • fx_directory_create
  • fx_directory_default_get
  • fx_directory_default_set
  • fx_directory_delete
  • fx_directory_first_entry_find
  • fx_directory_first_full_entry_find
  • fx_directory_local_path_clear
  • fx_directory_local_path_get
  • fx_directory_local_path_restore
  • fx_directory_local_path_set
  • fx_directory_long_name_get
  • fx_directory_name_test
  • fx_directory_next_entry_find
  • fx_directory_next_full_entry_find
  • fx_directory_rename
  • fx_directory_short_name_get
  • fx_unicode_directory_create
  • fx_unicode_directory_rename

fx_directory_local_path_clear

清除默认本地路径

原型

UINT fx_directory_local_path_clear(FX_MEDIA *media_ptr);

说明

此服务清除为调用线程设置的之前的本地路径。

输入参数

  • media_ptr:指向先前打开的媒体的指针。

返回值

  • FX_SUCCESS (0x00) 成功清除本地路径。
  • FX_MEDIA_NOT_OPEN (0x11) 指定的媒体当前未打开
  • FX_NOT_IMPLEMENTED (0x22) 已定义 FX_NO_LCOAL_PATH
  • FX_PTR_ERROR (0x18) 媒体指针无效

允许来自

线程数

示例

FX_MEDIA             my_media;
UINT                 status;
/* Clear the previously setup local path for this media. */
status = fx_directory_local_path_clear(&my_media);
/* If status equals FX_SUCCESS the local path is cleared. */

另请参阅

  • fx_directory_attributes_read
  • fx_directory_attributes_set
  • fx_directory_create
  • fx_directory_default_get
  • fx_directory_default_set
  • fx_directory_delete
  • fx_directory_first_entry_find
  • fx_directory_first_full_entry_find
  • fx_directory_information_get
  • fx_directory_local_path_get
  • fx_directory_local_path_restore
  • fx_directory_local_path_set
  • fx_directory_long_name_get
  • fx_directory_name_test
  • fx_directory_next_entry_find
  • fx_directory_next_full_entry_find
  • fx_directory_rename
  • fx_directory_short_name_get
  • fx_unicode_directory_create
  • fx_unicode_directory_rename

fx_directory_local_path_get

获取当前的本地路径字符串。

原型

UINT fx_directory_local_path_clear(
    FX_MEDIA *media_ptr,
    CHAR **return_path_name);

说明

此服务返回指定媒体的本地路径指针。 如果没有设置本地路径,则会向调用方返回 NULL。

输入参数

  • media_ptr:指向媒体控制块的指针。
  • return_path_name:指向本地路径字符串要存储的目标字符串指针的指针。

返回值

  • FX_SUCCESS (0x00) 成功获取本地路径。
  • FX_MEDIA_NOT_OPEN (0x11) 指定的媒体当前未打开
  • FX_NOT_IMPLEMENTED (0x22) NX_NO_LCOAL_PATH
  • FX_PTR_ERROR (0x18) 媒体指针无效

允许来自

线程数

示例

FX_MEDIA         my_media;
CHAR             *my_path;
UINT             status;
/* Retrieve the current local path string. */
status = fx_directory_local_path_get(&my_media, &my_path);
/* If status equals FX_SUCCESS, "my_path" points to the local path string. */

另请参阅

  • fx_directory_attributes_read
  • fx_directory_attributes_set
  • fx_directory_create
  • fx_directory_default_get
  • fx_directory_default_set
  • fx_directory_delete
  • fx_directory_first_entry_find
  • fx_directory_first_full_entry_find
  • fx_directory_information_get
  • fx_directory_local_path_clear
  • fx_directory_local_path_restore
  • fx_directory_local_path_set
  • fx_directory_long_name_get
  • fx_directory_name_test
  • fx_directory_next_entry_find
  • fx_directory_next_full_entry_find
  • fx_directory_rename
  • fx_directory_short_name_get
  • fx_unicode_directory_create
  • fx_unicode_directory_rename

fx_directory_local_path_restore

还原以前的本地路径。

原型

UINT fx_directory_local_path_restore(
    FX_MEDIA *media_ptr,
    FX_LOCAL_PATH *local_path_ptr);

说明

此服务将还原以前设置的本地路径。 设置在此本地路径上的目录搜索位置也会被存储,这使得此例程在应用程序的递归目录遍历中非常有用。

重要

每个本地路径包含一个大小为 FX_MAXIMUM_PATH 的本地路径字符串,默认为 256 个字符。 此内部路径字符串不由 FileX 使用,仅为应用程序的使用而提供。 如果 FX_LOCAL_PATH 将被声明为一个局部变量,用户应注意堆栈会随着该结构的大小而增长。 欢迎用户减小 FX_MAXIMUM_PATH 的大小,并重新构建 FileX 库源。

输入参数

  • media_ptr:指向媒体控制块的指针。
  • local_path_ptr:指向先前设置的本地路径的指针。 请务必确保此指针确实指向之前使用的并仍保持不变的本地路径。

返回值

  • FX_SUCCESS (0x00) 成功还原本地路径。
  • FX_MEDIA_NOT_OPEN (0x11) 指定的媒体当前未打开。
  • FX_NOT_IMPLEMENTED (0x22) 已定义 FX_NO_LCOAL_PATH。
  • FX_PTR_ERROR (0x18) 媒体或本地路径指针无效。

允许来自

线程数

示例

FX_MEDIA                  my_media;
FX_LOCAL_PATH             my_previous_local_path;
UINT                      status;
/* Restore the previous local path. */
status = fx_directory_local_path_restore(&my_media, &my_previous_local_path);
/* If status equals FX_SUCCESS, the previous local path has been restored. */

另请参阅

  • fx_directory_attributes_read
  • fx_directory_attributes_set
  • fx_directory_create
  • fx_directory_default_get
  • fx_directory_default_set
  • fx_directory_delete
  • fx_directory_first_entry_find
  • fx_directory_first_full_entry_find
  • fx_directory_information_get
  • fx_directory_local_path_clear
  • fx_directory_local_path_get
  • fx_directory_local_path_set
  • fx_directory_long_name_get
  • fx_directory_name_test
  • fx_directory_next_entry_find
  • fx_directory_next_full_entry_find
  • fx_directory_rename
  • fx_directory_short_name_get
  • fx_unicode_directory_create
  • fx_unicode_directory_rename

fx_directory_local_path_set

设置特定于线程的本地路径

原型

UINT fx_directory_local_path_set(
    FX_MEDIA *media_ptr,
    FX_LOCAL_PATH *local_path_ptr,
    CHAR *new_path_name);

说明

此服务按 new_path_string 指定的方式设置特定于线程的路径。 成功完成此例程后,local_path_ptr 中存储的本地路径信息将优先于此线程所执行的所有文件和目录操作的全局媒体路径。 这不会影响系统中的任何其他线程。

重要

本地路径字符串的默认大小为 256 个字符;通过修改 fx_api.h 中的 FX_MAXIMUM_PATH 并重新生成整个 FileX 库可以更改大小。 字符串路径会保留用于应用程序,不会由 FileX 在内部使用。

重要

对于应用程序提供的名称,FileX 支持反斜杠 (\) 和正斜杠字符串来分隔目录、子目录和文件名。 但是,FileX 仅在返回到应用程序的路径中使用反斜杠字符。

输入参数

  • media_ptr:指向先前打开的媒体的指针。
  • local_path_ptr:保存特定于线程的本地路径信息的目标。 将来可以向本地路径还原功能提供此结构的地址。
  • new_path_name:指定安装程序的本地路径。

返回值

  • FX_SUCCESS (0x00) 成功设置默认目录。
  • FX_MEDIA_NOT_OPEN (0x11) 指定的媒体未打开。
  • FX_NOT_IMPLEMENTED (0x22) FX_NO_LOCAL_PATH
  • FX_INVALID_PATH (0x0D) 找不到新目录。
  • FX_NOT_IMPLEMENTED (0x22)- 已定义 FX_NO_LOCAL_PATH。
  • FX_PTR_ERROR (0x18) 媒体或本地路径指针无效。

允许来自

线程数

示例

FX_MEDIA         my_media;
UINT             status;
FX_LOCAL_PATH     my_previous_local_path;
/* Set the local path to \abc\def\ghi. */
status = fx_directory_local_path_set (&my_media,&local_path,"\\abc\\def\\ghi");

/* If status equals FX_SUCCESS, the default directory for this thread
is \abc\def\ghi. All subsequent file operations that do not explicitly
specify a path will default to this directory. Note that the character
"\" serves as an escape character in a string. To represent the
character "\", use the construct "\\".*/

另请参阅

  • fx_directory_attributes_read
  • fx_directory_attributes_set
  • fx_directory_create
  • fx_directory_default_get
  • fx_directory_default_set
  • fx_directory_delete
  • fx_directory_first_entry_find
  • fx_directory_first_full_entry_find
  • fx_directory_information_get
  • fx_directory_local_path_clear
  • fx_directory_local_path_get
  • fx_directory_local_path_restore
  • fx_directory_long_name_get
  • fx_directory_name_test
  • fx_directory_next_entry_find
  • fx_directory_next_full_entry_find
  • fx_directory_rename
  • fx_directory_short_name_get
  • fx_unicode_directory_create
  • fx_unicode_directory_rename

fx_directory_long_name_get

根据目录的短名称获取其长名称。

原型

UINT fx_directory_long_name_get(
    FX_MEDIA *media_ptr,
    CHAR *short_name,
    CHAR *long_name);

说明

此服务检索与提供的短(8.3 格式)名称关联的长名称(如果有)。 短名称可以是文件名或目录名。

输入参数

  • media_ptr:指向媒体控制块的指针。
  • short_name:指向源短名称(8.3 格式)的指针。
  • long_name:指向长名称的目标的指针。 如果没有长名称,则返回短名称。 请注意,长名称的目标必须足够大,才能容纳 FX_MAX_LONG_NAME_LEN 个字符。

返回值

  • FX_SUCCESS (0x00) 成功获取长名称
  • FX_NOT_FOUND (0x04) 未找到短名称
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误
  • FX_MEDIA_INVALID (0x02) 媒体无效
  • FX_FILE_CORRUPT (0x08) 文件已损坏
  • FX_SECTOR_INVALID (0x89) 扇区无效
  • FX_FAT_READ_ERROR (0x03) 无法读取 FAT 条目
  • FX_NO_MORE_SPACE (0x0A) 不再有空间来完成该操作
  • FX_PTR_ERROR (0x18) 媒体或名称指针无效
  • FX_CALLER_ERROR (0x20) 调用方不是线程

允许来自

线程数

示例

FX_MEDIA            my_media;
UCHAR               my_long_name[FX_MAX_LONG_NAME_LEN];
/* Retrieve the long name associated with "TEXT~01.TXT". */
status = fx_directory_long_name_get(&my_media, "TEXT~01.TXT", my_long_name);
/* If status is FX_SUCCESS the long name was successfully retrieved. */

另请参阅

  • fx_directory_attributes_read
  • fx_directory_attributes_set
  • fx_directory_create
  • fx_directory_default_get
  • fx_directory_default_set
  • fx_directory_delete
  • fx_directory_first_entry_find
  • fx_directory_first_full_entry_find
  • fx_directory_information_get
  • fx_directory_local_path_clear
  • fx_directory_local_path_get
  • fx_directory_local_path_restore
  • fx_directory_local_path_set
  • fx_directory_name_test
  • fx_directory_next_entry_find
  • fx_directory_next_full_entry_find
  • fx_directory_rename
  • fx_directory_short_name_get
  • fx_unicode_directory_create
  • fx_unicode_directory_rename

fx_directory_long_name_get_extended

根据短名称获取长名称和扩展信息。

原型

UINT fx_directory_long_name_get_extended(
    FX_MEDIA *media_ptr,
    CHAR *short_name,
    CHAR *long_name,
    UINT long_file_name_buffer_length);

说明

此服务检索与提供的短(8.3 格式)名称关联的长名称(如果有)。 短名称可以是文件名或目录名。

输入参数

  • media_ptr:指向媒体控制块的指针。
  • short_name:指向源短名称(8.3 格式)的指针。
  • long_name:指向长名称的目标的指针。 如果没有长名称,则返回短名称。 注意:长名称的目标必须足够大,才能容纳 FX_MAX_LONG_NAME_LEN 个字符。
  • long_file_name_buffer_length:长名称缓冲区的长度。

返回值

  • FX_SUCCESS (0x00) 成功获取长名称。
  • FX_NOT_FOUND (0x04) 未找到短名称。
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误。
  • FX_MEDIA_INVALID (0x02) 媒体无效。
  • FX_FILE_CORRUPT (0x08) 文件已损坏。
  • FX_SECTOR_INVALID (0x89) 扇区无效。
  • FX_FAT_READ_ERROR (0x03) 无法读取 FAT 条目。
  • FX_NO_MORE_SPACE (0x0A) 不再有空间来完成该操作。
  • FX_PTR_ERROR (0x18) 媒体或名称指针无效。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例

FX_MEDIA        my_media;
UCHAR            my_long_name[FX_MAX_LONG_NAME_LEN];
/* Retrieve the long name associated with "TEXT~01.TXT". */

status = fx_directory_long_name_get_extended(&my_media,
    "TEXT~01.TXT", my_long_name, sizeof(my_long_name));

/* If status is FX_SUCCESS the long name was successfully retrieved. */

另请参阅

  • fx_directory_attributes_read
  • fx_directory_attributes_set
  • fx_directory_create
  • fx_directory_default_get
  • fx_directory_default_set
  • fx_directory_delete
  • fx_directory_first_entry_find
  • fx_directory_first_full_entry_find
  • fx_directory_information_get
  • fx_directory_local_path_clear
  • fx_directory_local_path_get
  • fx_directory_local_path_restore
  • fx_directory_local_path_set
  • fx_directory_long_name_get
  • fx_directory_next_entry_find
  • fx_directory_next_full_entry_find
  • fx_directory_rename
  • fx_directory_short_name_get
  • fx_unicode_directory_create
  • fx_unicode_directory_rename

fx_directory_name_test

测试指定目录。

原型

UINT fx_directory_name_test(
    FX_MEDIA *media_ptr,
    CHAR *directory_name);

说明

此服务将测试提供的名称是否为目录。 如果是,则返回 FX_SUCCESS。

输入参数

  • media_ptr:指向媒体控制块的指针。
  • directory_name:指向目录条目名称的指针。

返回值

  • FX_SUCCESS (0x00) 提供的名称是目录。
  • FX_MEDIA_NOT_OPEN (0x11) 指定的媒体未打开
  • FX_NOT_FOUND (0x04) 找不到目录条目。
  • FX_NOT_DIRECTORY (0x0E) 条目不是目录
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误。
  • FX_MEDIA_INVALID (0x02) 媒体无效。
  • FX_FILE_CORRUPT (0x08) 文件已损坏。
  • FX_SECTOR_INVALID (0x89) 扇区无效。
  • FX_FAT_READ_ERROR (0x03) 无法读取 FAT 条目。
  • FX_NO_MORE_SPACE (0x0A) 不再有空间来完成该操作。
  • FX_PTR_ERROR (0x18) 媒体或名称指针无效。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例

FX_MEDIA        my_media;
UNIT             status;
/* Check to see if the name "abc" is directory */

status = fx_directory_name_test(&my_media, "abc");

/* If status equals FX_SUCCESS "abc" is a directory. */

另请参阅

  • fx_directory_attributes_read
  • fx_directory_attributes_set
  • fx_directory_create
  • fx_directory_default_get
  • fx_directory_default_set
  • fx_directory_delete
  • fx_directory_first_entry_find
  • fx_directory_first_full_entry_find
  • fx_directory_information_get
  • fx_directory_local_path_clear
  • fx_directory_local_path_get
  • fx_directory_local_path_restore
  • fx_directory_local_path_set
  • fx_directory_long_name_get
  • fx_directory_next_entry_find
  • fx_directory_next_full_entry_find
  • fx_directory_rename
  • fx_directory_short_name_get
  • fx_unicode_directory_create

fx_directory_next_entry_find

查找下一个目录条目。

原型

UINT fx_directory_next_entry_find(
    FX_MEDIA *media_ptr,
    CHAR *return_entry_name);

说明

此服务返回当前默认目录中的下一个条目名称。

警告

如果使用非本地路径,则还务必在目录遍历发生时(通过 ThreadX 信号灯、线程优先级)阻止其他应用程序线程更改此目录。 否则,可能获得无效结果。

输入参数

  • media_ptr:指向媒体控制块的指针。
  • return_entry_name:指向默认目录中下一个条目名称的目标的指针。 此指针指向的缓冲区必须足够大,才能容纳由 FX_MAX_LONG_NAME_LEN 定义的最大大小的 FileX 名称。

返回值

  • FX_SUCCESS (0x00) 成功找到下一个条目
  • FX_MEDIA_NOT_OPEN (0x11) 指定的媒体未打开。
  • FX_NO_MORE_ENTRIES (0x0F) 此目录中不再有条目。
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误。
  • FX_WRITE_PROTECT (0x23) 指定的媒体受到写入保护。
  • FX_FILE_CORRUPT (0x08) 文件已损坏。
  • FX_SECTOR_INVALID (0x89) 扇区无效。
  • FX_FAT_READ_ERROR (0x03) 无法读取 FAT 条目。
  • FX_PTR_ERROR (0x18) 媒体指针无效。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例

FX_MEDIA        my_media;
CHAR            next_name[FX_MAX_LONG_NAME_LEN];
UINT            status;

/* Retrieve the next entry in the default directory. */

status = fx_directory_next_entry_find(&my_media, next_name);

/* If status equals TX_SUCCESS, the name of the next directory entry is in "next_name". */

另请参阅

  • fx_directory_attributes_read
  • fx_directory_attributes_set
  • fx_directory_create
  • fx_directory_default_get
  • fx_directory_default_set
  • fx_directory_delete
  • fx_directory_first_entry_find
  • fx_directory_first_full_entry_find
  • fx_directory_information_get
  • fx_directory_local_path_clear
  • fx_directory_local_path_get
  • fx_directory_local_path_restore
  • fx_directory_local_path_set
  • fx_directory_long_name_get
  • fx_directory_name_test
  • fx_directory_next_full_entry_find
  • fx_directory_rename
  • fx_directory_short_name_get
  • fx_unicode_directory_create
  • fx_unicode_directory_rename

fx_directory_next_full_entry_find

获取包含完整信息的下一个目录条目。

原型

UINT fx_directory_next_full_entry_find(
    FX_MEDIA *media_ptr,
    CHAR *directory_name,
    UINT *attributes, 
    ULONG *size,
    UINT *year, 
    UINT *month, 
    UINT *day,
    UINT *hour, 
    UINT *minute, 
    UINT *second);

说明

此服务检索默认目录中的下一个条目名称,并将其复制到指定目标。 它还会返回有关其他输入参数指定的条目的完整信息。

警告

指定的目标必须足够大,才能容纳 FX_MAX_LONG_NAME_LEN 定义的最大大小的 FileX 名称

警告

如果使用非本地路径,则务必在目录遍历发生时(通过 ThreadX 信号灯、互斥或优先级更改)阻止其他应用程序线程更改此目录。 否则,可能获得无效结果。

输入参数

  • media_ptr:指向媒体控制块的指针。
  • directory_name:指向目录条目名称的目标的指针。 大小必须至少为 FX_MAX_LONG_NAME_LEN。
  • attributes:如果非 Null,则为指向条目属性要放置的目标的指针。属性以位图格式返回,具有以下可能的设置。
    • FX_READ_ONLY (0x01)
    • FX_HIDDEN (0x02)
    • FX_SYSTEM (0x04)
    • FX_VOLUME (0x08)
    • FX_DIRECTORY (0x10)
    • FX_ARCHIVE (0x20)
  • size:如果非 Null,则为指向条目大小(字节)的目标的指针。
  • month:如果非 Null,则为指向条目的修改月份的目标的指针。
  • year:如果非 Null,则为指向条目的修改年份的目标的指针。
  • day:如果非 Null,则为指向条目的修改日期的目标的指针。
  • hour:如果非 Null,则为指向条目的修改时间(小时)的目标的指针。
  • minute:如果非 Null,则为指向条目的修改时间(分钟)的目标的指针。
  • second:如果非 Null,则为指向条目的修改时间(秒)的目标的指针。

返回值

  • FX_SUCCESS (0x00) 成功找到下一个目录条目。
  • FX_MEDIA_NOT_OPEN (0x11) 指定的媒体未打开。
  • FX_NO_MORE_ENTRIES (0x0F) 此目录中不再有条目。
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误。
  • FX_FILE_CORRUPT (0x08) 文件已损坏。
  • FX_SECTOR_INVALID (0x89) 扇区无效。
  • FX_FAT_READ_ERROR (0x03) 无法读取 FAT 条目。
  • FX_NO_MORE_SPACE (0x0A) 不再有空间来完成该操作。
  • FX_MEDIA_INVALID (0x02) 媒体无效。
  • FX_PTR_ERROR (0x18) 媒体指针无效或所有输入参数均为 NULL。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例

FX_MEDIA    my_media;
UINT        status;
CHAR        entry_name[FX_MAX_LONG_NAME_LEN];
UINT        attributes;
ULONG       size;
UINT        year;
UINT        month;
UINT        day;
UINT        hour;
UINT        minute;
UINT        second;

/* Get the next directory entry in the default directory with full information. */
status = fx_directory_next_full_entry_find(&my_media, entry_name, &attributes, &size,
                                           &year, &month, &day,
                                           &hour, &minute, &second);

/* If status equals FX_SUCCESS, the entry's information is in the local variables. */

另请参阅

  • fx_directory_attributes_read
  • fx_directory_attributes_set
  • fx_directory_create
  • fx_directory_default_get
  • fx_directory_default_set
  • fx_directory_delete
  • fx_directory_first_entry_find
  • fx_directory_first_full_entry_find
  • fx_directory_information_get
  • fx_directory_local_path_clear
  • fx_directory_local_path_get
  • fx_directory_local_path_restore
  • fx_directory_local_path_set
  • fx_directory_long_name_get
  • fx_directory_name_test
  • fx_directory_next_entry_find
  • fx_directory_rename
  • fx_directory_short_name_get
  • fx_unicode_directory_create
  • fx_unicode_directory_rename

fx_directory_rename

重命名指定的目录。

原型

UINT fx_directory_rename(
    FX_MEDIA *media_ptr,
    CHAR *old_directory_name,
    CHAR *new_directory_name);

说明

此服务将目录名称更改为指定的新目录名称。 在指定路径的相对路径或默认路径中还可以完成重命名。 如果在新目录名称中指定路径,则重命名的目录将被有效地移动到指定的路径。 如果未指定路径,则重命名的目录将被放置在当前默认路径中。

输入参数

  • media_ptr:指向媒体控制块的指针。
  • old_directory_name:指向当前目录名称的指针。
  • :指向新目录名称的指针。

返回值

  • FX_SUCCESS (0x00) 成功重命名目录。
  • FX_MEDIA_NOT_OPEN (0x11) 指定的媒体未打开。
  • FX_NOT_FOUND (0x04) 找不到目录条目。
  • FX_NOT_DIRECTORY (0x0E) 条目不是目录。
  • FX_INVALID_NAME (0x0C) 新目录名称无效。
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误。
  • FX_WRITE_PROTECT (0x23) 指定的媒体受到写入保护。
  • FX_FILE_CORRUPT (0x08) 文件已损坏。
  • FX_SECTOR_INVALID (0x89) 扇区无效。
  • FX_FAT_READ_ERROR (0x03) 无法读取 FAT 条目。
  • FX_NO_MORE_SPACE (0x0A) 不再有空间来完成该操作。
  • FX_MEDIA_INVALID (0x02) 媒体无效。
  • FX_NO_MORE_ENTRIES (0x0F) 此目录中不再有条目。
  • FX_INVALID_PATH (0x0D) 目录名称中提供的路径无效。
  • FX_ALREADY_CREATED (0x0B) 已创建指定的目录。
  • FX_PTR_ERROR (0x18) 媒体指针无效。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例

FX_MEDIA         my_media;
UINT             status;

/* Change the directory "abc" to "def". */
status = fx_directory_rename(&my_media, "abc", "def");

/* If status equals FX_SUCCESS, the directory was changed to "def". */

另请参阅

  • fx_directory_attributes_read
  • fx_directory_attributes_set
  • fx_directory_create
  • fx_directory_default_get
  • fx_directory_default_set
  • fx_directory_delete
  • fx_directory_first_entry_find
  • fx_directory_first_full_entry_find
  • fx_directory_information_get
  • fx_directory_local_path_clear
  • fx_directory_local_path_get
  • fx_directory_local_path_restore
  • fx_directory_local_path_set
  • fx_directory_long_name_get
  • fx_directory_name_test
  • fx_directory_next_entry_find
  • fx_directory_next_full_entry_find
  • fx_directory_short_name_get
  • fx_unicode_directory_create
  • fx_unicode_directory_rename

fx_directory_short_name_get

根据指定目录的长名称获取其短名称。

原型

UINT fx_directory_short_name_get(
    FX_MEDIA *media_ptr,
    CHAR *long_name, 
    CHAR *short_name);

说明

此服务检测与提供的长名称关联的短(8.3 格式)名称。 长名称可以是文件名或目录名。

输入参数

  • media_ptr:指向媒体控制块的指针。
  • long_name:指向源长名称的指针。
  • short_name:指向目标短名称(8.3 格式)的指针。 请注意,短名称的目标必须足够大,才能容纳 14 个字符。

返回值

  • FX_SUCCESS (0x00) 成功获取短名称。
  • FX_NOT_FOUND (0x04) 未找到长名称。
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误。
  • FX_WRITE_PROTECT (0x23) 指定的媒体受到写入保护。
  • FX_FILE_CORRUPT (0x08) 文件已损坏。
  • FX_SECTOR_INVALID (0x89) 扇区无效。
  • FX_FAT_READ_ERROR (0x03) 无法读取 FAT 条目。
  • FX_NO_MORE_SPACE (0x0A) 不再有空间来完成该操作
  • FX_MEDIA_INVALID (0x02) 媒体无效。
  • FX_PTR_ERROR (0x18) 媒体或名称指针无效。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例

FX_MEDIA         my_media;
UCHAR             my_short_name[14];

/* Retrieve the short name associated with "my_really_long_name". */

status = fx_directory_short_name_get(&my_media,
    "my_really_long_name", my_short_name);

/* If status is FX_SUCCESS the short name was successfully retrieved. */

另请参阅

  • fx_directory_attributes_read
  • fx_directory_attributes_set
  • fx_directory_create
  • fx_directory_default_get
  • fx_directory_default_set
  • fx_directory_delete
  • fx_directory_first_entry_find
  • fx_directory_first_full_entry_find
  • fx_directory_information_get
  • fx_directory_local_path_clear
  • fx_directory_local_path_get
  • fx_directory_local_path_restore
  • fx_directory_local_path_set
  • fx_directory_long_name_get
  • fx_directory_name_test
  • fx_directory_next_entry_find
  • fx_directory_next_full_entry_find
  • fx_directory_rename
  • fx_unicode_directory_create
  • fx_unicode_directory_rename

fx_directory_short_name_get_extended

根据指定目录的长名称获取其短名称。

原型

UINT fx_directory_short_name_get_extended(
    FX_MEDIA *media_ptr,
    CHAR *long_name,
    CHAR *short_name,
    UINT short_file_name_length);

说明

此服务检测与提供的长名称关联的短(8.3 格式)名称。 长名称可以是文件名或目录名。

输入参数

  • media_ptr:指向媒体控制块的指针。
  • long_name:指向源长名称的指针。
  • short_name:指向目标短名称(8.3 格式)的指针。 注意:短名称的目标必须足够大,才能容纳 14 个字符。
  • short_file_name_length:短名称缓冲区的长度。

返回值

  • FX_SUCCESS (0x00) 成功获取短名称。
  • FX_NOT_FOUND (0x04) 未找到长名称。
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误。
  • FX_WRITE_PROTECT (0x23) 指定的媒体受到写入保护。
  • FX_FILE_CORRUPT (0x08) 文件已损坏。
  • FX_SECTOR_INVALID (0x89) 扇区无效。
  • FX_FAT_READ_ERROR (0x03) 无法读取 FAT 条目。
  • FX_NO_MORE_SPACE (0x0A) 不再有空间来完成该操作
  • FX_MEDIA_INVALID (0x02) 媒体无效。
  • FX_PTR_ERROR (0x18) 媒体或名称指针无效。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例

FX_MEDIA        my_media;
UCHAR            my_short_name[14];

/* Retrieve the short name associated with "my_really_long_name". */

status = fx_directory_short_name_get_extended(&my_media,
    "my_really_long_name", my_short_name, sizeof(my_short_name));

/* If status is FX_SUCCESS the short name was successfully retrieved. */

另请参阅

  • fx_directory_attributes_read
  • fx_directory_attributes_set
  • fx_directory_create
  • fx_directory_default_get
  • fx_directory_default_set
  • fx_directory_delete
  • fx_directory_first_entry_find
  • fx_directory_first_full_entry_find
  • fx_directory_information_get
  • fx_directory_local_path_clear
  • fx_directory_local_path_get
  • fx_directory_local_path_restore
  • fx_directory_local_path_set
  • fx_directory_long_name_get
  • fx_directory_name_test
  • fx_directory_next_entry_find
  • fx_directory_next_full_entry_find
  • fx_directory_rename
  • fx_unicode_directory_create
  • fx_unicode_directory_rename

fx_fault_tolerant_enable

启用容错服务。

原型

UINT fx_fault_tolerant_enable(
    FX_MEDIA *media_ptr,
    VOID *memory_buffer,
    UINT memory_size);

说明

此服务启用容错模块。 启动后,容错模块会检测文件系统是否受 FileX 容错保护。 如果没有,则服务会在文件系统上找到可用扇区,以存储文件系统事务的相关日志。 如果文件系统受 FileX 容错保护,则会将日志应用到文件系统以保持其完整性。

输入参数

  • media_ptr:指向媒体控制块的指针。
  • memory_ptr:指向容错模块用作暂存内存的内存块的指针。
  • memory_size:暂存内存的大小。 为了使容错正常工作,暂存内存大小至少应为 3072 个字节,并且必须是扇区大小的倍数。

返回值

  • FX_SUCCESS (0x00) 已成功启用容错。
  • FX_NOT_ENOUGH_MEMORY (0x91) 内存大小太小。
  • FX_BOOT_ERROR (0x01) 启动扇区错误。
  • FX_FILE_CORRUPT (0x08) 文件已损坏。
  • FX_NO_MORE_ENTRIES (0x0F) 不再有可用的免费群集。
  • FX_NO_MORE_SPACE (0x0A) 与此文件关联的媒体没有足够的可用群集。
  • FX_SECTOR_INVALID (0x89) 扇区无效
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误。
  • FX_PTR_ERROR (0x18) 媒体指针无效。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

初始化、线程

示例


/* Declare memory space used for fault tolerant. */

ULONG fault tolerant_memory[3072 / sizeof(ULONG)];

/* Enable fault tolerant. */

fx_fault_tolerant_enable(media_ptr, fault_tolerant_memory, sizeof(fault_tolerant_memory));

另请参阅

  • fx_system_initialize
  • fx_media_abort
  • fx_media_cache_invalidate
  • fx_media_check
  • fx_media_close
  • fx_media_close_notify_set
  • fx_media_exFAT_format
  • fx_media_extended_space_available
  • fx_media_flush
  • fx_media_format
  • fx_media_open
  • fx_media_open_notify_set
  • fx_media_read
  • fx_media_space_available
  • fx_media_volume_get
  • fx_media_volume_set
  • fx_media_write

fx_file_allocate

为文件分配空间

原型

UINT fx_file_allocate(
    FX_FILE *file_ptr, 
    ULONG size);

说明

此服务分配一个或多个连续群集并将其链接到指定文件的末尾。 FileX 通过将请求的大小除以每个群集的字节数来确定所需的群集数。 然后,将结果向上舍入到下一个整群集。

若要分配超过 4GB 的空间,应用程序应使用服务 fx_file_extended_allocate

输入参数

  • file_ptr:指向先前打开的文件的指针。
  • size:要为文件分配的字节数。

返回值

  • FX_SUCCESS (0x00) 文件分配成功。
  • FX_ACCESS_ERROR (0x06) 指定的文件未打开以进行写入。
  • FX_FAT_READ_ERROR (0x03) 无法读取 FAT 条目。
  • FX_FILE_CORRUPT (0x08) 文件已损坏。
  • FX_NOT_OPEN (0x07) 指定的文件当前未打开。
  • FX_NO_MORE_ENTRIES (0x0F) 不再有可用的免费群集。
  • FX_NO_MORE_SPACE (0x0A) 与此文件关联的媒体没有足够的可用群集。
  • FX_SECTOR_INVALID (0x89) 扇区无效
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误。
  • FX_WRITE_PROTECT (0x23) 指定的媒体受到写入保护。
  • FX_PTR_ERROR (0x18) 文件指针无效。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例


FX_FILE            my_file;
UINT            status;

/* Allocate 1024 bytes to the end of my_file. */

status = fx_file_allocate(&my_file, 1024);

/* If status equals FX_SUCCESS the file now has one or more
    contiguous cluster(s) that can accommodate at least 1024 bytes of user data. */

另请参阅

  • fx_file_attributes_read
  • fx_file_attributes_set
  • fx_file_best_effort_allocate
  • fx_file_close- fx_file_create
  • fx_file_date_time_set
  • fx_file_delete
  • fx_file_extended_allocate
  • fx_file_extended_best_effort_allocate
  • fx_file_extended_relative_seek
  • fx_file_extended_seek
  • fx_file_extended_truncate
  • fx_file_extended_truncate_release
  • fx_file_open- fx_file_read
  • fx_file_relative_seek
  • fx_file_rename- fx_file_seek
  • fx_file_truncate
  • fx_file_truncate_release
  • fx_file_write
  • fx_file_write_notify_set
  • fx_unicode_file_create
  • fx_unicode_file_rename
  • fx_unicode_name_get
  • fx_unicode_short_name_get

fx_file_attributes_read

读取文件的属性。

原型

    UINT fx_file_attributes_read(
    FX_MEDIA *media_ptr,
    CHAR *file_name,
    UINT *attributes_ptr);

说明

此服务从指定的媒体读取文件的属性。

输入参数

  • media_ptr:指向媒体控制块的指针。
  • file_name:指向请求的文件的名称的指针(目录路径是可选的)。
  • attributes_ptr:指向文件属性要放置的目标的指针。 文件属性以位图格式返回,具有以下可能的设置。
    • FX_READ_ONLY (0x01)
    • FX_HIDDEN (0x02)
    • FX_SYSTEM (0x04)
    • FX_VOLUME (0x08)
    • FX_DIRECTORY (0x10)
    • FX_ARCHIVE (0x20)

返回值

  • FX_SUCCESS (0x00) 成功读取属性。
  • FX_MEDIA_NOT_OPEN (0x11) 指定的媒体未打开。
  • FX_NOT_FOUND (0x04) 在媒体中未找到指定的文件。
  • FX_NOT_A_FILE (0x05) 指定的文件是一个目录。
  • FX_SECTOR_INVALID (0x89) 扇区无效。
  • FX_FAT_READ_ERROR (0x03) 无法读取 FAT 条目。
  • FX_NO_MORE_ENTRIES (0x0F) 不再有 FAT 条目。
  • FX_NO_MORE_SPACE (0x0A) 不再有空间来完成该操作
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误。
  • FX_PTR_ERROR (0x18) 媒体或属性指针无效。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例


FX_MEDIA         my_media;
UINT             status;
UINT             attributes;

/* Retrieve the attributes of "myfile.txt" from the specified media. */

status = fx_file_attributes_read(&my_media, "myfile.txt", &attributes);

/* If status equals FX_SUCCESS, "attributes"
    contains the file attributes for "myfile.txt". */

另请参阅

  • fx_file_allocate
  • fx_file_attributes_set
  • fx_file_best_effort_allocate
  • fx_file_close- fx_file_create
  • fx_file_date_time_set
  • fx_file_delete
  • fx_file_extended_allocate
  • fx_file_extended_best_effort_allocate
  • fx_file_extended_relative_seek
  • fx_file_extended_seek
  • fx_file_extended_truncate
  • fx_file_extended_truncate_release
  • fx_file_open
  • fx_file_read
  • fx_file_relative_seek
  • fx_file_rename
  • fx_file_seek
  • fx_file_truncate
  • fx_file_truncate_release
  • fx_file_write
  • fx_file_write_notify_set
  • fx_unicode_file_create
  • fx_unicode_file_rename
  • fx_unicode_name_get
  • fx_unicode_short_name_get

fx_file_attributes_set

设置指定文件的属性。

原型

UINT fx_file_attributes_set(
    FX_MEDIA *media_ptr,
    CHAR *file_name,
    UINT attributes);

说明

此服务将文件的属性设置为调用方指定的属性。

警告

仅允许应用程序使用此服务修改文件属性的子集。 任何设置其他属性的尝试都将导致错误。

输入参数

  • media_ptr:指向媒体控制块的指针。
  • file_name:指向请求的文件的名称的指针**(目录路径是可选的)。
  • attributes:文件的新属性。 有效文件属性定义如下:
    • FX_READ_ONLY (0x01)
    • FX_HIDDEN (0x02)
    • FX_SYSTEM (0x04)
    • FX_ARCHIVE (0x20)

返回值

  • FX_SUCCESS (0x00) 成功设置属性。
  • FX_ACCESS_ERROR (0x06) 文件处于打开状态,并且无法设置其属性。
  • FX_FAT_READ_ERROR (0x03) 无法读取 FAT 条目。
  • FX_FILE_CORRUPT (0x08) 文件已损坏。
  • FX_MEDIA_NOT_OPEN (0x11) 指定的媒体未打开。
  • FX_NO_MORE_ENTRIES (0x0F) FAT 表或 exFAT 群集图中不再有条目。
  • FX_NO_MORE_SPACE (0x0A) 不再有空间来完成该操作。
  • FX_NOT_FOUND (0x04) 在媒体中未找到指定的文件。
  • FX_NOT_A_FILE (0x05) 指定的文件是一个目录。
  • FX_SECTOR_INVALID (0x89) 扇区无效
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误。
  • FX_WRITE_PROTECT (0x23) 指定的媒体受到写入保护。
  • FX_MEDIA_INVALID (0x02) 媒体无效。
  • FX_PTR_ERROR (0x18) 媒体指针无效。
  • FX_INVALID_ATTR (0x19) 选择了无效属性。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例


FX_MEDIA         my_media;
UINT             status;

/* Set the attributes of "myfile.txt" to read-only. */

status = fx_file_attributes_set(&my_media, "myfile.txt", FX_READ_ONLY);

/* If status equals FX_SUCCESS, the file is now read-only. */

另请参阅

  • fx_file_allocate
  • fx_file_attributes_read
  • fx_file_best_effort_allocate
  • fx_file_close
  • fx_file_create
  • fx_file_date_time_set
  • fx_file_delete
  • fx_file_extended_allocate
  • fx_file_extended_best_effort_allocate
  • fx_file_extended_relative_seek
  • fx_file_extended_seek
  • fx_file_extended_truncate
  • fx_file_extended_truncate_release
  • fx_file_open
  • fx_file_read
  • fx_file_relative_seek
  • fx_file_rename
  • fx_file_seek
  • fx_file_truncate
  • fx_file_truncate_release
  • fx_file_write
  • fx_file_write_notify_set
  • fx_unicode_file_create
  • fx_unicode_file_rename
  • fx_unicode_name_get
  • fx_unicode_short_name_get

fx_file_best_effort_allocate

尽最大努力为文件分配空间。

原型

UINT fx_file_best_effort_allocate(
    FX_FILE *file_ptr,
    ULONG size,
    ULONG *actual_size_allocated);

说明

此服务分配一个或多个连续群集并将其链接到指定文件的末尾。 FileX 通过将请求的大小除以每个群集的字节数来确定所需的群集数。 然后,将结果向上舍入到下一个整群集。 如果媒体中没有足够的连续可用群集,此服务会将连续群集的最大可用块链接到该文件。 实际分配给该文件的空间量将返回给调用方。

若要分配超过 4GB 的空间,应用程序应使用服务 fx_file_extended_best_effort_allocate。

输入参数

  • file_ptr:指向先前打开的文件的指针。
  • size:要为文件分配的字节数。

返回值

  • FX_SUCCESS (0x00) 成功完成最大工作量的文件分配。
  • FX_ACCESS_ERROR (0x06) 指定的文件未打开以进行写入。
  • FX_NOT_OPEN (0x07) 指定的文件当前未打开。
  • FX_NO_MORE_SPACE (0x0A) 与此文件关联的媒体没有足够的可用群集。
  • FX_FILE_CORRUPT (0x08) 文件已损坏。
  • FX_SECTOR_INVALID (0x89) 扇区无效。
  • FX_FAT_READ_ERROR (0x03) 无法读取 FAT 条目。
  • FX_NO_MORE_ENTRIES (0x0F) 不再有 FAT 条目。
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误。
  • FX_WRITE_PROTECT (0x23) 指定的媒体受到写入保护。
  • FX_PTR_ERROR (0x18) 文件指针或目标无效。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例


FX_FILE         my_file;
UINT             status;
ULONG             actual_allocation;

/* Attempt to allocate 1024 bytes to the end of my_file. */

status = fx_file_best_effort_allocate(&my_file, 1024, &actual_allocation);

/* If status equals FX_SUCCESS, the number of bytes
    allocated to the file is found in actual_allocation. */

另请参阅

  • fx_file_allocate
  • fx_file_attributes_read
  • fx_file_attributes_set
  • fx_file_close
  • fx_file_create
  • fx_file_date_time_set
  • fx_file_delete
  • fx_file_extended_allocate
  • fx_file_extended_best_effort_allocate
  • fx_file_extended_relative_seek
  • fx_file_extended_seek
  • fx_file_extended_truncate
  • fx_file_extended_truncate_release
  • fx_file_open
  • fx_file_read
  • fx_file_relative_seek
  • fx_file_rename
  • fx_file_seek
  • fx_file_truncate
  • fx_file_truncate_release
  • fx_file_write
  • fx_file_write_notify_set
  • fx_unicode_file_create
  • fx_unicode_file_rename
  • fx_unicode_name_get
  • fx_unicode_short_name_get

fx_file_close

关闭文件。

原型

UINT fx_file_close(FX_FILE *file_ptr);

说明

此服务关闭指定的文件。 如果文件已打开以进行写入,并且该文件已修改,则此服务通过使用新大小和当前系统的时间和日期更新其目录条目来完成文件修改过程。

输入参数

  • file_ptr:指向先前打开的文件的指针。

返回值

  • FX_SUCCESS (0x00) 成功关闭文件。
  • FX_NOT_OPEN (0x07) 指定的文件未打开。
  • FX_FILE_CORRUPT (0x08) 文件已损坏。
  • FX_SECTOR_INVALID (0x89) 扇区无效。
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误。
  • FX_PTR_ERROR (0x18) 媒体或属性指针无效。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例


FX_FILE        my_file;
UINT        status;

/* Close the previously opened file "my_file". */
status = fx_file_close(&my_file);

/* If status equals FX_SUCCESS, the file was closed successfully. */

另请参阅

  • fx_file_allocate
  • fx_file_attributes_read
  • fx_file_attributes_set
  • fx_file_best_effort_allocate
  • fx_file_create
  • fx_file_date_time_set
  • fx_file_delete
  • fx_file_extended_allocate
  • fx_file_extended_best_effort_allocate
  • fx_file_extended_relative_seek
  • fx_file_extended_seek
  • fx_file_extended_truncate
  • fx_file_extended_truncate_release
  • fx_file_open
  • fx_file_read
  • fx_file_relative_seek
  • fx_file_rename
  • fx_file_seek
  • fx_file_truncate
  • fx_file_truncate_release
  • fx_file_write
  • fx_file_write_notify_set
  • fx_unicode_file_create
  • fx_unicode_file_rename
  • fx_unicode_name_get
  • fx_unicode_short_name_get

fx_file_create

创建文件

原型

UINT fx_file_create(
    FX_MEDIA *media_ptr,
    CHAR *file_name);

说明

此服务在默认目录或文件名提供的目录路径中创建指定的文件。

警告

此服务创建一个长度为零的文件,即未分配任何群集。 然后在后续文件写入时自动进行分配,也可以使用 fx_file_allocate 服务或用于超过 4GB 空间的 fx_file_extended_allocate 服务提前完成分配。

输入参数

  • media_ptr:指向媒体控制块的指针。
  • file_name:指向要创建的文件的名称的指针(目录路径是可选的)。

返回值

  • FX_SUCCESS (0x00) 成功创建文件。
  • FX_MEDIA_NOT_OPEN (0x11) 指定的媒体未打开。
  • FX_ALREADY_CREATED (0x0B) 指定的文件已创建。
  • FX_NO_MORE_SPACE (0x0A) 根目录中不再有条目,或者不再有可用群集。
  • FX_INVALID_PATH (0x0D) 文件名中提供的路径无效。
  • FX_INVALID_NAME (0x0C) 文件名无效。
  • FX_FILE_CORRUPT (0x08) 文件已损坏。
  • FX_SECTOR_INVALID (0x89) 扇区无效。
  • FX_FAT_READ_ERROR (0x03) 无法读取 FAT 条目。
  • FX_NO_MORE_ENTRIES (0x0F) 不再有 FAT 条目。
  • FX_NO_MORE_SPACE (0x0A) 不再有空间来完成该操作
  • FX_MEDIA_INVALID (0x02) 媒体无效。
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误。
  • FX_WRITE_PROTECT (0x23) 基础媒体受到写入保护。
  • FX_PTR_ERROR (0x18) 媒体或文件名指针无效。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例


FX_MEDIA         my_media;
UINT             status;

/* Create a file called "myfile.txt" in the
    root or the default directory of the media. */

status = fx_file_create(&my_media, "myfile.txt");

/* If status equals FX_SUCCESS, a zero sized file named "myfile.txt". */

另请参阅

  • fx_file_allocate
  • fx_file_attributes_read
  • fx_file_attributes_set
  • fx_file_best_effort_allocate
  • fx_file_close
  • fx_file_date_time_set
  • fx_file_delete
  • fx_file_extended_allocate
  • fx_file_extended_best_effort_allocate
  • fx_file_extended_relative_seek
  • fx_file_extended_seek
  • fx_file_extended_truncate
  • fx_file_extended_truncate_release
  • fx_file_open
  • fx_file_read
  • fx_file_relative_seek
  • fx_file_rename
  • fx_file_seek
  • fx_file_truncate
  • fx_file_truncate_release
  • fx_file_write
  • fx_file_write_notify_set
  • fx_unicode_file_create
  • fx_unicode_file_rename
  • fx_unicode_name_get
  • fx_unicode_short_name_get

fx_file_date_time_set

设置文件的日期和时间。

原型

UINT fx_file_date_time_set(
    FX_MEDIA *media_ptr, 
    CHAR *file_name,
    UINT year, 
    UINT month, 
    UINT day,
    UINT hour, 
    UINT minute, 
    UINT second);

说明

此服务设置指定文件的日期和时间。


FX_MEDIA         my_media;
/* Set the date/time of "my_file". */
status = fx_file_date_time_set(&my_media, "my_file", 1999, 12, 31, 23, 59, 59);

/* If status is FX_SUCCESS the file's date/time was successfully set. /*

输入参数

  • media_ptr:指向媒体控制块的指针。
  • file_name:指向文件名称的指针。
  • year:年份的值(1980-2107,包含端值)。
  • month:月份的值(1-12,包含端值)。
  • day:日期的值(1-31,包含端值)。
  • hour:小时的值(0-23,包含端值)。
  • minute:分钟的值(0-59,包含端值)。
  • second:秒的值(0-59,包含端值)。

返回值

  • FX_SUCCESS (0x00) 成功设置日期/时间。
  • FX_MEDIA_NOT_OPEN (0x11) 指定的媒体未打开。
  • FX_NOT_FOUND (0x04) 未找到文件。
  • FX_FILE_CORRUPT (0x08) 文件已损坏。
  • FX_SECTOR_INVALID (0x89) 扇区无效。
  • FX_FAT_READ_ERROR (0x03) 无法读取 FAT 条目。
  • FX_NO_MORE_ENTRIES (0x0F) 不再有 FAT 条目。
  • FX_NO_MORE_SPACE (0x0A) 不再有空间来完成该操作。
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误。
  • FX_WRITE_PROTECT (0x23) 指定的媒体受到写入保护。
  • FX_PTR_ERROR (0x18) 媒体或名称指针无效。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。
  • FX_INVALID_YEAR (0x12) 年份无效。
  • FX_INVALID_MONTH (0x13) 月份无效。
  • FX_INVALID_DAY (0x14) 日期无效。
  • FX_INVALID_HOUR (0x15) 小时无效。
  • FX_INVALID_MINUTE (0x16) 分钟无效。
  • FX_INVALID_SECOND (0x17) 秒无效。

允许来自

线程数

示例


FX_MEDIA         my_media;
/* Set the date/time of "my_file". */
status = fx_file_date_time_set(&my_media, "my_file", 1999, 12, 31, 23, 59, 59);

/* If status is FX_SUCCESS the file's date/time was successfully set. /*

另请参阅

  • fx_file_allocate
  • fx_file_attributes_read
  • fx_file_attributes_set
  • fx_file_best_effort_allocate
  • fx_file_close
  • fx_file_create
  • fx_file_delete
  • fx_file_extended_allocate
  • fx_file_extended_best_effort_allocate
  • fx_file_extended_relative_seek
  • fx_file_extended_seek
  • fx_file_extended_truncate
  • fx_file_extended_truncate_release
  • fx_file_open
  • fx_file_read
  • fx_file_relative_seek
  • fx_file_rename
  • fx_file_seek
  • fx_file_truncate
  • fx_file_truncate_release
  • fx_file_write
  • fx_file_write_notify_set
  • fx_unicode_file_create
  • fx_unicode_file_rename
  • fx_unicode_name_get
  • fx_unicode_short_name_get

fx_file_delete

删除文件。

原型

UINT fx_file_delete(
    FX_MEDIA *media_ptr, 
    CHAR *file_name);

说明

此服务删除指定的文件。

输入参数

  • media_ptr:指向媒体控制块的指针。
  • file_name:指向要删除的文件的名称的指针(目录路径是可选的)。

返回值

  • FX_SUCCESS (0x00) 成功删除文件。
  • FX_MEDIA_NOT_OPEN (0x11) 指定的媒体未打开。
  • FX_NOT_FOUND (0x04) 未找到指定的文件。
  • FX_NOT_A_FILE (0x05) 指定的文件名是目录或卷。
  • FX_ACCESS_ERROR (0x06) 指定的文件当前处于打开状态。
  • FX_FILE_CORRUPT (0x08) 文件已损坏。
  • FX_SECTOR_INVALID (0x89) 扇区无效。
  • FX_FAT_READ_ERROR (0x03) 无法读取 FAT 条目。
  • FX_NO_MORE_ENTRIES (0x0F) 不再有 FAT 条目。
  • FX_NO_MORE_SPACE (0x0A) 不再有空间来完成该操作
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误。
  • FX_WRITE_PROTECT (0x23) 指定的媒体受到写入保护。
  • FX_MEDIA_INVALID (0x02) 媒体无效。
  • FX_PTR_ERROR (0x18) 媒体指针无效。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例


FX_MEDIA            my_media;
UINT                 status;
/* Delete the file "myfile.txt". */

status = fx_file_delete(&my_media, "myfile.txt");

/* If status equals FX_SUCCESS, "myfile.txt" has been deleted. */

另请参阅

  • fx_file_allocate
  • fx_file_attributes_read
  • fx_file_attributes_set
  • fx_file_best_effort_allocate
  • fx_file_close
  • fx_file_create
  • fx_file_date_time_set
  • fx_file_extended_allocate
  • fx_file_extended_best_effort_allocate
  • fx_file_extended_relative_seek
  • fx_file_extended_seek
  • fx_file_extended_truncate
  • fx_file_extended_truncate_release
  • fx_file_open
  • fx_file_read
  • fx_file_relative_seek
  • fx_file_rename
  • fx_file_seek
  • fx_file_truncate
  • fx_file_truncate_release
  • fx_file_write
  • fx_file_write_notify_set
  • fx_unicode_file_create
  • fx_unicode_file_rename
  • fx_unicode_name_get
  • fx_unicode_short_name_get

fx_file_extended_allocate

为文件分配空间。

原型

UINT fx_file_extended_allocate(
    FX_FILE *file_ptr, 
    ULONG64 size);

说明

此服务分配一个或多个连续群集并将其链接到指定文件的末尾。 FileX 通过将请求的大小除以每个群集的字节数来确定所需的群集数。 然后,将结果向上舍入到下一个整群集。

此服务是为 exFAT 设计的。 size 参数采用 64 位整数值,使调用方能够预分配超过 4GB 范围的空间。

输入参数

  • file_ptr:指向先前打开的文件的指针。
  • size:要为文件分配的字节数。

返回值

  • FX_SUCCESS (0x00) 文件分配成功。
  • FX_ACCESS_ERROR (0x06) 指定的文件未打开以进行写入。
  • FX_NOT_OPEN (0x07) 指定的文件当前未打开。
  • FX_NO_MORE_SPACE (0x0A) 与此文件关联的媒体没有足够的可用群集。
  • FX_FILE_CORRUPT (0x08) 文件已损坏。
  • FX_SECTOR_INVALID (0x89) 扇区无效。
  • FX_FAT_READ_ERROR (0x03) 无法读取 FAT 条目。
  • FX_NO_MORE_ENTRIES (0x0F) 不再有 FAT 条目。
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误。
  • FX_WRITE_PROTECT (0x23) 指定的媒体受到写入保护。
  • FX_PTR_ERROR (0x18) 文件指针无效。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例


FX_FILE            my_file;
UINT            status;
/* Allocate 0x100000000 bytes to the end of my_file. */

status = fx_file_extended_allocate(&my_file, 0x100000000);

/* If status equals FX_SUCCESS the file now has
    one or more contiguous cluster(s) that can accommodate at least
    1024 bytes of user data. */

另请参阅

  • fx_file_allocate
  • fx_file_attributes_read
  • fx_file_attributes_set
  • fx_file_best_effort_allocate
  • fx_file_close
  • fx_file_create
  • fx_file_date_time_set
  • fx_file_delete
  • fx_file_extended_best_effort_allocate
  • fx_file_extended_relative_seek
  • fx_file_extended_seek
  • fx_file_extended_truncate
  • fx_file_extended_truncate_release
  • fx_file_open
  • fx_file_read
  • fx_file_relative_seek
  • fx_file_rename
  • fx_file_seek
  • fx_file_truncate
  • fx_file_truncate_release
  • fx_file_write
  • fx_file_write_notify_set
  • fx_unicode_file_create
  • fx_unicode_file_rename
  • fx_unicode_name_get
  • fx_unicode_short_name_get

fx_file_extended_best_effort_allocate

尽最大努力为文件分配空间。

原型

UINT fx_file_extended best_effort_allocate(
    FX_FILE *file_ptr,
    ULONG64 size,
    ULONG64 *actual_size_allocated);

说明

此服务分配一个或多个连续群集并将其链接到指定文件的末尾。 FileX 通过将请求的大小除以每个群集的字节数来确定所需的群集数。 然后,将结果向上舍入到下一个整群集。 如果媒体中没有足够的连续可用群集,此服务会将连续群集的最大可用块链接到该文件。 实际分配给该文件的空间量将返回给调用方。

此服务是为 exFAT 设计的。 size 参数采用 64 位整数值,使调用方能够预分配超过 4GB 范围的空间。

输入参数

  • file_ptr:指向先前打开的文件的指针。
  • size:要为文件分配的字节数。

返回值

  • FX_SUCCESS (0x00) 文件分配成功。
  • FX_ACCESS_ERROR (0x06) 指定的文件未打开以进行写入。
  • FX_NOT_OPEN (0x07) 指定的文件当前未打开。
  • FX_NO_MORE_SPACE (0x0A) 与此文件关联的媒体没有足够的可用群集。
  • FX_FILE_CORRUPT (0x08) 文件已损坏。
  • FX_SECTOR_INVALID (0x89) 扇区无效。
  • FX_FAT_READ_ERROR (0x03) 无法读取 FAT 条目。
  • FX_NO_MORE_ENTRIES (0x0F) 不再有 FAT 条目。
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误。
  • FX_WRITE_PROTECT (0x23) 指定的媒体受到写入保护。
  • FX_PTR_ERROR (0x18) 文件指针无效。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例


FX_FILE my_file;
UINT             status;
ULONG64         actual_allocation;

/* Attempt to allocate 0x100000000 bytes to the end of my_file. */

status = fx_file_extended_best_effort_allocate(&my_file,
    0x100000000, &actual_allocation);

/* If status equals FX_SUCCESS, the number of bytes
    allocated to the file is found in actual_allocation. */

另请参阅

  • fx_file_allocate
  • fx_file_attributes_read
  • fx_file_attributes_set
  • fx_file_best_effort_allocate
  • fx_file_close
  • fx_file_create
  • fx_file_date_time_set
  • fx_file_delete
  • fx_file_extended_allocate
  • fx_file_extended_relative_seek
  • fx_file_extended_seek
  • fx_file_extended_truncate
  • fx_file_extended_truncate_release
  • fx_file_open
  • fx_file_read
  • fx_file_relative_seek
  • fx_file_rename
  • fx_file_seek
  • fx_file_truncate
  • fx_file_truncate_release
  • fx_file_write
  • fx_file_write_notify_set
  • fx_unicode_file_create
  • fx_unicode_file_rename
  • fx_unicode_name_get
  • fx_unicode_short_name_get

fx_file_extended_relative_seek

将内部读/写文件指针定位到相对字节偏移量。

原型

UINT fx_file_extended_relative_seek(
    FX_FILE *file_ptr,
    ULONG64 byte_offset,
    UINT seek_from);

说明

此服务将内部文件读取/写入指针定位到指定的相对字节偏移量。 任何后续的文件读取或写入请求将在文件中的此位置开始。

此服务是为 exFAT 设计的。 byte_offset 参数采用 64 位整数值,使调用方能够重新定位超过 4GB 范围的读取/写入指针。

如果为 seek_from 参数指定了 FX_SEEK_BEGIN,则将从文件的开头执行搜寻操作。 如果指定了 FX_SEEK_END,则将从文件末尾向上执行搜寻操作。 如果指定了 FX_SEEK_FORWARD,则将从当前文件位置向下执行搜寻操作。 如果指定了 FX_SEEK_BACK,则将从当前文件位置向上执行搜寻操作。

重要

如果搜寻操作尝试在超过文件末尾的位置进行搜寻,则文件的读/写指针会被定位到文件末尾。 相反,如果搜寻操作尝试在超过文件开头的位置进行搜寻,则文件的读/写指针会被定位到文件开头。

输入参数

  • file_ptr:指向先前打开的文件的指针。
  • byte_offset:文件中所需的相对字节偏移量。
  • seek_from:从何处执行相对搜寻的方向和位置。 有效搜寻选项的定义如下:
    • FX_SEEK_BEGIN (0x00)
    • FX_SEEK_END (0x01)
    • FX_SEEK_FORWARD (0x02)
    • FX_SEEK_BACK (0x03)

如果指定了 FX_SEEK_BEGIN,则将从文件的开头执行搜寻操作。 如果指定了 FX_SEEK_END,则将从文件末尾向上执行搜寻操作。 如果指定了 FX_SEEK_FORWARD,则将从当前文件位置向下执行搜寻操作。 如果指定了 FX_SEEK_BACK,则将从当前文件位置向上执行搜寻操作。

返回值

  • FX_SUCCESS (0x00) 成功进行文件相对搜寻。
  • FX_NOT_OPEN (0x07) 指定的文件当前未打开。
  • FX_FILE_CORRUPT (0x08) 文件已损坏。
  • FX_SECTOR_INVALID (0x89) 扇区无效。
  • FX_NO_MORE_SPACE (0x0A) 不再有空间来完成该操作
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误。
  • FX_PTR_ERROR (0x18) 文件指针无效。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例

FX_FILE     my_file;
UINT         status;

/* Attempt to seek forward 0x100000000 bytes in "my_file". */

status = fx_file_extended_relative_seek(&my_file, 0x100000000, FX_SEEK_FORWARD);

/* If status equals FX_SUCCESS, the file read/write
    pointers are positioned 0x100000000 bytes forward. */

另请参阅

  • fx_file_allocate
  • fx_file_attributes_read
  • fx_file_attributes_set
  • fx_file_best_effort_allocate
  • fx_file_close
  • fx_file_create
  • fx_file_date_time_set
  • fx_file_delete
  • fx_file_extended_allocate
  • fx_file_extended_best_effort_allocate
  • fx_file_extended_seek
  • fx_file_extended_truncate
  • fx_file_extended_truncate_release
  • fx_file_open
  • fx_file_read
  • fx_file_relative_seek
  • fx_file_rename
  • fx_file_seek
  • fx_file_truncate
  • fx_file_truncate_release
  • fx_file_write
  • fx_file_write_notify_set
  • fx_unicode_file_create
  • fx_unicode_file_rename
  • fx_unicode_name_get
  • fx_unicode_short_name_get

fx_file_extended_seek

将内部读/写指针定位到字节偏移量。

原型

UINT fx_file_extended_seek(
    FX_FILE *file_ptr, 
    ULONG64 byte_offset);

说明

此服务将内部文件读取/写入指针定位到指定的字节偏移量。 任何后续的文件读取或写入请求将在文件中的此位置开始。

此服务是为 exFAT 设计的。 byte_offset 参数采用 64 位整数值,使调用方能够重新定位超过 4GB 范围的读取/写入指针。

输入参数

  • file_ptr:指向文件控制块的指针。
  • byte_offset:文件中所需的字节偏移量。 如果值为零,则会将读取/写入指针定位在文件的开头,而值大于文件大小,则会将读取/写入指针定位到文件末尾。

返回值

  • FX_SUCCESS (0x00) 成功进行文件搜寻。
  • FX_NOT_OPEN (0x07) 指定的文件未打开。
  • FX_FILE_CORRUPT (0x08) 文件已损坏。
  • FX_SECTOR_INVALID (0x89) 扇区无效。
  • FX_NO_MORE_SPACE (0x0A) 不再有空间来完成该操作
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误。
  • FX_PTR_ERROR (0x18) 文件指针无效。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例

FX_FILE         my_file;
UINT             status;
/* Seek to position 0x100000000 of "my_file." */

status = fx_file_extended_seek(&my_file, 0x100000000);

/* If status equals FX_SUCCESS, the file read/write pointer
    is now positioned 0x100000000 bytes from the beginning of the file. */

另请参阅

  • fx_file_allocate
  • fx_file_attributes_read
  • fx_file_attributes_set
  • fx_file_best_effort_allocate
  • fx_file_close
  • fx_file_create
  • fx_file_date_time_set
  • fx_file_delete
  • fx_file_extended_allocate
  • fx_file_extended_best_effort_allocate
  • fx_file_extended_relative_seek
  • fx_file_extended_truncate
  • fx_file_extended_truncate_release
  • fx_file_open- fx_file_read
  • fx_file_relative_seek
  • fx_file_rename
  • fx_file_seek
  • fx_file_truncate
  • fx_file_truncate_release
  • fx_file_write
  • fx_file_write_notify_set
  • fx_unicode_file_create
  • fx_unicode_file_rename
  • fx_unicode_name_get
  • fx_unicode_short_name_get

fx_file_extended_truncate

截断文件。

原型

UINT fx_file_truncate(
    FX_FILE *file_ptr,
    ULONG64 size);

说明

此服务将文件截断为指定大小。 如果提供的大小大于实际文件大小,则此服务不会执行任何操作。 不会释放与该文件关联的任何媒体群集。

警告

截断可能同时打开以供读取的文件时要小心。 截断打开供读取的文件可能导致读取无效数据。

此服务是为 exFAT 设计的。 size 参数采用 64 位整数值,使调用方的操作范围超过 4GB。

输入参数

  • file_ptr:指向文件控制块的指针。
  • size:新的文件大小。 超过此新文件大小的字节将被丢弃。

返回值

  • FX_SUCCESS (0x00) 成功截断文件。
  • FX_NOT_OPEN (0x07) 指定的文件未打开。
  • FX_ACCESS_ERROR (0x06) 指定的文件未打开以进行写入。
  • FX_FILE_CORRUPT (0x08) 文件已损坏。
  • FX_SECTOR_INVALID (0x89) 扇区无效。
  • FX_NO_MORE_ENTRIES (0x0F) 不再有 FAT 条目。
  • FX_NO_MORE_SPACE (0x0A) 不再有空间来完成该操作
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误。
  • FX_WRITE_PROTECT (0x23) 基础媒体受到写入保护。
  • FX_PTR_ERROR (0x18) 文件指针无效。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例

FX_FILE            my_file;
UINT            status;
/* Truncate "my_file" to 0x100000000 bytes. */

status = fx_file_extended_truncate(&my_file, 0x100000000);

/* If status equals FX_SUCCESS, "my_file" contains 0x100000000 or fewer bytes. */

另请参阅

  • fx_file_allocate
  • fx_file_attributes_read
  • fx_file_attributes_set
  • fx_file_best_effort_allocate
  • fx_file_close
  • fx_file_create
  • fx_file_date_time_set
  • fx_file_delete
  • fx_file_extended_allocate
  • fx_file_extended_best_effort_allocate
  • fx_file_extended_relative_seek
  • fx_file_extended_seek
  • fx_file_extended_truncate_release
  • fx_file_open
  • fx_file_read
  • fx_file_relative_seek
  • fx_file_rename
  • fx_file_seek
  • fx_file_truncate
  • fx_file_truncate_release
  • fx_file_write
  • fx_file_write_notify_set
  • fx_unicode_file_create
  • fx_unicode_file_rename
  • fx_unicode_name_get
  • fx_unicode_short_name_get

fx_file_extended_truncate_release

截断文件并释放群集。

原型

UINT fx_file_extended_truncate_release(
    FX_FILE *file_ptr, 
    ULONG64 size);

说明

此服务将文件截断为指定大小。 如果提供的大小大于实际文件大小,则此服务不会执行任何操作。 与 fx_file_extended_truncate 服务不同,此服务会释放任何未使用的群集。

警告

截断可能同时打开以供读取的文件时要小心。 截断打开供读取的文件可能导致读取无效数据。

此服务是为 exFAT 设计的。 size 参数采用 64 位整数值,使调用方的操作范围超过 4GB。

输入参数

  • file_ptr:指向先前打开的文件的指针。
  • size:新的文件大小。 超过此新文件大小的字节将被丢弃。

返回值

  • FX_SUCCESS (0x00) 成功截断文件。
  • FX_ACCESS_ERROR (0x06) 指定的文件未打开以进行写入。
  • FX_NOT_OPEN (0x07) 指定的文件当前未打开。
  • FX_FILE_CORRUPT (0x08) 文件已损坏。
  • FX_SECTOR_INVALID (0x89) 扇区无效。
  • FX_FAT_READ_ERROR (0x03) 无法读取 FAT 条目。
  • FX_NO_MORE_ENTRIES (0x0F) 不再有 FAT 条目。
  • FX_NO_MORE_SPACE (0x0A) 不再有空间来完成该操作
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误。
  • FX_WRITE_PROTECT (0x23) 指定的媒体受到写入保护。
  • FX_PTR_ERROR (0x18) 文件指针无效。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例

FX_FILE            my_file;
UINT            status;
/* Attempt to truncate everything after the first 0x100000000 bytes of "my_file". */

status = fx_file_extended_truncate_release(&my_file, 0x100000000);

/* If status equals FX_SUCCESS, the file is now 0x100000000
    bytes or fewer and all unused clusters have been released. */

另请参阅

  • fx_file_allocate
  • fx_file_attributes_read
  • fx_file_attributes_set
  • fx_file_best_effort_allocate
  • fx_file_close
  • fx_file_create
  • fx_file_date_time_set
  • fx_file_delete
  • fx_file_extended_allocate
  • fx_file_extended_best_effort_allocate
  • fx_file_extended_relative_seek
  • fx_file_extended_seek
  • fx_file_extended_truncate
  • fx_file_open
  • fx_file_read
  • fx_file_relative_seek
  • fx_file_rename
  • fx_file_seek
  • fx_file_truncate
  • fx_file_truncate_release
  • fx_file_write
  • fx_file_write_notify_set
  • fx_unicode_file_create
  • fx_unicode_file_rename
  • fx_unicode_name_get
  • fx_unicode_short_name_get

fx_file_open

打开文件。

原型

UINT fx_file_open(
    FX_MEDIA *media_ptr,
    FX_FILE *file_ptr,
    CHAR *file_name,
    UINT open_type);

说明

此服务将打开指定的文件以进行读取或写入操作中的一种。 一个文件在打开后可以进行多次读取,而在写入器关闭文件前只能进行一次写入。

重要

如果文件以并发方式打开以供读取和写入,务必要小心。 进行文件写入的同时打开文件进行读取时,读取器可能看不到文件写入,除非读取器关闭并重新打开文件进行读取。 同样,在使用文件截断服务时,文件编写器应慎重。 如果编写器截断了某个文件,则同一文件的读取器可能会返回无效数据。

FX_OPEN_FOR_READ 和 FX_OPEN_FOR_READ_FAST 的打开文件相似,但不同。 FX_OPEN_FOR_READ 包括验证包含文件的群集的链接列表是否保持不变,而 FX_OPEN_FOR_READ_FAST 不会执行此验证。

输入参数

  • media_ptr:指向媒体控制块的指针。
  • file_ptr:指向文件控制块的指针。
  • file_name:指向要打开的文件的名称的指针(目录路径是可选的)。
  • open_type:文件打开的类型。 有效打开类型选项如下。
    • FX_OPEN_FOR_READ (0x00)
    • FX_OPEN_FOR_WRITE (0x01)
    • FX_OPEN_FOR_READ_FAST (0x02)

返回值

  • FX_SUCCESS (0x00) 成功打开文件。
  • FX_MEDIA_NOT_OPEN (0x11) 指定的媒体未打开。
  • FX_NOT_FOUND (0x04) 未找到指定的文件。
  • FX_NOT_A_FILE (0x05) 指定的文件名是目录或卷。
  • FX_FILE_CORRUPT (0x08) 指定的文件已损坏,并且打开失败。
  • FX_ACCESS_ERROR (0x06) 指定的文件已打开,或打开的类型无效。
  • FX_FILE_CORRUPT (0x08) 文件已损坏。
  • FX_MEDIA_INVALID (0x02) 媒体无效。
  • FX_FAT_READ_ERROR (0x03) 无法读取 FAT 条目。
  • FX_NO_MORE_SPACE (0x0A) 不再有空间来完成该操作
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误。
  • FX_WRITE_PROTECT (0x23) 基础媒体受到写入保护。
  • FX_PTR_ERROR (0x18) 媒体或文件指针无效。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例

FX_MEDIA     my_media;
FX_FILE     my_file;
UINT         status;

/* Open the file "myfile.txt" for reading. */

status = fx_file_open(&my_media, &my_file, "myfile.txt", FX_OPEN_FOR_READ);

/* If status equals FX_SUCCESS, file "myfile.txt" is now
    open and may be accessed now with the my_file pointer. */

另请参阅

  • fx_file_allocate
  • fx_file_attributes_read
  • fx_file_attributes_set
  • fx_file_best_effort_allocate
  • fx_file_close- fx_file_create
  • fx_file_date_time_set
  • fx_file_delete
  • fx_file_extended_allocate
  • fx_file_extended_best_effort_allocate
  • fx_file_extended_relative_seek
  • fx_file_extended_seek
  • fx_file_extended_truncate
  • fx_file_extended_truncate_release
  • fx_file_read
  • fx_file_relative_seek
  • fx_file_rename
  • fx_file_seek
  • fx_file_truncate
  • fx_file_truncate_release
  • fx_file_write
  • fx_file_write_notify_set
  • fx_unicode_file_create
  • fx_unicode_file_rename
  • fx_unicode_name_get
  • fx_unicode_short_name_get

fx_file_read

从指定文件读取字节。

原型

UINT fx_file_read(
    FX_FILE *file_ptr, 
    VOID *buffer_ptr,
    ULONG request_size, 
    ULONG *actual_size);

说明

此服务从文件中读取字节,并将它们存储在所提供的缓冲区中。 读取完成后,文件的内部读取指针将调整为指向文件中的下一个字节。 如果请求中剩余的字节更少,则仅剩余的字节存储在缓冲区中。 在任何情况下,缓冲区中放置的字节总数将返回给调用方。

警告

应用程序必须确保所提供的缓冲区能够存储指定数量的请求字节。

警告

如果目标缓冲区在长字边界上,并且请求的大小被 sizeof (ULONG) 整除,则可实现更快的性能。

输入参数

  • file_ptr:指向文件控制块的指针。
  • buffer_ptr:指向读取的目标缓冲区的指针。
  • request_size:要读取的最多的字节数。
  • actual_size:指向用于保存读取到提供的缓冲区中的实际字节数的变量的指针。

返回值

  • FX_SUCCESS (0x00) 成功读取文件。
  • FX_NOT_OPEN (0x07) 指定的文件未打开。
  • FX_FILE_CORRUPT (0x08) 指定的文件已损坏,并且读取失败。
  • FX_END_OF_FILE (0x09) 已到达文件的末尾。
  • FX_FILE_CORRUPT (0x08) 文件已损坏。
  • FX_NO_MORE_SPACE (0x0A) 不再有空间来完成该操作
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误。
  • FX_PTR_ERROR (0x18) 文件或缓冲区指针无效。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例

FX_FILE                 my_file;
unsigned char           my_buffer[1024];
ULONG                   actual_bytes;
UINT                    status;

/* Read up to 1024 bytes into "my_buffer." */
status = fx_file_read(&my_file, my_buffer, 1024, &actual_bytes);

/* If status equals FX_SUCCESS, "my_buffer" contains the bytes
    read from the file. The total number of bytes read is in "actual_bytes." */

另请参阅

  • fx_file_allocate,
  • fx_file_attributes_read,
  • fx_file_attributes_set,
  • fx_file_best_effort_allocate,
  • fx_file_close,
  • fx_file_create,
  • fx_file_date_time_set,
  • fx_file_delete,
  • fx_file_extended_allocate,
  • fx_file_extended_best_effort_allocate,
  • fx_file_extended_relative_seek,
  • fx_file_extended_seek,
  • fx_file_extended_truncate,
  • fx_file_extended_truncate_release,
  • fx_file_open,
  • fx_file_relative_seek,
  • fx_file_rename,
  • fx_file_seek,
  • fx_file_truncate,
  • fx_file_truncate_release,
  • fx_file_write,
  • fx_file_write_notify_set,
  • fx_unicode_file_create,
  • fx_unicode_file_rename,
  • fx_unicode_name_get,
  • fx_unicode_short_name_get

fx_file_relative_seek

将内部读/写指针定位到相对字节偏移量。

原型

UINT fx_file_relative_seek(
    FX_FILE *file_ptr,
    ULONG byte_offset,
    UINT seek_from);

说明

此服务将内部文件读取/写入指针定位到指定的相对字节偏移量。 任何后续的文件读取或写入请求将在文件中的此位置开始。

重要

如果搜寻操作尝试在超过文件末尾的位置进行搜寻,则文件的读/写指针会被定位到文件末尾。 相反,如果搜寻操作尝试在超过文件开头的位置进行搜寻,则文件的读/写指针会被定位到文件开头。

若要使用超过 4GB 的偏移值进行搜寻,应用程序应使用服务 fx_file_extended_relative_seek。

如果在 seek_from 参数中指定了 FX_SEEK_BEGIN,则将从文件的开头执行搜寻操作。 如果指定了 FX_SEEK_END,则将从文件末尾向上执行搜寻操作。 如果指定了 FX_SEEK_FORWARD,则将从当前文件位置向下执行搜寻操作。 如果指定了 FX_SEEK_BACK,则将从当前文件位置向上执行搜寻操作。

输入参数

  • file_ptr:指向先前打开的文件的指针。
  • byte_offset:文件中所需的相对字节偏移量。
  • seek_from:从何处执行相对搜寻的方向和位置。 有效搜寻选项的定义如下:
    • FX_SEEK_BEGIN (0x00)
    • FX_SEEK_END (0x01)
    • FX_SEEK_FORWARD (0x02)
    • FX_SEEK_BACK (0x03)

返回值

  • FX_SUCCESS (0x00) 成功进行文件相对搜寻。
  • FX_NOT_OPEN (0x07) 指定的文件当前未打开。
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误。
  • FX_FILE_CORRUPT (0x08) 文件已损坏。
  • FX_SECTOR_INVALID (0x89) 扇区无效。
  • FX_NO_MORE_ENTRIES (0x0F) 不再有 FAT 条目。
  • FX_PTR_ERROR (0x18) 文件指针无效。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例

FX_FILE     my_file;
UINT         status;

/* Attempt to move 10 bytes forward in "my_file". */

status = fx_file_relative_seek(&my_file, 10, FX_SEEK_FORWARD);

/* If status equals FX_SUCCESS, the file read/write pointers
    are positioned 10 bytes forward. */

另请参阅

  • fx_file_allocate
  • fx_file_attributes_read
  • fx_file_attributes_set
  • fx_file_best_effort_allocate
  • fx_file_close
  • fx_file_create
  • fx_file_date_time_set
  • fx_file_delete
  • fx_file_extended_allocate
  • fx_file_extended_best_effort_allocate
  • fx_file_extended_relative_seek
  • fx_file_extended_seek
  • fx_file_extended_truncate
  • fx_file_extended_truncate_release
  • fx_file_open
  • fx_file_read
  • fx_file_rename
  • fx_file_seek
  • fx_file_truncate
  • fx_file_truncate_release
  • fx_file_write
  • fx_file_write_notify_set
  • fx_unicode_file_create
  • fx_unicode_file_rename
  • fx_unicode_name_get
  • fx_unicode_short_name_get

fx_file_rename

重命名文件。

原型

UINT fx_file_rename(
    FX_MEDIA *media_ptr,
    CHAR *old_file_name,
    CHAR *new_file_name);

说明

此服务更改 old_file_name 指定的文件的名称。 在指定路径的相对路径或默认路径中还可以完成重命名。 如果在新文件名中指定路径,则重命名的文件将被有效地移动到指定的路径。 如果未指定路径,则重命名的文件将被放置在当前默认路径中。

输入参数

  • media_ptr:指向媒体控制块的指针。
  • old_file_name:指向包含要重命名的文件名称的字符串的指针(目录路径是可选的)。
  • new_file_name:指向新文件名的指针。 不允许目录路径。

返回值

  • FX_SUCCESS (0x00) 成功重命名文件。
  • FX_MEDIA_NOT_OPEN (0x11) 指定的媒体未打开。
  • FX_NOT_FOUND (0x04) 未找到指定的文件。
  • FX_NOT_A_FILE (0x05) 指定的文件是一个目录。
  • FX_ACCESS_ERROR (0x06) 指定的文件已处于打开状态。
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误。
  • FX_WRITE_PROTECT (0x23) 指定的媒体受到写入保护。
  • FX_INVALID_NAME (0x0C) 指定的新文件名不是有效的文件名。
  • FX_INVALID_PATH (0x0D) 路径无效。
  • FX_ALREADY_CREATED (0x0B) 已使用新文件名称。
  • FX_MEDIA_INVALID (0x02) 媒体无效。
  • FX_FILE_CORRUPT (0x08) 文件已损坏。
  • FX_SECTOR_INVALID (0x89) 扇区无效。
  • FX_NO_MORE_ENTRIES (0x0F) 不再有 FAT 条目。
  • FX_NO_MORE_SPACE (0x0A) 不再有空间来完成该操作
  • FX_FAT_READ_ERROR (0x03) 无法读取 FAT 表。
  • FX_PTR_ERROR (0x18) 媒体指针无效。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例

FX_MEDIA         my_media;
UINT             status;

/* Rename "myfile1.txt" to "myfile2.txt" in the default directory of the media. */

status = fx_file_rename(&my_media, "myfile1.txt", "myfile2.txt");

/* If status equals FX_SUCCESS, the file was successfully renamed. */

另请参阅

  • fx_file_allocate
  • fx_file_attributes_read
  • fx_file_attributes_set
  • fx_file_best_effort_allocate
  • fx_file_close
  • fx_file_create
  • fx_file_date_time_set
  • fx_file_delete
  • fx_file_extended_allocate
  • fx_file_extended_best_effort_allocate
  • fx_file_extended_relative_seek
  • fx_file_extended_seek
  • fx_file_extended_truncate
  • fx_file_extended_truncate_release
  • fx_file_open
  • fx_file_read
  • fx_file_relative_seek
  • fx_file_seek
  • fx_file_truncate
  • fx_file_truncate_release
  • fx_file_write
  • fx_file_write_notify_set
  • fx_unicode_file_create
  • fx_unicode_file_rename
  • fx_unicode_name_get
  • fx_unicode_short_name_get

fx_file_seek

将内部读/写指针定位到字节偏移量。

原型

UINT fx_file_seek(
    FX_FILE *file_ptr,
    ULONG byte_offset);

说明

此服务将内部文件读取/写入指针定位到指定的字节偏移量。 任何后续的文件读取或写入请求将在文件中的此位置开始。

若要使用超过 4GB 的偏移值进行搜寻,应用程序应使用服务 fx_file_extended_seek

输入参数

  • file_ptr:指向文件控制块的指针。
  • byte_offset:文件中所需的字节偏移量。 如果值为零,则会将读取/写入指针定位在文件的开头,而值大于文件大小,则会将读取/写入指针定位到文件末尾。

返回值

  • FX_SUCCESS (0x00) 成功进行文件搜寻。
  • FX_NOT_OPEN (0x07) 指定的文件未打开。
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误。
  • FX_FILE_CORRUPT (0x08) 文件已损坏。
  • FX_SECTOR_INVALID (0x89) 扇区无效。
  • FX_NO_MORE_SPACE (0x0A) 不再有空间来完成该操作
  • FX_PTR_ERROR (0x18) 文件指针无效。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例

FX_FILE            my_file;
UINT            status;
/* Seek to the beginning of "my_file." */
status = fx_file_seek(&my_file, 0);
/* If status equals FX_SUCCESS, the file read/write pointer
    is now positioned to the beginning of the file. */

另请参阅

  • fx_file_allocate
  • fx_file_attributes_read
  • fx_file_attributes_set
  • fx_file_best_effort_allocate
  • fx_file_close
  • fx_file_create
  • fx_file_date_time_set
  • fx_file_delete
  • fx_file_extended_allocate
  • fx_file_extended_best_effort_allocate
  • fx_file_extended_relative_seek
  • fx_file_extended_seek
  • fx_file_extended_truncate
  • fx_file_extended_truncate_release
  • fx_file_open
  • fx_file_read
  • fx_file_rename
  • fx_file_seek
  • fx_file_truncate
  • fx_file_truncate_release
  • fx_file_write
  • fx_file_write_notify_set
  • fx_unicode_file_create
  • fx_unicode_file_rename
  • fx_unicode_name_get
  • fx_unicode_short_name_get

fx_file_truncate

将文件截断为指定字节数。

原型

UINT fx_file_truncate(
    FX_FILE *file_ptr,
    ULONG size);

说明

此服务将文件截断为指定大小。 如果提供的大小大于实际文件大小,则此服务不会执行任何操作。 不会释放与该文件关联的任何媒体群集。

警告

截断可能同时打开以供读取的文件时要小心。 截断打开供读取的文件可能导致读取无效数据。

若要超过 4GB 范围进行操作,应用程序应使用服务 fx_file_extended_truncate

输入参数

  • file_ptr:指向文件控制块的指针。
  • size:新的文件大小。 超过此新文件大小的字节将被丢弃。

返回值

  • FX_SUCCESS (0x00) 成功截断文件。
  • FX_NOT_OPEN (0x07) 指定的文件未打开。
  • FX_ACCESS_ERROR (0x06) 指定的文件未打开以进行写入。
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误。
  • FX_WRITE_PROTECT (0x23) 指定的媒体受到写入保护。
  • FX_FILE_CORRUPT (0x08) 文件已损坏。
  • FX_SECTOR_INVALID (0x89) 扇区无效。
  • FX_NO_MORE_ENTRIES (0x0F) 不再有 FAT 条目。
  • FX_NO_MORE_SPACE (0x0A) 不再有空间来完成该操作
  • FX_PTR_ERROR (0x18) 文件指针无效。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例

FX_FILE                my_file;
UINT                status;
/* Truncate "my_file" to 100 bytes. */

status = fx_file_truncate(&my_file, 100);

/* If status equals FX_SUCCESS, "my_file" contains 100 or fewer bytes. */

另请参阅

  • fx_file_allocate
  • fx_file_attributes_read
  • fx_file_attributes_set
  • fx_file_best_effort_allocate
  • fx_file_close
  • fx_file_create
  • fx_file_date_time_set
  • fx_file_delete
  • fx_file_extended_allocate
  • fx_file_extended_best_effort_allocate
  • fx_file_extended_relative_seek
  • fx_file_extended_seek
  • fx_file_extended_truncate
  • fx_file_extended_truncate_release
  • fx_file_open
  • fx_file_read
  • fx_file_relative_seek
  • fx_file_rename
  • fx_file_seek
  • fx_file_truncate_release
  • fx_file_write
  • fx_file_write_notify_set
  • fx_unicode_file_create
  • fx_unicode_file_rename
  • fx_unicode_name_get
  • fx_unicode_short_name_get

fx_file_truncate_release

截断文件并释放群集。

原型

UINT fx_file_truncate(
    FX_FILE *file_ptr,
    ULONG size);

说明

此服务将文件截断为指定大小。 如果提供的大小大于实际文件大小,则此服务不会执行任何操作。 与 fx_file_truncate 服务不同,此服务会释放任何未使用的群集。

警告

截断可能同时打开以供读取的文件时要小心。 截断打开供读取的文件可能导致读取无效数据。

要在超过 4GB 范围进行操作,应用程序应使用服务 fx_file_extended_truncate_release

输入参数

  • file_ptr:指向先前打开的文件的指针。
  • size:新的文件大小。 超过此新文件大小的字节将被丢弃。

返回值

  • FX_SUCCESS (0x00) 成功截断文件。
  • FX_ACCESS_ERROR (0x06) 指定的文件未打开以进行写入。
  • FX_NOT_OPEN (0x07) 指定的文件当前未打开。
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误。
  • FX_WRITE_PROTECT (0x23) 基础媒体受到写入保护。
  • FX_FILE_CORRUPT (0x08) 文件已损坏。
  • FX_SECTOR_INVALID (0x89) 扇区无效。
  • FX_FAT_READ_ERROR (0x03) 无法读取 FAT 条目。
  • FX_NO_MORE_ENTRIES (0x0F) 不再有 FAT 条目。
  • FX_NO_MORE_SPACE (0x0A) 不再有空间来完成该操作。
  • FX_PTR_ERROR (0x18) 文件指针无效。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例

FX_FILE         my_file;
UINT             status;

/* Attempt to truncate everything after the first 100 bytes of "my_file". */

status = fx_file_truncate_release(&my_file, 100);

/* If status equals FX_SUCCESS, the file is now 100 bytes
    or fewer and all unused clusters have been released. */

另请参阅

  • fx_file_allocate
  • fx_file_attributes_read
  • fx_file_attributes_set
  • fx_file_best_effort_allocate
  • fx_file_close
  • fx_file_create
  • fx_file_date_time_set
  • fx_file_delete
  • fx_file_extended_allocate
  • fx_file_extended_best_effort_allocate
  • fx_file_extended_relative_seek
  • fx_file_extended_seek
  • fx_file_extended_truncate
  • fx_file_extended_truncate_release
  • fx_file_open
  • fx_file_read
  • fx_file_relative_seek
  • fx_file_rename
  • fx_file_seek
  • fx_file_truncate
  • fx_file_write
  • fx_file_write_notify_set
  • fx_unicode_file_create
  • fx_unicode_file_rename
  • fx_unicode_name_get
  • fx_unicode_short_name_get

fx_file_write

将字节写入文件。

原型

UINT fx_file_write(
    FX_FILE *file_ptr,
    VOID *buffer_ptr,
    ULONG size);

说明

此服务从文件的当前位置开始,写入指定缓冲区中的字节。 写入完成后,文件的内部读取指针将调整为指向文件中的下一个字节。

警告

如果源缓冲区在长字边界上,并且请求的大小被 sizeof (ULONG) 整除,则可实现更快的性能。

输入参数

  • file_ptr:指向文件控制块的指针。
  • buffer_ptr:指向写入的源缓冲区的指针。
  • size:要写入的字节数。

返回值

  • FX_SUCCESS (0x00) 成功写入文件。
  • FX_NOT_OPEN (0x07) 指定的文件未打开。
  • FX_ACCESS_ERROR (0x06) 指定的文件未打开以进行写入。
  • FX_NO_MORE_SPACE (0x0A) 媒体中不再有可用空间来执行此写入。
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误。
  • FX_WRITE_PROTECT (0x23) 指定的媒体受到写入保护。
  • FX_FILE_CORRUPT (0x08) 文件已损坏。
  • FX_SECTOR_INVALID (0x89) 扇区无效。
  • FX_FAT_READ_ERROR (0x03) 无法读取 FAT 条目。
  • FX_NO_MORE_ENTRIES (0x0F) 不再有 FAT 条目。
  • FX_PTR_ERROR (0x18) 文件或缓冲区指针无效。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例

FX_FILE            my_file;
UINT            status;
/* Write a 10 character buffer to "my_file." */

status = fx_file_write(&my_file, "1234567890", 10);

/* If status equals FX_SUCCESS, the small text string was written out to the file. */

另请参阅

  • fx_file_allocate,
  • fx_file_attributes_read,
  • fx_file_attributes_set,
  • fx_file_best_effort_allocate,
  • fx_file_close,
  • fx_file_create,
  • fx_file_date_time_set,
  • fx_file_delete,
  • fx_file_extended_allocate,
  • fx_file_extended_best_effort_allocate,
  • fx_file_extended_relative_seek,
  • fx_file_extended_seek,
  • fx_file_extended_truncate,
  • fx_file_extended_truncate_release,
  • fx_file_open,
  • fx_file_read,
  • fx_file_relative_seek,
  • fx_file_rename,
  • fx_file_seek,
  • fx_file_truncate,
  • fx_file_truncate_release,
  • fx_file_write_notify_set,
  • fx_unicode_file_create,
  • fx_unicode_file_rename,
  • fx_unicode_name_get,
  • fx_unicode_short_name_get

fx_file_write_notify_set

设置文件写入通知回调函数。

原型

UINT fx_file_write_notify_set(
    FX_FILE *file_ptr,
    VOID (*file_write_notify)(FX_FILE*));

说明

此服务安装在文件写入操作成功后调用的回调函数。

输入参数

  • file_ptr:指向文件控制块的指针。
  • file_write_notify:要安装的文件写入回调函数。 将回调函数设置为 NULL 可禁用回调函数。

返回值

  • FX_SUCCESS (0x00) 已成功安装回调函数。
  • FX_PTR_ERROR (0x18) file_ptr 为 NULL。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例

fx_file_write_notify_set(file_ptr, my_file_close_callback);

另请参阅

  • fx_file_allocate
  • fx_file_attributes_read
  • fx_file_attributes_set
  • fx_file_best_effort_allocate
  • fx_file_close
  • fx_file_create
  • fx_file_date_time_set
  • fx_file_delete
  • fx_file_extended_allocate
  • fx_file_extended_best_effort_allocate
  • fx_file_extended_relative_seek
  • fx_file_extended_seek
  • fx_file_extended_truncate
  • fx_file_extended_truncate_release
  • fx_file_open
  • fx_file_read
  • fx_file_relative_seek
  • fx_file_rename
  • fx_file_seek
  • fx_file_truncate
  • fx_file_truncate_release
  • fx_file_write
  • fx_unicode_file_create
  • fx_unicode_file_rename
  • fx_unicode_name_get
  • fx_unicode_short_name_get

fx_media_abort

中止指定介质上的所有当前活动

原型

UINT fx_media_abort(FX_MEDIA *media_ptr);

说明

此服务将中止与媒体关联的所有当前活动,包括关闭所有打开的文件,将中止请求发送到关联的驱动程序,并将媒体置于中止状态。 如果检测到 I/O 错误,通常会调用此服务。

警告

执行中止操作后,必须重新打开媒体以再次使用。

输入参数

  • media_ptr:指向媒体控制块的指针。

返回值

  • FX_SUCCESS (0x00) 成功中止媒体。
  • FX_MEDIA_NOT_OPEN (0x11) 指定的媒体未打开。
  • FX_PTR_ERROR (0x18) 媒体指针无效。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例

FX_MEDIA    my_media;
UINT        status;
/* Abort all activity associated with "my_media". */

status = fx_media_abort(&my_media);

/* If status equals FX_SUCCESS, all activity
    associated with the media has been aborted. */

另请参阅

  • fx_fault_tolerant_enable
  • fx_media_cache_invalidate
  • fx_media_check
  • fx_media_close
  • fx_media_close_notify_set
  • fx_media_exFAT_format
  • fx_media_extended_space_available
  • fx_media_flush
  • fx_media_format
  • fx_media_open
  • fx_media_open_notify_set
  • fx_media_read
  • fx_media_space_available
  • fx_media_volume_get
  • fx_media_volume_set
  • fx_media_write
  • fx_system_initialize

fx_media_cache_invalidate

使逻辑扇区缓存失效。

原型

UINT fx_media_cache_invalidate(FX_MEDIA *media_ptr);

说明

此服务刷新缓存中的所有脏扇区,使整个逻辑扇区缓存失效。

输入参数

  • media_ptr:指向媒体控制块的指针

返回值

  • FX_SUCCESS (0x00) 成功使媒体缓存失效。
  • FX_MEDIA_NOT_OPEN (0x11) 指定的媒体未打开。
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误。
  • FX_PTR_ERROR (0x18) 媒体或暂存指针无效。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例

FX_MEDIA     my_media;

/* Invalidate the cache of the media. */
status = fx_media_cache_invalidate(&my_media);

/* If status is FX_SUCCESS the cache in the media
    was successfully flushed and invalidated. */

另请参阅

  • fx_fault_tolerant_enable
  • fx_media_abort
  • fx_media_check
  • fx_media_close
  • fx_media_close_notify_set
  • fx_media_exFAT_format
  • fx_media_extended_space_available
  • fx_media_flush
  • fx_media_format
  • fx_media_open
  • fx_media_open_notify_set
  • fx_media_read
  • fx_media_space_available
  • fx_media_volume_get
  • fx_media_volume_set
  • fx_media_write
  • fx_system_initialize

fx_media_check

检查指定的媒体是否出错。

原型

UINT fx_media_check(
    FX_MEDIA *media_ptr,
    UCHAR *scratch_memory_ptr,
    ULONG scratch_memory_size,
    ULONG error_correction_option,
    ULONG *errors_detected_ptr);

说明

此服务检查指定的媒体是否存在基本结构错误,包括文件/目录交叉链接、FAT 链无效以及群集丢失。 此服务还提供了更正检测到的错误的功能。

fx_media_check 服务需要暂存内存,以便对媒体中的目录和文件进行深度优先分析。 具体而言,提供给媒体检查服务的暂存内存必须足够大,才能保存多个目录条目,这是一种在进入子目录之前“堆叠”当前目录条目位置,最后是逻辑 FAT 位图的数据结构。 对于逻辑 FAT 位图,暂存内存应至少有 512-1024 字节的额外内存,这需要位数与媒体中的群集数量相同。 例如,具有 8000 群集的设备需要 1000 个字节来表示,因此需要一个大约 2048 字节的总暂存区。

警告

只能在 fx_media_open 之后且没有任何其他文件系统活动的情况下立即调用此服务。

输入参数

  • media_ptr:指向媒体控制块的指针。
  • scratch_memory_ptr:指向暂存内存起点的指针。
  • scratch_memory_size:暂存内存的大小(字节)。
  • error_correction_option:错误更正选项位,设置位后,将执行错误更正。 错误更正选项位定义如下:
    • FX_FAT_CHAIN_ERROR (0x01)
    • FX_DIRECTORY_ERROR (0x02)
    • FX_LOST_CLUSTER_ERROR (0x04) 只是所需的错误更正选项。 如果不需要错误更正,则应提供值 0。
  • errors_detected_ptr:错误检测位的目标,如下所示:
    • FX_FAT_CHAIN_ERROR (0x01)
    • FX_DIRECTORY_ERROR (0x02)
    • FX_LOST_CLUSTER_ERROR (0x04)
    • FX_FILE_SIZE_ERROR (0x08)

返回值

  • FX_SUCCESS (0x00) 成功检查媒体,请查看检测到错误的目标以获取详细信息。
  • FX_ACCESS_ERROR (0x06) 无法对打开的文件执行检查。
  • FX_FILE_CORRUPT (0x08) 文件已损坏。
  • FX_MEDIA_NOT_OPEN (0x11) 指定的媒体未打开。
  • FX_NO_MORE_SPACE (0x0A) 媒体上不再有空间。
  • FX_NOT_ENOUGH_MEMORY (0x91) 提供的暂存内存不够大。
  • FX_ERROR_NOT_FIXED (0x93) FAT32 根目录损坏不能修复。
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误。
  • FX_SECTOR_INVALID (0x89) 扇区无效。
  • FX_PTR_ERROR (0x18) 媒体或暂存指针无效。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例

FX_MEDIA         my_media;
ULONG             detected_errors;
UCHAR             sratch_memory[4096];

/* Check the media and correct all errors. */

status = fx_media_check(&my_media, sratch_memory, 4096,
                        FX_FAT_CHAIN_ERROR |
                        FX_DIRECTORY_ERROR |
                        FX_LOST_CLUSTER_ERROR, &detected_errors);

/* If status is FX_SUCCESS and detected_errors is 0,
    the media was successfully checked and found to be error free. */

另请参阅

  • fx_fault_tolerant_enable
  • fx_media_abort
  • fx_media_cache_invalidate
  • fx_media_close
  • fx_media_close_notify_set
  • fx_media_exFAT_format
  • fx_media_extended_space_available
  • fx_media_flush
  • fx_media_format
  • fx_media_open
  • fx_media_open_notify_set
  • fx_media_read
  • fx_media_space_available
  • fx_media_volume_get
  • fx_media_volume_set
  • fx_media_write
  • fx_system_initialize

fx_media_close

关闭指定的媒体。

原型

UINT fx_media_close(FX_MEDIA *media_ptr);

说明

此服务关闭指定的媒体。 在关闭媒体的过程中,将关闭所有打开的文件,并将任何剩余的缓冲区刷新到物理媒体。

输入参数

  • media_ptr:指向媒体控制块的指针。

返回值

  • FX_SUCCESS (0x00) 成功关闭媒体。
  • FX_MEDIA_NOT_OPEN (0x11) 指定的媒体未打开。
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误。
  • FX_PTR_ERROR (0x18) 媒体指针无效。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例

FX_MEDIA    my_media;
UINT        status;
/* Close "my_media". */

status = fx_media_close(&my_media);

/* If status equals FX_SUCCESS, "my_media" is closed. */

另请参阅

  • fx_fault_tolerant_enable
  • fx_media_abort
  • fx_media_cache_invalidate
  • fx_media_check
  • fx_media_close_notify_set
  • fx_media_exFAT_format
  • fx_media_extended_space_available
  • fx_media_flush
  • fx_media_format
  • fx_media_open
  • fx_media_open_notify_set
  • fx_media_read
  • fx_media_space_available
  • fx_media_volume_get
  • fx_media_volume_set
  • fx_media_write
  • fx_system_initialize

fx_media_close_notify_set

设置媒体关闭通知回调函数。

原型

UINT fx_media_close_notify_set(
    FX_MEDIA *media_ptr,
    VOID (*media_close_notify)(FX_MEDIA*));

说明

此服务设置一个通知回调函数,该函数将在成功关闭媒体后被调用。

输入参数

  • media_ptr:指向媒体控制块的指针。
  • media_close_notify:要安装的媒体关闭通知回调函数。 传递 NULL 作为回调函数将禁用媒体关闭回调。

返回值

  • FX_SUCCESS (0x00) 已成功安装回调函数。
  • FX_PTR_ERROR (0x18) media_ptr 为 NULL。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例

fx_media_close_notify_set(media_ptr, my_media_close_callback);

另请参阅

  • fx_fault_tolerant_enable
  • fx_media_abort
  • fx_media_cache_invalidate
  • fx_media_check
  • fx_media_close
  • fx_media_exFAT_format
  • fx_media_extended_space_available
  • fx_media_flush
  • fx_media_format
  • fx_media_open
  • fx_media_open_notify_set
  • fx_media_read
  • fx_media_space_available
  • fx_media_volume_get
  • fx_media_volume_set
  • fx_media_write
  • fx_system_initialize

fx_media_exFAT_format

将指定媒体的格式设置为 exFAT 文件系统。

原型

UINT fx_media_exFAT_format(
    FX_MEDIA *media_ptr,
    VOID (*driver)(FX_MEDIA *media),
    VOID *driver_info_ptr, 
    UCHAR *memory_ptr,
    UINT memory_size, 
    CHAR *volume_name,
    UINT number_of_fats,
    ULONG64 hidden_sectors, 
    ULONG64 total_sectors,
    UINT bytes_per_sector, 
    UINT sectors_per_cluster,
    UINT volume_serial_number, 
    UINT boundary_unit);

说明

此服务基于提供的参数以 exFAT 兼容的方式格式化提供的媒体。 在打开媒体之前,必须调用此服务。

警告

格式化已有格式的媒体可有效地清除媒体上的所有文件和目录。

重要

exFAT 卷大小应匹配分区大小(如果有 MBR 或 GPT 布局),如果没有分区布局(没有 MBR 或 GPT),则匹配整个设备的大小。 Windows 上有一个限制,如果使用总扇区小于可用扇区的某些值进行格式化,则无法识别 exFAT Disk

重要

引用规范时,每个扇区的字节数只会采用以下值:512、1024、2048 或 4096。

输入参数

  • media_ptr:指向媒体控制块的指针。 该参数仅用于提供驱动程序运行所需的一些基本信息。
  • driver:指向此媒体的 I/O 驱动程序的指针。 这通常是提供给后续 fx_media_open 调用的同一个驱动程序。
  • driver_info_ptr:指向 I/O 驱动程序可以使用的可选信息的指针。
  • memory_ptr:指向媒体的工作内存的指针。 memory_size 指定工作媒体内存的大小。 大小必须至少与媒体扇区的大小相同。
  • volume_name:指向卷名称字符串的指针,最多为 11 个字符。
  • number_of_fats:媒体上的 FAT 数。 当前实现支持媒体上有一个 FAT。
  • hidden_sectors:在此媒体启动扇区前隐藏的扇区数。 如果存在多个分区,则通常会出现这种情况。
  • total_sectors:媒体中的扇区总数。
  • bytes_per_sector:每个扇区的字节数,通常为 512。 FileX 要求此数为 32 的倍数。
  • sectors_per_cluster:每个群集中的扇区数。 群集是 FAT 文件系统中的最小分配单元。
  • volumne_serial_number:要用于此卷的序列号。
  • boundary_unit:物理数据区域对齐大小(扇区数)。

返回值

  • FX_SUCCESS (0x00) 成功格式化媒体。
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误。
  • FX_PTR_ERROR (0x18) 媒体、驱动程序或内存指针无效。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例

FX_MEDIA             sd_card;
UCHAR                 media_memory[512];

/* Format a 64GB SD card with exFAT file system. The media has
    been properly partitioned, with the partition starts from sector 32768.
    For 64GB, there are total of 120913920 sectors, each sector 512 bytes. */

status = fx_media_exFAT_format(&sd_card, _fx_sd_driver,
                                driver_information, media_memory,
                                sizeof(media_memory),
                                "exFAT_DISK" /* Volume Name */,
                                1 /* Number of FATs */,
                                32768 /* Hidden sectors */,
                                120913920 /* Total sectors */,
                                512 /* Sector size */,
                                256 /* Sectors per cluster */,
                                12345 /* Volume ID */,
                                8192 /* Boundary unit */);

/* If status is FX_SUCCESS, the media was successfully formatted. */

另请参阅

  • fx_fault_tolerant_enable
  • fx_media_abort
  • fx_media_cache_invalidate
  • fx_media_check
  • fx_media_close
  • fx_media_close_notify_set
  • fx_media_extended_space_available
  • fx_media_flush
  • fx_media_format
  • fx_media_open
  • fx_media_open_notify_set
  • fx_media_read
  • fx_media_space_available
  • fx_media_volume_get
  • fx_media_volume_set
  • fx_media_write
  • fx_system_initialize

fx_media_extended_space_available

返回可用媒体空间。

原型

UINT fx_media_extended_space_available(
    FX_MEDIA *media_ptr,
    ULONG64 *available_bytes_ptr);

说明

此服务返回媒体中可用的字节数。

此服务是为 exFAT 设计的。 指向 available_bytes 参数的指针采用 64 位整数值,使调用方能够使用超过 4GB 范围的媒体。

输入参数

  • media_ptr:指向先前打开的媒体的指针。
  • available_bytes_ptr:媒体中剩余的可用字节数。

返回值

  • FX_SUCCESS (0x00) 成功检索到媒体上的可用空间。
  • FX_MEDIA_NOT_OPEN (0x11) 指定的媒体未打开。
  • FX_PTR_ERROR (0x18) 媒体指针无效或可用字节指针为 NULL。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例

FX_MEDIA        my_media;
ULONG64            available_bytes;
UINT            status;
/* Retrieve the available bytes in the media. */

status = fx_media_extended_space_available(&my_media, &available_bytes);

/* If status equals FX_SUCCESS, the number of available bytes is in "available_bytes." */

另请参阅

  • fx_fault_tolerant_enable
  • fx_media_abort
  • fx_media_cache_invalidate
  • fx_media_check
  • fx_media_close
  • fx_media_close_notify_set
  • fx_media_exFAT_format
  • fx_media_flush
  • fx_media_format
  • fx_media_open
  • fx_media_open_notify_set
  • fx_media_read
  • fx_media_space_available
  • fx_media_volume_get
  • fx_media_volume_set
  • fx_media_write
  • fx_system_initialize

fx_media_flush

将所有缓存的数据刷新到物理媒体

原型

UINT fx_media_flush(FX_MEDIA *media_ptr);

说明

此服务将任何已修改文件的所有已缓存扇区和目录条目刷新到物理媒体。

警告

应用程序会定期调用此例程,以降低目标突然断电时文件损坏和/或数据丢失的风险。

输入参数

  • media_ptr:指向媒体控制块的指针。

返回值

  • FX_SUCCESS (0x00) 成功刷新媒体。
  • FX_MEDIA_NOT_OPEN (0x11) 指定的媒体未打开。
  • FX_FILE_CORRUPT (0x08) 文件已损坏。
  • FX_SECTOR_INVALID (0x89) 扇区无效。
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误。
  • FX_WRITE_PROTECT (0x23) 指定的媒体受到写入保护。
  • FX_PTR_ERROR (0x18) 媒体指针无效。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例

FX_MEDIA         my_media;
UINT             status;

/* Flush all cached sectors and modified file entries to the physical media. */

status = fx_media_flush(&my_media);

/* If status equals FX_SUCCESS, the physical media is completely up-to-date. */

另请参阅

  • fx_fault_tolerant_enable
  • fx_media_abort
  • fx_media_cache_invalidate
  • fx_media_check
  • fx_media_close
  • fx_media_close_notify_set
  • fx_media_exFAT_format
  • fx_media_extended_space_available
  • fx_media_format
  • fx_media_open
  • fx_media_open_notify_set
  • fx_media_read
  • fx_media_space_available
  • fx_media_volume_get
  • fx_media_volume_set
  • fx_media_write
  • fx_system_initialize

fx_media_format

设置指定媒体格式。

原型

UINT fx_media_format(
    FX_MEDIA *media_ptr,
    VOID (*driver)(FX_MEDIA *media),
    VOID *driver_info_ptr,
    UCHAR *memory_ptr, 
    UINT memory_size,
    CHAR *volume_name, 
    UINT number_of_fats,
    UINT directory_entries, 
    UINT hidden_sectors,
    ULONG total_sectors, 
    UINT bytes_per_sector,
    UINT sectors_per_cluster,
    UINT heads,
    UINT sectors_per_track);

说明

此服务基于提供的参数以 FAT 12/16/32 兼容的方式格式化提供的媒体。 在打开媒体之前,必须调用此服务。

警告

格式化已有格式的媒体可有效地清除媒体上的所有文件和目录。

输入参数

  • media_ptr:指向媒体控制块的指针。 该参数仅用于提供驱动程序运行所需的一些基本信息。
  • driver:指向此媒体的 I/O 驱动程序的指针。 这通常是提供给后续 fx_media_open 调用的同一个驱动程序。
  • driver_info_ptr:指向 I/O 驱动程序可以使用的可选信息的指针。
  • memory_ptr:指向媒体的工作内存的指针。
  • memory_size:指定工作媒体内存的大小。 大小必须至少与媒体扇区的大小相同。
  • volume_name:指向卷名称字符串的指针,最多为 11 个字符。
  • number_of_fats:媒体中的 FAT 数。 对于主 FAT,最小值为 1。 大于 1 的值会导致在运行时保留其他 FAT 副本。
  • directory_entries:根目录中目录条目的数目。
  • hidden_sectors:在此媒体启动扇区前隐藏的扇区数。 如果存在多个分区,则通常会出现这种情况。
  • total_sectors:媒体中的扇区总数。
  • bytes_per_sector*:每个扇区的字节数,通常为 512。 FileX 要求此数为 32 的倍数。

重要

引用规范时,每个扇区的字节数只会采用以下值:512、1024、2048 或 4096。

输入参数

  • media_ptr:指向媒体控制块的指针。 该参数仅用于提供驱动程序运行所需的一些基本信息。
  • driver:指向此媒体的 I/O 驱动程序的指针。 这通常是提供给后续 fx_media_open 调用的同一个驱动程序。
  • driver_info_ptr:指向 I/O 驱动程序可以使用的可选信息的指针。
  • memory_ptr:指向媒体的工作内存的指针。
  • memory_size:指定工作媒体内存的大小。 大小必须至少与媒体扇区的大小相同。
  • volume_name:指向卷名称字符串的指针,最多为 11 个字符。
  • number_of_fats:媒体中的 FAT 数。 对于主 FAT,最小值为 1。 大于 1 的值会导致在运行时保留其他 FAT 副本。
  • directory_entries:根目录中目录条目的数目。
  • hidden_sectors:在此媒体启动扇区前隐藏的扇区数。 如果存在多个分区,则通常会出现这种情况。
  • total_sectors:媒体中的扇区总数。
  • bytes_per_sector:每个扇区的字节数,通常为 512。 FileX 要求此数为 32 的倍数。
  • sectors_per_cluster:每个群集中的扇区数。 群集是 FAT 文件系统中的最小分配单元。
  • heads:物理磁头的数目。
  • sectors_per_track:每个磁道的扇区数。

返回值

  • FX_SUCCESS (0x00) 成功格式化媒体。
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误。
  • FX_PTR_ERROR (0x18) 媒体、驱动程序或内存指针无效。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例

FX_MEDIA         ram_disk;
UCHAR             media_memory[512];
UCHAR             ram_disk_memory[32768];

/* Format a RAM disk with 32768 bytes and 512 bytes per sector. */

status = fx_media_format(&ram_disk, _fx_ram_driver,
                         ram_disk_memory, media_memory,
                         sizeof(media_memory),
                         "MY_RAM_DISK" /* Volume Name */,
                         1 /* Number of FATs */,
                         32 /* Directory Entries */,
                         0 /* Hidden sectors */,
                         64 /* Total sectors */,
                         512 /* Sector size */,
                         1 /* Sectors per cluster */,
                         1 /* Heads */,
                         1 /* Sectors per track */);

/* If status is FX_SUCCESS, the media was successfully formatted
    and can now be opened with the following call: */

另请参阅

  • fx_fault_tolerant_enable
  • fx_media_abort
  • fx_media_cache_invalidate
  • fx_media_check
  • fx_media_close
  • fx_media_close_notify_set
  • fx_media_exFAT_format
  • fx_media_extended_space_available
  • fx_media_flush
  • fx_media_open
  • fx_media_open_notify_set
  • fx_media_read
  • fx_media_space_available
  • fx_media_volume_get
  • fx_media_volume_set
  • fx_media_write
  • fx_system_initialize

fx_media_open

打开指定媒体进行文件访问。

原型

UINT fx_media_open(
    FX_MEDIA *media_ptr, 
    CHAR *media_name,
    VOID(*media_driver)(FX_MEDIA *),
    VOID *driver_info_ptr,
    VOID *memory_ptr, 
    ULONG memory_size);

说明

此服务使用提供的 I/O 驱动程序打开媒体以进行文件访问。

警告

提供给此服务的内存用于实现内部逻辑扇区缓存,因此,提供的内存越多,减少的物理 I/O 就越多。 FileX 需要至少一个逻辑扇区(每个媒体扇区的字节数)的缓存。

输入参数

  • media_ptr:指向媒体控制块的指针。
  • media_name:指向媒体名称的指针。
  • media_driver:指向此媒体的 I/O 驱动程序的指针。 I/O 驱动程序必须符合第 5 章中定义的 FileX 驱动程序要求。
  • driver_info_ptr:指向提供的 I/O 驱动程序可以使用的可选信息的指针。
  • memory_ptr:指向媒体的工作内存的指针。
  • memory_size:指定工作媒体内存的大小。 大小必须和媒体的扇区大小(通常为 512 个字节)一样。

返回值

  • FX_SUCCESS (0x00) 成功打开媒体。
  • FX_BOOT_ERROR (0x01) 读取媒体的启动扇区时出错。
  • FX_MEDIA_INVALID (0x02) 指定媒体的启动扇区已损坏或无效。 此外,此返回代码用于指示逻辑扇区缓存大小或 FAT 条目大小不是 2 的幂。
  • FX_FAT_READ_ERROR (0x03) 读取媒体 FAT 时出错。
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误。
  • FX_PTR_ERROR (0x18) 一个或多个指针为 NULL。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例

FX_MEDIA         ram_disk,
UINT             status;
UCHAR             buffer[128];
/* Open a 32KByte RAM disk starting at the fixed address of 0x800000.
    Note that the total 32KByte media size and 128-byte sector size is defined inside of the driver. */

status = fx_media_open(&ram_disk, "RAM DISK", fx_ram_driver, 0, &buffer[0], sizeof(buffer));

/* If status equals FX_SUCCESS, the RAM disk has been successfully setup and is ready for file access! */

另请参阅

  • fx_fault_tolerant_enable
  • fx_media_abort
  • fx_media_cache_invalidate
  • fx_media_check
  • fx_media_close
  • fx_media_close_notify_set
  • fx_media_exFAT_format
  • fx_media_extended_space_available
  • fx_media_flush
  • fx_media_format
  • fx_media_open_notify_set
  • fx_media_read
  • fx_media_space_available
  • fx_media_volume_get
  • fx_media_volume_set
  • fx_media_write
  • fx_system_initialize

fx_media_open_notify_set

设置媒体打开通知回调函数。

原型

UINT fx_media_open_notify_set(
    FX_MEDIA *media_ptr,
    VOID (*media_open_notify)(FX_MEDIA*));

说明

此服务设置一个通知回调函数,该函数将在成功打开媒体后被调用。

输入参数

  • media_ptr:指向媒体控制块的指针。
  • media_open_notify:要安装的媒体打开通知回调函数。 传递 NULL 作为回调函数将禁用媒体打开回调。

返回值

  • FX_SUCCESS (0x00) 已成功安装回调函数。
  • FX_PTR_ERROR (0x18) media_ptr 为 NULL。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例

fx_media_open_notify_set(media_ptr, my_media_open_callback);

另请参阅

  • fx_fault_tolerant_enable
  • fx_media_abort
  • fx_media_cache_invalidate
  • fx_media_check
  • fx_media_close
  • fx_media_close_notify_set
  • fx_media_exFAT_format
  • fx_media_extended_space_available
  • fx_media_flush
  • fx_media_format
  • fx_media_open
  • fx_media_open_notify_set
  • fx_media_space_available
  • fx_media_volume_get
  • fx_media_volume_set
  • fx_media_write
  • fx_system_initialize

fx_media_read

读取媒体的逻辑扇区。

原型

UINT fx_media_read(
    FX_MEDIA *media_ptr, 
    ULONG logical_sector, 
    VOID *buffer_ptr);

说明

此服务读取媒体的逻辑扇区,并将其放入所提供的缓冲区。

输入参数

  • media_ptr:指向先前打开的媒体的指针。
  • logical_sector:要读取的逻辑扇区。
  • buffer_ptr:指向逻辑扇区读取的目标的指针。

返回值

  • FX_SUCCESS (0x00) 成功读取媒体。
  • FX_MEDIA_NOT_OPEN (0x11) 指定的媒体未打开。
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误。
  • FX_SECTOR_INVALID (0x89) 扇区无效。
  • FX_PTR_ERROR (0x18) 媒体或缓冲区指针无效。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例

FX_MEDIA         my_media;
UCHAR             my_buffer[128];
UINT            STATUS;
/* Read logical sector 22 into "my_buffer" assuming the
    physical media has a sector size of 128. */
status = fx_media_read(&my_media, 22, my_buffer);
/* If status equals FX_SUCCESS, the contents of logical sector 22 are in "my_buffer". */

另请参阅

  • fx_fault_tolerant_enable
  • fx_media_abort
  • fx_media_cache_invalidate
  • fx_media_check
  • fx_media_close
  • fx_media_close_notify_set
  • fx_media_exFAT_format
  • fx_media_extended_space_available
  • fx_media_flush
  • fx_media_format
  • fx_media_open
  • fx_media_open_notify_set
  • fx_media_space_available
  • fx_media_volume_get
  • fx_media_volume_set
  • fx_media_write
  • fx_system_initialize

fx_media_space_available

返回可用媒体空间(以字节为单位)。

原型

UINT fx_media_space_available(
    FX_MEDIA *media_ptr,
    ULONG *available_bytes_ptr);

说明

此服务返回媒体中可用的字节数。

若要处理大于 4GB 的媒体,应用程序应使用服务 fx_media_extended_space_available

输入参数

  • media_ptr:指向先前打开的媒体的指针。
  • available_bytes_ptr:媒体中剩余的可用字节数。

返回值

  • FX_SUCCESS (0x00) 成功返回媒体上的可用空间。
  • FX_MEDIA_NOT_OPEN (0x11) 指定的媒体未打开。
  • FX_PTR_ERROR (0x18) 媒体指针无效或可用字节指针为 NULL。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例

FX_MEDIA        my_media;
ULONG            available_bytes;
UINT            status;
/* Retrieve the available bytes in the media. */

status = fx_media_space_available(&my_media, &available_bytes);

/* If status equals FX_SUCCESS, the number of available bytes is in "available_bytes." */

另请参阅

  • fx_fault_tolerant_enable
  • fx_media_abort
  • fx_media_cache_invalidate
  • fx_media_check
  • fx_media_close
  • fx_media_close_notify_set
  • fx_media_exFAT_format
  • fx_media_extended_space_available
  • fx_media_flush
  • fx_media_format
  • fx_media_open
  • fx_media_open_notify_set
  • fx_media_read
  • fx_media_volume_get
  • fx_media_volume_set
  • fx_media_write
  • fx_system_initialize

fx_media_volume_get

获取媒体的卷名。

原型

UINT fx_media_volume_get(
    FX_MEDIA *media_ptr,
    CHAR *volume_name,
    UINT volume_source);

说明

此服务检索之前打开的媒体的卷名。

输入参数

  • media_ptr:指向媒体控制块的指针。
  • volume_name:指向卷名称的目标的指针。 请注意,目标的大小必须至少足以容纳 12 个字符。
  • volume_source:指定从启动扇区或根目录检索名称的位置。 此参数的有效值是:
    • FX_BOOT_SECTOR
    • FX_DIRECTORY_SECTOR

返回值

  • FX_SUCCESS (0x00) 成功获取媒体卷。
  • FX_MEDIA_NOT_OPEN (0x11) 指定的媒体未打开。
  • FX_NOT_FOUND (0x04) 未找到卷。
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误。
  • FX_PTR_ERROR (0x18) 媒体或卷目标指针无效。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例

FX_MEDIA        ram_disk;
UCHAR             volume_name[12];
/* Retrieve the volume name of the RAM disk, from the boot sector. */

status = fx_media_volume_get_extended(&ram_disk, volume_name,
                                      sizeof(volume_name), FX_BOOT_SECTOR);

/* If status is FX_SUCCESS, the volume name was successfully retrieved. */

另请参阅

  • fx_fault_tolerant_enable
  • fx_media_abort
  • fx_media_cache_invalidate
  • fx_media_check
  • fx_media_close
  • fx_media_close_notify_set
  • fx_media_exFAT_format
  • fx_media_extended_space_available
  • fx_media_flush
  • fx_media_format
  • fx_media_open
  • fx_media_open_notify_set
  • fx_media_read
  • fx_media_space_available
  • fx_media_volume_set
  • fx_media_write
  • fx_system_initialize

fx_media_volume_get_extended

获取之前打开的媒体的卷名。

原型

UINT fx_media_volume_get_extended(
    FX_MEDIA *media_ptr, 
    CHAR *volume_name,
    UINT volume_name_buffer_length,
    UINT volume_source);

说明

此服务检索之前打开的媒体的卷名称。

重要

除了调用方传入 volume_name 缓冲区的大小之外,此服务与 fx_media_volume_get 相同。

输入参数

  • media_ptr:指向媒体控制块的指针。
  • volume_name:指向卷名称的目标的指针。 目标的大小必须至少足以容纳 12 个字符。
  • volume_name_buffer_length:volume_name 缓冲区的大小。
  • volume_source:指定从启动扇区或根目录检索名称的位置。 此参数的有效值是:
    • FX_BOOT_SECTOR
    • FX_DIRECTORY_SECTOR

返回值

  • FX_SUCCESS (0x00) 成功获取媒体卷。
  • FX_MEDIA_NOT_OPEN (0x11) 指定的媒体未打开。
  • FX_NOT_FOUND (0x04) 未找到卷。
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误。
  • FX_PTR_ERROR (0x18) 媒体或卷目标指针无效。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例

FX_MEDIA         ram_disk;
UCHAR             volume_name[12];

/* Retrieve the volume name of the RAM disk, from the boot sector. */

status = fx_media_volume_get_extended(&ram_disk, volume_name,
                                      sizeof(volume_name),
                                      FX_BOOT_SECTOR);

/* If status is FX_SUCCESS, the volume name was successfully retrieved. */

另请参阅

  • fx_fault_tolerant_enable
  • fx_media_abort
  • fx_media_cache_invalidate
  • fx_media_check
  • fx_media_close
  • fx_media_close_notify_set
  • fx_media_exFAT_format
  • fx_media_extended_space_available
  • fx_media_flush
  • fx_media_format
  • fx_media_open
  • fx_media_open_notify_set
  • fx_media_read
  • fx_media_space_available
  • fx_media_volume_set
  • fx_media_write
  • fx_system_initialize

fx_media_volume_set

设置媒体的卷名

原型

UINT fx_media_volume_set(
    FX_MEDIA *media_ptr, 
    CHAR *volume_name);

说明

此服务设置之前打开的媒体的卷名。

输入参数

  • media_ptr:指向媒体控制块的指针。
  • volume_name:指向卷名称的指针。

返回值

  • FX_SUCCESS (0x00) 成功设置媒体卷。
  • FX_INVALID_NAME (0x0C) Volume_name 无效。
  • FX_MEDIA_INVALID (0x02) 无法设置卷名。
  • FX_MEDIA_NOT_OPEN (0x11) 指定的媒体未打开。
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误。
  • FX_WRITE_PROTECT (0x23) 指定的媒体受到写入保护。
  • FX_PTR_ERROR (0x18) 媒体或卷名称指针无效。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例

FX_MEDIA ram_disk;

/* Set the volume name to "MY_VOLUME". */

status = fx_media_volume_set(&ram_disk, "MY_VOLUME");

/* If status is FX_SUCCESS, the volume name was successfully set. */

另请参阅

  • fx_fault_tolerant_enable
  • fx_media_abort
  • fx_media_cache_invalidate
  • fx_media_check
  • fx_media_close
  • fx_media_close_notify_set
  • fx_media_exFAT_format
  • fx_media_extended_space_available
  • fx_media_flush
  • fx_media_format
  • fx_media_open
  • fx_media_open_notify_set
  • fx_media_read
  • fx_media_space_available
  • fx_media_volume_get
  • fx_media_write
  • fx_system_initialize

fx_media_write

向媒体写入逻辑扇区。

原型

UINT fx_media_write(
    FX_MEDIA *media_ptr, 
    ULONG logical_sector,
    VOID *buffer_ptr);

说明

此服务将所提供的缓冲区写入指定的逻辑扇区。

输入参数

  • media_ptr:指向先前打开的媒体的指针。
  • logical_sector:要写入的逻辑扇区。
  • buffer_ptr:指向逻辑扇区写入的源的指针。

返回值

  • FX_SUCCESS (0x00) 成功写入媒体。
  • FX_MEDIA_NOT_OPEN (0x11) 指定的媒体未打开。
  • FX_SECTOR_INVALID (0x89) 扇区无效。
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误。
  • FX_WRITE_PROTECT (0x23) 指定的媒体受到写入保护。
  • FX_PTR_ERROR (0x18) 媒体指针无效。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例

FX_MEDIA             my_media;
UCHAR                 my_buffer[128];
UINT                 status;

/* Write logical sector 22 from "my_buffer" assuming
    the physical media has a sector size of 128. */

status = fx_media_write(&my_media, 22, my_buffer);

/* If status equals FX_SUCCESS, the contents of logical
    sector 22 are now the same as "my_buffer." */

另请参阅

  • fx_fault_tolerant_enable
  • fx_media_abort
  • fx_media_cache_invalidate
  • fx_media_check
  • fx_media_close
  • fx_media_close_notify_set
  • fx_media_exFAT_format
  • fx_media_extended_space_available
  • fx_media_flush
  • fx_media_format
  • fx_media_open
  • fx_media_open_notify_set
  • fx_media_read
  • fx_media_space_available
  • fx_media_volume_get
  • fx_media_volume_set
  • fx_system_initialize

fx_system_date_get

获取文件系统日期。

原型

UINT fx_system_date_get(
    UINT *year, 
    UINT *month, 
    UINT *day);

说明

此服务返回当前系统日期。

输入参数

  • year:指向年份的目标的指针。
  • month:指向月份的目标的指针。
  • day:指向日期的目标的指针。

返回值

  • FX_SUCCESS (0x00) 成功检索日期。
  • FX_PTR_ERROR (0x18) 一个或多个输入参数为 NULL。

允许来自

线程数

示例

UINT            status;
UINT            year;
UINT            month;
UINT            day;
/* Retrieve the current system date. */

status = fx_system_date_get(&year, &month, &day);

/* If status equals FX_SUCCESS, the year, month,
    and day parameters now have meaningful information. */

另请参阅

  • fx_system_date_set
  • fx_system_initialize
  • fx_system_time_get
  • fx_system_time_set

fx_system_date_set

设置系统日期。

原型

UINT fx_system_date_set(
    UINT year, 
    UINT month, 
    UINT day);

说明

此服务根据指定设置系统日期。

警告

应在 fx_system_initialize 后不久调用此服务以设置初始系统日期。 默认情况下,系统日期是上一个通用 FileX 版本的日期。

输入参数

  • year:新年份。 有效范围是从 1980 到 2107 年。
  • month:新月份。 有效范围是从 1 到 12。
  • day:新日期。 有效范围是从 1 到 31,具体取决于月份和闰年条件。

返回值

  • FX_SUCCESS (0x00) 成功设置日期。
  • FX_INVALID_YEAR (0x12) 指定的年份无效。
  • FX_INVALID_MONTH (0x13) 指定的月份无效。
  • FX_INVALID_DAY (0x14) 指定的日期无效。

允许来自

初始化、线程

示例

 UINT             status;

/* Set the system date to December 12, 2005. */

status = fx_system_date_set(2005, 12, 12);

/* If status equals FX_SUCCESS, the file system date is now
    12-12-2005. */

另请参阅

  • fx_system_date_get
  • fx_system_initialize
  • fx_system_time_get
  • fx_system_time_set

fx_system_initialize

初始化整个 FileX 系统。

原型

VOID fx_system_initialize(void);

说明

此服务初始化所有主要的 FileX 数据结构。 应在 tx_application_define 中或从初始化线程中调用该方法,并且必须在使用任何其他 FileX 服务之前调用它。

警告

应用程序一旦被此调用初始化,其应调用 fx_system_date_set 和 fx_system_time_set 从准确的系统日期和时间开始。

输入参数

返回值

允许来自

初始化、线程

示例

void tx_application_define(VOID *free_memory)
{
    UINT status;
    /* Initialize the FileX system. */
    fx_system_initialize();
    /* Set the file system date. */
    fx_system_date_set(my_year, my_month, my_day);

    /* Set the file system time. */
    fx_system_time_set(my_hour, my_minute, my_second);

    /* Now perform all other initialization and possibly FileX media
        open calls if the corresponding driver does not block on the boot sector read. */

    ...

}

另请参阅

  • fx_system_date_get
  • fx_system_date_set
  • fx_system_time_get
  • fx_system_time_set

fx_system_time_get

获取当前系统时间。

原型

UINT fx_system_time_get(
    UINT *hour,
    UINT *minute,
    UINT *second);

说明

此服务检索当前系统时间。

输入参数

  • hour:指向小时的目标的指针。
  • minute:指向分钟的目标的指针。
  • second:指向秒的目标的指针。

返回值

  • FX_SUCCESS (0x00) 成功检索系统时间。
  • FX_PTR_ERROR (0x18) 一个或多个输入参数

允许来自

线程数

示例

UINT             status;
UINT             hour;
UINT             minute;
UINT             second;

/* Retrieve the current system time. */

status = fx_system_time_get(&hour, &minute, &second);

/* If status equals FX_SUCCESS, the current system time
    is in the hour, minute, and second variables. */

另请参阅

  • fx_system_date_get
  • fx_system_date_set
  • fx_system_initialize
  • fx_system_time_set

fx_system_time_set

设置当前系统时间。

原型

UINT fx_system_time_set(
    UINT hour, 
    UINT minute, 
    UINT second);

说明

此服务将当前系统时间设置为输入参数指定的时间。

警告

应在调用 fx_system_initialize 函数后不久调用此服务,以设置初始系统时间。 默认情况下,系统时间为 0:0:0。

输入参数

  • hour:新小时 (0-23)。
  • minute:新分钟 (0-59)。
  • second:新秒 (0-59)。

返回值

  • FX_SUCCESS (0x00) 成功检索系统时间。
  • FX_INVALID_HOUR (0x15) 新小时无效。
  • FX_INVALID_MINUTE (0x16) 新分钟无效。
  • FX_INVALID_SECOND (0x17) 新秒无效。

允许来自

线程数

示例

 UINT status;

/* Set the current system time to hour 23, minute 21, and second 20. */

status = fx_system_time_set(23, 21, 20);

/* If status is FX_SUCCESS, the current system time has been set. */

另请参阅

  • fx_system_date_get
  • fx_system_date_set
  • fx_system_initialize
  • fx_system_time_get

fx_unicode_directory_create

创建以 Unicode 命名的目录。

原型

UINT fx_unicode_directory_create(
    FX_MEDIA *media_ptr, 
    UCHAR *source_unicode_name,
    ULONG source_unicode_length, 
    CHAR *short_name);

说明

此服务在当前默认目录中创建一个 Unicode 命名的子目录,这是因为 Unicode 源名称参数中不允许有路径信息。 如果成功,该服务将返回新创建的 Unicode 子目录的短名称(8.3 格式)。

警告

Unicode 子目录上的所有操作(使其成为默认路径、删除等)应通过将返回的短名称(8.3 格式)提供给标准 FileX 目录服务来完成。

重要

exFAT 媒体不支持此服务。

输入参数

  • media_ptr:指向媒体控制块的指针。
  • source_unicode_name:指向新子目录的 Unicode 名称的指针。
  • source_unicode_length:Unicode 名称的长度。
  • short_name:指向新 Unicode 子目录的短名称(8.3 格式)的目标的指针。

返回值

  • FX_SUCCESS (0x00) 成功创建 Unicode 目录。
  • FX_MEDIA_NOT_OPEN (0x11) 指定的媒体未打开。
  • FX_ALREADY_CREATED (0x0B) 已存在指定的目录。
  • FX_NO_MORE_SPACE (0x0A) 新目录条目的媒体中不再有可用的群集。
  • FX_NOT_IMPLEMENTED (0x22) 未为 exFAT 文件系统实现服务。
  • FX_WRITE_PROTECT (0x23) 指定的媒体受到写入保护。
  • FX_PTR_ERROR (0x18) 媒体或名称指针无效。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误。

允许来自

线程数

示例

FX_MEDIA             ram_disk;
UCHAR                 my_short_name[13];
UCHAR                 my_unicode_name[] = {0x38,0xC1, 0x88,0xBC, 0xF8,0xC9, 0x20,0x00,
                                         0x54,0xD6, 0x7C,0xC7, 0x20,0x00, 0x74,0xC7,
                                         0x84,0xB9, 0x20,0x00, 0x85,0xC7, 0xC8,0xB2,
                                         0xE4,0xB2, 0x2E,0x00, 0x64,0x00, 0x6F,0x00,
                                         0x63,0x00, 0x00,0x00};

/* Create a Unicode subdirectory with the name contained in "my_unicode_name". */

length = fx_unicode_directory_create(&ram_disk, my_unicode_name, 17, my_short_name);

/* If successful, the Unicode subdirectory is created and "my_short_name"
    contains the 8.3 format name that can be used with other FileX services. */

另请参阅

  • fx_directory_attributes_read
  • fx_directory_attributes_set
  • fx_directory_create
  • fx_directory_default_get
  • fx_directory_default_set
  • fx_directory_delete
  • fx_directory_first_entry_find
  • fx_directory_first_full_entry_find
  • fx_directory_information_get
  • fx_directory_local_path_clear
  • fx_directory_local_path_get
  • fx_directory_local_path_restore
  • fx_directory_local_path_set
  • fx_directory_long_name_get
  • fx_directory_name_test
  • fx_directory_next_entry_find
  • fx_directory_next_full_entry_find
  • fx_directory_rename
  • fx_directory_short_name_get
  • fx_unicode_directory_rename

fx_unicode_directory_rename

使用 Unicode 字符串重命名目录。

原型

UINT fx_unicode_directory_rename(
    FX_MEDIA *media_ptr, 
    UCHAR *old_unicode_name,
    ULONG old_unicode_length, 
    UCHAR *new_unicode_name,
    ULONG new_unicode_length,
    CHAR *new_short_name);

说明

此服务会将 Unicode 命名的子目录更改为当前工作目录中的指定新 Unicode 名称。 Unicode 名称参数不能包含路径信息。

重要

exFAT 媒体不支持此服务。

输入参数

  • media_ptr:指向媒体控制块的指针。
  • old_unicode_name:指向当前文件的 Unicode 名称的指针。
  • old_unicode_name_length:当前 Unicode 名称的长度。
  • new_unicode_name:指向新 Unicode 文件名的指针。
  • old_unicode_name_length:新 Unicode 名称的长度。
  • new_short_name:指向重命名 Unicode 文件的短名称(8.3 格式)的目标的指针。 使用 Unicode 重命名目录

返回值

  • FX_SUCCESS (0x00) 成功打开媒体。
  • FX_MEDIA_NOT_OPEN (0x11) 指定的媒体未打开。
  • FX_ALREADY_CREATED (0x0B) 已存在指定的目录名称。
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误。
  • FX_PTR_ERROR (0x18) 一个或多个指针为 NULL。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。
  • FX_WRITE_PROTECT (0x23) 指定的媒体受到写入保护。

允许来自

线程数

示例

FX_MEDIA             my_media;
UINT                 status;
UCHAR                 my_short_name[13];
UCHAR                 my_old_unicode_name[] = {'a', '\0', 'b', '\0', 'c', '\0', '\0', '\0'};
UCHAR                 my_new_unicode_name[] = {'d', '\0', 'e', '\0', 'f', '\0', '\0', '\0'};

/* Change the Unicode-named file "abc" to "def". */

status = fx_unicode_directory_rename(&my_media, my_old_unicode_name,
    3, my_new_unicode_name, 3, my_short_name);

/* If status equals FX_SUCCESS, the directory was changed to "def" and
    "my_short_name" contains the 8.3 format name that can be used with other FileX services. */

另请参阅

  • fx_directory_attributes_read
  • fx_directory_attributes_set
  • fx_directory_create
  • fx_directory_default_get
  • fx_directory_default_set
  • fx_directory_delete
  • fx_directory_first_entry_find
  • fx_directory_first_full_entry_find
  • fx_directory_information_get
  • fx_directory_local_path_clear
  • fx_directory_local_path_get
  • fx_directory_local_path_restore
  • fx_directory_local_path_set
  • fx_directory_long_name_get
  • fx_directory_name_test
  • fx_directory_next_entry_find
  • fx_directory_next_full_entry_find
  • fx_directory_rename
  • fx_directory_short_name_get
  • fx_unicode_directory_create

fx_unicode_file_create

创建以 Unicode 命名的文件。

原型

UINT fx_unicode_file_create(
    FX_MEDIA *media_ptr, 
    UCHAR *source_unicode_name,
    ULONG source_unicode_length, 
    CHAR *short_name);

说明

此服务在当前默认目录中创建一个 Unicode 命名的文件,Unicode 源名称参数中不允许有路径信息。 如果成功,该服务将返回新创建的 Unicode 文件的短名称(8.3 格式)。

警告

Unicode 文件上的所有操作(打开、写入、读取、关闭等)应通过将返回的短名称(8.3 格式)提供给标准 FileX 文件服务来完成。

输入参数

  • media_ptr:指向媒体控制块的指针。
  • source_unicode_name:指向新文件的 Unicode 名称的指针。
  • source_unicode_length:Unicode 名称的长度。
  • short_name:指向新 Unicode 文件的短名称(8.3 格式)的目标的指针。

返回值

  • FX_SUCCESS (0x00) 成功创建文件。
  • FX_MEDIA_NOT_OPEN (0x11) 指定的媒体未打开。
  • FX_ALREADY_CREATED (0x0B) 已存在指定的文件。
  • FX_NO_MORE_SPACE (0x0A) 新文件条目的媒体中不再有可用的群集。
  • FX_NOT_IMPLEMENTED (0x22) 未为 exFAT 文件系统实现服务。
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误。
  • FX_WRITE_PROTECT (0x23) 指定的媒体受到写入保护。
  • FX_PTR_ERROR (0x18) 媒体或名称指针无效。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例

FX_MEDIA         ram_disk;
UCHAR             my_short_name[13];
UCHAR             my_unicode_name[] = {0x38,0xC1, 0x88,0xBC, 0xF8,0xC9, 0x20,0x00,
                                     0x54,0xD6, 0x7C,0xC7, 0x20,0x00, 0x74,0xC7,
                                     0x84,0xB9, 0x20,0x00, 0x85,0xC7, 0xC8,0xB2,
                                     0xE4,0xB2, 0x2E,0x00, 0x64,0x00, 0x6F,0x00,
                                     0x63,0x00, 0x00,0x00};

/* Create a Unicode file with the name contained in "my_unicode_name". */

length = fx_unicode_file_create(&ram_disk, my_unicode_name, 17, my_short_name);

/* If successful, the Unicode file is created and "my_short_name"
    contains the 8.3 format name that can be used with other FileX services. */

另请参阅

  • fx_file_allocate
  • fx_file_attributes_read
  • fx_file_attributes_set
  • fx_file_best_effort_allocate
  • fx_file_close
  • fx_file_create
  • fx_file_date_time_set
  • fx_file_delete
  • fx_file_extended_allocate
  • fx_file_extended_best_effort_allocate
  • fx_file_extended_relative_seek
  • fx_file_extended_seek
  • fx_file_extended_truncate
  • fx_file_extended_truncate_release
  • fx_file_open
  • fx_file_read
  • fx_file_relative_seek
  • fx_file_rename
  • fx_file_seek
  • fx_file_truncate
  • fx_file_truncate_release
  • fx_file_write
  • fx_file_write_notify_set
  • fx_unicode_file_rename
  • fx_unicode_name_get
  • fx_unicode_short_name_get

fx_unicode_file_rename

使用 unicode 字符串重命名文件。

原型

UINT fx_unicode_file_rename(
    FX_MEDIA *media_ptr, 
    UCHAR *old_unicode_name,
    ULONG old_unicode_length, 
    UCHAR *new_unicode_name,
    ULONG new_unicode_length, 
    CHAR *new_short_name);

说明

此服务会将 Unicode 命名的文件名称更改为当前默认目录中的指定新 Unicode 名称。 Unicode 名称参数不能包含路径信息。

重要

exFAT 媒体不支持此服务。

输入参数

  • media_ptr:指向媒体控制块的指针。
  • old_unicode_name:指向当前文件的 Unicode 名称的指针。
  • old_unicode_name_length*:当前 Unicode 名称的长度。
  • new_unicode_name:指向新 Unicode 文件名的指针。
  • new_unicode_name_length:新 Unicode 名称的长度。
  • new_short_name:指向重命名 Unicode 文件的短名称(8.3 格式)的目标的指针。

返回值

  • FX_SUCCESS (0x00) 成功打开媒体。
  • FX_MEDIA_NOT_OPEN (0x11) 指定的媒体未打开。
  • FX_ALREADY_CREATED (0x0B) 已存在指定的文件名称。
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误。
  • FX_PTR_ERROR (0x18) 一个或多个指针为 NULL。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。
  • FX_WRITE_PROTECT (0x23) 指定的媒体受到写入保护。

允许来自

线程数

示例

FX_MEDIA             my_media;
UINT                 status;
UCHAR                 my_short_name[13];
UCHAR                 my_old_unicode_name[] = {'a', '\0', 'b', '\0', 'c', '\0', '\0', '\0'};
UCHAR                 my_new_unicode_name[] = {'d', '\0', 'e', '\0', 'f', '\0', '\0', '\0'};

/* Change the Unicode-named file "abc" to "def". */

status = fx_unicode_file_rename(&my_media, my_old_unicode_name,
    3, my_new_unicode_name, 3, my_short_name);

/* If status equals FX_SUCCESS, the file name was changed to "def" and
    "my_short_name" contains the 8.3 format name that can be used with other FileX services. */

另请参阅

  • fx_file_allocate
  • fx_file_attributes_read
  • fx_file_attributes_set
  • fx_file_best_effort_allocate
  • fx_file_close
  • fx_file_create
  • fx_file_date_time_set
  • fx_file_delete
  • fx_file_extended_allocate
  • fx_file_extended_best_effort_allocate
  • fx_file_extended_relative_seek
  • fx_file_extended_seek
  • fx_file_extended_truncate
  • fx_file_extended_truncate_release
  • fx_file_open
  • fx_file_read
  • fx_file_relative_seek
  • fx_file_rename
  • fx_file_seek
  • fx_file_truncate
  • fx_file_truncate_release
  • fx_file_write
  • fx_file_write_notify_set
  • fx_unicode_file_create
  • fx_unicode_name_get
  • fx_unicode_short_name_get

fx_unicode_length_get

获取 Unicode 名称的长度。

原型

ULONG fx_unicode_length_get(UCHAR *unicode_name);

说明

此服务确定所提供的 Unicode 名称的长度。 Unicode 字符由两个字节表示。 Unicode 名称是一系列由两个 NULL 字节(两个 0 值字节)终止的两字节的 Unicode 字符。

输入参数

unicode_name:指向 Unicode 名称的指针。

返回值

length:Unicode 名称的长度(名称中的 Unicode 字符数)。

允许来自

线程数

示例

UCHAR     my_unicode_name[] = {0x38,0xC1, 0x88,0xBC, 0xF8,0xC9, 0x20,0x00,
                           0x54,0xD6, 0x7C,0xC7, 0x20,0x00, 0x74,0xC7,
                           0x84,0xB9, 0x20,0x00, 0x85,0xC7, 0xC8,0xB2,
                           0xE4,0xB2, 0x2E,0x00, 0x64,0x00, 0x6F,0x00,
                           0x63,0x00, 0x00,0x00};

UINT     length;

/* Get the length of "my_unicode_name". */

length = fx_unicode_length_get(my_unicode_name);

/* A value of 17 will be returned for the length of the "my_unicode_name". */

另请参阅

  • fx_file_allocate
  • fx_file_attributes_read
  • fx_file_attributes_set
  • fx_file_best_effort_allocate
  • fx_file_close
  • fx_file_create
  • fx_file_date_time_set
  • fx_file_delete
  • fx_file_extended_allocate
  • fx_file_extended_best_effort_allocate
  • fx_file_extended_relative_seek
  • fx_file_extended_seek
  • fx_file_extended_truncate
  • fx_file_extended_truncate_release
  • fx_file_open
  • fx_file_read
  • fx_file_relative_seek
  • fx_file_rename
  • fx_file_seek
  • fx_file_truncate
  • fx_file_truncate_release
  • fx_file_write
  • fx_file_write_notify_set
  • fx_unicode_file_create
  • fx_unicode_file_rename
  • fx_unicode_name_get
  • fx_unicode_short_name_get

fx_unicode_length_get_extended

从指定长度的缓冲区获取 Unicode 名称的长度。

原型

UINT fx_unicode_length_get_extended(
    UCHAR *unicode_name,
    UINT buffer_length);

说明

此服务获取所提供的 Unicode 名称的长度。 Unicode 字符由两个字节表示。 Unicode 名称是一系列由两个 NULL 字节(两个 0 值字节)终止的两字节的 Unicode 字符。

重要

除了调用方传入 unicode_name 缓冲区的大小(包括两个 NULL 字符)之外,此服务与 fx_unicode_length_get 相同。

输入参数

  • unicode_name:指向 Unicode 名称的指针。
  • buffer_length:Unicode 名称缓冲区的大小。

返回值

length:Unicode 名称的长度(名称中的 Unicode 字符数)。

允许来自

线程数

示例

UCHAR         my_unicode_name[] = {0x38,0xC1, 0x88,0xBC, 0xF8,0xC9, 0x20,0x00,
                                 0x54,0xD6, 0x7C,0xC7, 0x20,0x00, 0x74,0xC7,
                                 0x84,0xB9, 0x20,0x00, 0x85,0xC7, 0xC8,0xB2,
                                 0xE4,0xB2, 0x2E,0x00, 0x64,0x00, 0x6F,0x00,
                                 0x63,0x00, 0x00,0x00};

UINT         length;

/* Get the length of "my_unicode_name". */

length = fx_unicode_length_get_extended(my_unicode_name, sizeof(my_unicode_name));

/* A value of 17 will be returned for the length of the "my_unicode_name". */

另请参阅

  • fx_file_allocate
  • fx_file_attributes_read
  • fx_file_attributes_set
  • fx_file_best_effort_allocate
  • fx_file_close
  • fx_file_create
  • fx_file_date_time_set
  • fx_file_delete
  • fx_file_extended_allocate
  • fx_file_extended_best_effort_allocate
  • fx_file_extended_relative_seek
  • fx_file_extended_seek
  • fx_file_extended_truncate
  • fx_file_extended_truncate_release
  • fx_file_open
  • fx_file_read
  • fx_file_relative_seek
  • fx_file_rename
  • fx_file_seek
  • fx_file_truncate
  • fx_file_truncate_release
  • fx_file_write
  • fx_file_write_notify_set
  • fx_unicode_file_create
  • fx_unicode_file_rename
  • fx_unicode_name_get
  • fx_unicode_short_name_get

fx_unicode_name_get

通过短名称获取 Unicode 名称。

原型

UINT fx_unicode_name_get(
    FX_MEDIA *media_ptr, 
    CHAR *source_short_name,
    UCHAR *destination_unicode_name, 
    ULONG *destination_unicode_length);

说明

此服务检索与当前默认目录中的提供的短名称(8.3 格式)相关联的 Unicode 名称,短名称参数中不允许存在路径信息。 如果成功,该服务将返回与短名称关联的 Unicode 名称。

重要

此服务可用于获取文件和子目录的 Unicode 名称。

输入参数

  • media_ptr:指向媒体控制块的指针。
  • short_name 指向短名称(8.3 格式)的指针。
  • destination_unicode_name:指向与所提供的短名称关联的 Unicode 名称的目标的指针。
  • destination_unicode_length:指向返回的 Unicode 名称长度的指针。

返回值

  • FX_SUCCESS (0x00) 成功检索 Unicode 名称。
  • FX_FAT_READ_ERROR (0x03) 无法读取 FAT 表。
  • FX_FILE_CORRUPT (0x08) 文件已损坏
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误。
  • FX_MEDIA_NOT_OPEN (0x11) 指定的媒体未打开。
  • FX_NOT_FOUND (0x04) 未找到短名称,或 Unicode 目标大小太小。
  • FX_SECTOR_INVALID (0x89) 扇区无效。
  • FX_PTR_ERROR (0x18) 媒体或名称指针无效。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例

FX_MEDIA             ram_disk;
UCHAR                 my_unicode_name[256*2];
ULONG                 unicode_name_length;

/* Get the Unicode name associated with the short name "ABC0~111.TXT".
    Note that the Unicode destination must have 2 times the
    number of maximum characters in the name. */

length = fx_unicode_name_get(&ram_disk, "ABC0~111.TXT", my_unicode_name, unicode_name_length);

/* If successful, the Unicode name is returned in "my_unicode_name". */

另请参阅

  • fx_file_allocate
  • fx_file_attributes_read
  • fx_file_attributes_set
  • fx_file_best_effort_allocate
  • fx_file_close
  • fx_file_create
  • fx_file_date_time_set
  • fx_file_delete
  • fx_file_extended_allocate
  • fx_file_extended_best_effort_allocate
  • fx_file_extended_relative_seek
  • fx_file_extended_seek
  • fx_file_extended_truncate
  • fx_file_extended_truncate_release
  • fx_file_open
  • fx_file_read
  • fx_file_relative_seek
  • fx_file_rename
  • fx_file_seek
  • fx_file_truncate
  • fx_file_truncate_release
  • fx_file_write
  • fx_file_write_notify_set
  • fx_unicode_file_create
  • fx_unicode_file_rename
  • fx_unicode_short_name_get

fx_unicode_name_get_extended

通过指定长度的缓冲区中的短名称获取 Unicode 名称。

原型

UINT fx_unicode_name_get_extended(
    FX_MEDIA *media_ptr,
    CHAR *source_short_name,
    UCHAR *destination_unicode_name,
    ULONG *destination_unicode_length,
    ULONG unicode_name_buffer_length);

说明

此服务检索与当前默认目录中的提供的短名称(8.3 格式)相关联的 Unicode 名称,短名称参数中不允许存在路径信息。 如果成功,该服务将返回与短名称关联的 Unicode 名称。

重要

该服务与 fx_unicode_name_get 相同,只是调用方提供目标 Unicode 缓冲区的大小作为输入参数。 这使得服务保证它不会覆盖目标 Unicode 缓冲区

重要

此服务可用于获取文件和子目录的 Unicode 名称。

输入参数

  • media_ptr:指向媒体控制块的指针。
  • short_name:指向短名称(8.3 格式)的指针。
  • destination_unicode_name:指向与所提供的短名称关联的 Unicode 名称的目标的指针。
  • destination_unicode_length:指向返回的 Unicode 名称长度的指针。
  • unicode_name_buffer_length:Unicode 名称缓冲区的大小。 注意:需要 NULL 终止符,这会产生额外的字节。

返回值

  • FX_SUCCESS (0x00) 成功检索 Unicode 名称。
  • FX_FAT_READ_ERROR (0x03) 无法读取 FAT 表。
  • FX_FILE_CORRUPT (0x08) 文件已损坏
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误。
  • FX_MEDIA_NOT_OPEN (0x11) 指定的媒体未打开。
  • FX_NOT_FOUND (0x04) 未找到短名称,或 Unicode 目标大小太小。
  • FX_SECTOR_INVALID (0x89) 扇区无效。
  • FX_PTR_ERROR (0x18) 媒体或名称指针无效。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例

FX_MEDIA         ram_disk;
UCHAR             my_unicode_name[256*2];
ULONG             unicode_name_length;

/* Get the Unicode name associated with the short name "ABC0~111.TXT".
    Note that the Unicode destination must have 2 times the number of maximum characters in the name. */

length = fx_unicode_name_get_extended(&ram_disk, "ABC0~111.TXT",
    my_unicode_name,&unicode_name_length, sizeof(ny_unicode_name));

/* If successful, the Unicode name is returned in "my_unicode_name". */

另请参阅

  • fx_file_allocate
  • fx_file_attributes_read
  • fx_file_attributes_set
  • fx_file_best_effort_allocate
  • fx_file_close
  • fx_file_create
  • fx_file_date_time_set
  • fx_file_delete
  • fx_file_extended_allocate
  • fx_file_extended_best_effort_allocate
  • fx_file_extended_relative_seek
  • fx_file_extended_seek
  • fx_file_extended_truncate
  • fx_file_extended_truncate_release
  • fx_file_open
  • fx_file_read
  • fx_file_relative_seek
  • fx_file_rename
  • fx_file_seek
  • fx_file_truncate
  • fx_file_truncate_release
  • fx_file_write
  • fx_file_write_notify_set
  • fx_unicode_file_create
  • fx_unicode_file_rename
  • fx_unicode_short_name_get

fx_unicode_short_name_get

通过 Unicode 名称获取短名称。

原型

UINT fx_unicode_short_name_get(
    FX_MEDIA *media_ptr,
    UCHAR *source_unicode_name,
    ULONG source_unicode_length,
    CHAR *destination_short_name);

此服务检索与当前默认目录中的 Unicode 名称关联的短名称(8.3 格式),Unicode 名称参数中不允许存在路径信息。 如果成功,该服务将返回与 Unicode 名称关联的短名称。

重要

此服务可用于获取文件和子目录的短名称。

输入参数

  • media_ptr:指向媒体控制块的指针。
  • source_unicode_name:指向 Unicode 名称的指针。
  • source_unicode_length:Unicode 名称的长度。
  • destination_short_name:指向短名称(8.3 格式)的目标的指针。 它的大小必须至少为 13 个字节。

返回值

  • FX_SUCCESS (0x00) 成功检索短名称。
  • FX_FAT_READ_ERROR (0x03) 无法读取 FAT 表。
  • FX_FILE_CORRUPT (0x08) 文件已损坏
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误。
  • FX_MEDIA_NOT_OPEN (0x11) 指定的媒体未打开。
  • FX_NOT_FOUND (0x04) 未找到 Unicode 名称。
  • FX_NOT_IMPLEMENTED (0x22) 未为 exFAT 文件系统实现服务。
  • FX_SECTOR_INVALID (0x89) 扇区无效。
  • FX_PTR_ERROR (0x18) 媒体或名称指针无效。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例

FX_MEDIA         ram_disk;
UCHAR             my_short_name[13];
UCHAR             my_unicode_name[] = {0x38,0xC1, 0x88,0xBC, 0xF8,0xC9, 0x20,0x00,
                                     0x54,0xD6, 0x7C,0xC7, 0x20,0x00, 0x74,0xC7,
                                     0x84,0xB9, 0x20,0x00, 0x85,0xC7, 0xC8,0xB2,
                                     0xE4,0xB2, 0x2E,0x00, 0x64,0x00, 0x6F,0x00,
                                     0x63,0x00, 0x00,0x00};

/* Get the short name associated with the Unicode name contained in the array "my_unicode_name". */

length = fx_unicode_short_name_get(&ram_disk, my_unicode_name, 17, my_short_name);

/* If successful, the short name is returned in "my_short_name". */

另请参阅

  • fx_file_allocate
  • fx_file_attributes_read
  • fx_file_attributes_set
  • fx_file_best_effort_allocate
  • fx_file_close
  • fx_file_create
  • fx_file_date_time_set
  • fx_file_delete
  • fx_file_extended_allocate
  • fx_file_extended_best_effort_allocate
  • fx_file_extended_relative_seek
  • fx_file_extended_seek
  • fx_file_extended_truncate
  • fx_file_extended_truncate_release
  • fx_file_open
  • fx_file_read
  • fx_file_relative_seek
  • fx_file_rename
  • fx_file_seek
  • fx_file_truncate
  • fx_file_truncate_release
  • fx_file_write
  • fx_file_write_notify_set
  • fx_unicode_file_create
  • fx_unicode_file_rename
  • fx_unicode_name_get

fx_unicode_short_name_get_extended

通过指定长度的缓冲区中的 Unicode 名称获取短名称。

原型

UINT fx_unicode_short_name_get_extended(
    FX_MEDIA *media_ptr,
    UCHAR *source_unicode_name,
    ULONG source_unicode_length, 
    CHAR *destination_short_name,
    ULONG short_name_buffer_length);

说明

此服务检索与当前默认目录中的 Unicode 名称关联的短名称(8.3 格式),Unicode 名称参数中不允许存在路径信息。 如果成功,该服务将返回与 Unicode 名称关联的短名称。

重要

该服务与 fx_unicode_short_name_get 相同,只是调用方提供目标缓冲区的大小作为输入参数。 这使得服务保证短名称不超过目标缓冲区。

注意

此服务可用于获取文件和子目录的短名称

输入参数

  • media_ptr:指向媒体控制块的指针。
  • source_unicode_name:指向 Unicode 名称的指针。
  • source_unicode_length:Unicode 名称的长度。
  • destination_short_name:指向短名称(8.3 格式)的目标的指针。 它的大小必须至少为 13 个字节。
  • short_name_buffer_length:目标缓冲区的大小。 缓冲区大小必须至少为 14 字节。

返回值

  • FX_SUCCESS (0x00) 成功检索短名称。
  • FX_FAT_READ_ERROR (0x03) 无法读取 FAT 表。
  • FX_FILE_CORRUPT (0x08) 文件已损坏
  • FX_IO_ERROR (0x90) 驱动程序 I/O 错误。
  • FX_MEDIA_NOT_OPEN (0x11) 指定的媒体未打开。
  • FX_NOT_FOUND (0x04) 未找到 Unicode 名称。
  • FX_NOT_IMPLEMENTED (0x22) 未为 exFAT 文件系统实现服务。
  • FX_SECTOR_INVALID (0x89) 扇区无效。
  • FX_PTR_ERROR (0x18) 媒体或名称指针无效。
  • FX_CALLER_ERROR (0x20) 调用方不是线程。

允许来自

线程数

示例

#define         SHORT_NAME_BUFFER_SIZE 13
FX_MEDIA         ram_disk;
UCHAR             my_short_name[SHORT_NAME_BUFFER_SIZE];
UCHAR             my_unicode_name[] = {0x38,0xC1, 0x88,0xBC, 0xF8,0xC9, 0x20,0x00,
                                     0x54,0xD6, 0x7C,0xC7, 0x20,0x00, 0x74,0xC7,
                                     0x84,0xB9, 0x20,0x00, 0x85,0xC7, 0xC8,0xB2,
                                     0xE4,0xB2, 0x2E,0x00, 0x64,0x00, 0x6F,0x00,
                                     0x63,0x00, 0x00,0x00};

/* Get the short name associated with the Unicode name contained in the array "my_unicode_name". */

length = fx_unicode_short_name_get_extended(&ram_disk,
    my_unicode_name, 17, my_short_name,SHORT_NAME_BUFFER_SIZE);

/* If successful, the short name is returned in "my_short_name". */

另请参阅

  • fx_file_allocate
  • fx_file_attributes_read
  • fx_file_attributes_set
  • fx_file_best_effort_allocate
  • fx_file_close
  • fx_file_create
  • fx_file_date_time_set
  • fx_file_delete
  • fx_file_extended_allocate
  • fx_file_extended_best_effort_allocate
  • fx_file_extended_relative_seek
  • fx_file_extended_seek
  • fx_file_extended_truncate
  • fx_file_extended_truncate_release
  • fx_file_open
  • fx_file_read
  • fx_file_relative_seek
  • fx_file_rename
  • fx_file_seek
  • fx_file_truncate
  • fx_file_truncate_release
  • fx_file_write
  • fx_file_write_notify_set
  • fx_unicode_file_create
  • fx_unicode_file_rename
  • fx_unicode_name_get
  • fx_unicode_short_name_get