typedef struct PK_SESSION_applio_s { int (*open_rd) (int keylen, const char* key, int *strid); int (*open_wr) (int keylen, const char* key, int *strid); int (*rd_chars) (int strid, int n, char *data); int (*rd_bytes) (int strid, int n, unsigned char *data); int (*rd_shorts) (int strid, int n, short *data); int (*rd_ints) (int strid, int n, int *data); int (*rd_doubles)(int strid, int n, double *data); int (*wr_chars) (int strid, int n, const char *data); int (*wr_bytes) (int strid, int n, const unsigned char *data); int (*wr_shorts) (int strid, int n, const short *data); int (*wr_ints) (int strid, int n, const int *data); int (*wr_doubles)(int strid, int n, const double *data); int (*close) (int strid, int abort); int (*open_uc_rd)(const PK_UCHAR_t *key, int *strid); int (*open_uc_wr)(const PK_UCHAR_t *key, int *strid); } PK_SESSION_applio_t; This data structure holds pointers to the functions the application wishes to register with the PK using PK_SESSION_register_applio. These functions are used during input and output of transmit files with 'application i/o' format. open_rd: opens a 'file' for reading with the given key. The 'strid' returned identifies the file in later read/write operations. Valid function returns are FR_no_errors, FR_not_found, FR_open_fail. open_uc_rd: opens a 'file' for reading with the given Unicode key. The 'strid' returned identifies the file in later read/write operations. Valid function returns are FR_no_errors, FR_not_found, FR_open_fail. rd_xxxx: reads one or more items of data from the given 'file'. Valid returns are FR_no_errors, FR_end_of_file, FR_read_error. open_wr: opens a new 'file' for writing with the given key. The 'strid' returned identifies the file in later read/write operations. Valid function returns are FR_no_errors, FR_already_exists, FR_disc_full, FR_open_fail. open_uc_wr: opens a new 'file' for writing with the given Unicode key. The 'strid' returned identifies the file in later read/write operations. Valid function returns are FR_no_errors, FR_already_exists, FR_disc_full, FR_open_fail. wr_xxxx: writes one or more items of data to the given 'file'. Valid returns are FR_no_errors, FR_end_of_file, FR_write_error. close: closes the given 'file'. If 'abort' is 0, just close it. If 'abort' is 1, close and delete the file (this may be given in the case of an error during transmit). Valid returns are FR_no_errors, FR_close_fail.