NANDSimpleSafeOpenAsync

Syntax

#include <revolution/nand.h>

#define NAND_ACCESS_READ       0x01
#define NAND_ACCESS_WRITE      0x02
#define NAND_ACCESS_RW         (NAND_ACCESS_READ | NAND_ACCESS_WRITE)

typedef void (*NANDCallback)( s32 result, NANDCommandBlock *block );

s32 NANDSimpleSafeOpenAsync(const char *path, NANDFileInfo *info, u8 accType, void *buf, u32 length, NANDCallback cb, NANDCommandBlock *block);

Arguments

path Name of the file to open.
info Pointer to a NANDFileInfo structure.
accType Access type. Specifies either NAND_ACCESS_READ, NAND_ACCESS_WRITE or NAND_ACCESS_RW.
buf Specifies the leading address of the buffer to be used when copying files. The buffer must be 32-byte aligned.
length Specifies the size of the buffer to be used when copying files. The size must be a multiple of NAND_FSBLOCK_SIZE (16KB).
cb Callback function to call when this function completes processing.
block Command block structure to be passed to the callback function.

Return Values

The result codes that NANDSimpleSafeOpenAsync can return are listed below. When the request begins normally, returns NAND_RESULT_OK.

NAND_RESULT_OK
NAND_RESULT_ACCESS
NAND_RESULT_ALLOC_FAILED
NAND_RESULT_BUSY
NAND_RESULT_INVALID
NAND_RESULT_FATAL_ERROR

The result codes that may be passed to the callback function are listed below.

NAND_RESULT_OK
NAND_RESULT_ACCESS
NAND_RESULT_ALLOC_FAILED
NAND_RESULT_AUTHENTICATION
NAND_RESULT_BUSY
NAND_RESULT_CORRUPT
NAND_RESULT_ECC_CRIT
NAND_RESULT_EXISTS
NAND_RESULT_INVALID
NAND_RESULT_MAXBLOCKS
NAND_RESULT_MAXFD
NAND_RESULT_MAXFILES
NAND_RESULT_NOEXISTS
NAND_RESULT_UNKNOWN
NAND_RESULT_FATAL_ERROR

Description

Asynchronously opens a file in a manner that guarantees the atomic nature of file updates. The file opened using this function must be closed using either the NANDSimpleSafeClose or the NANDSimpleSafeCloseAsync function. Appropriate permissions (both read and write) must be set for the parent directory of the file to which NANDSimpleSafe-related functions are applied.

This function cannot be used to open more than one file that has the same file name (for example, You cannot open ~/userA/save.dat and ~/userB/save.dat simultaneously (NAND_RESULT_EXISTS will be returned).

The callback specified with this function may receive NAND_RESULT_ALLOC_FAILED or NAND_RESULT_BUSY when NAND_ACCESS_WRITE or NAND_ACCESS_RW is specified for accType.

When NAND_ACCESS_WRITE or NAND_ACCESS_RW is specified for accType, this function will update the FAT in Wii console NAND memory.

See Also

NANDSimpleSafeOpen, NANDSimpleSafeClose, NANDSimpleSafeCloseAsync, NANDSimpleSafeCancel, NANDSimpleSafeCancelAsync

Revision History

2008/08/01 Added an explanation related to FAT updates.
2008/07/29 Added information regarding the result code that the callback function might receive.
2008/05/13 Described the result codes passed to the callback function.
2007/05/09 Initial version.


CONFIDENTIAL