📄 fs21fclose.c
字号:
#ifdef FSS_FTR#define ACCESS_RIGHTS_INTERNAL_FS#define FS21FCLOSE_C#undef FILE_NUMBER#define FILE_NUMBER 21 #include "Fs.h"#undef PROCEDURE_NUMBER #define PROCEDURE_NUMBER 1void Fs21_01FClose ( void * pp_Param ){ t_FsCmdFClose * pl_Param = (t_FsCmdFClose *) pp_Param; register t_fsFILE * pl_Stream = pl_Param->p_Stream; s32 vl_Status;/* #ifdef FS_DEBUG */ /* Verify if vp_Stream point on a stream if not OK enter an exception */ MC_FS_CO_VERIFY_IF_IS_FILE_OF_ENTITY( pl_Param, pl_Stream ); if ( MC_FS_STATUS(pl_Param) != FS_OK ) return;/* #endif */ /* Set the interlayer table pointer */ MC_FS_LL_SET_NEW_VOL(MC_FS_VD_GET_VOL_PTR_OF_FILE(pl_Stream)); /* Flush file if needed */ MC_FS_BF_FLUSH( pl_Stream,&vl_Status ); /* Close stream */ Fs21_03CloseStream ( pl_Stream );}#undef PROCEDURE_NUMBER #define PROCEDURE_NUMBER 2u32 Fs21_02ProcessFClose( u8 vp_Behaviour, t_fsFILE * pp_Stream){ /* Reserve message space */ t_FsCmdFClose * pl_FClose = (t_FsCmdFClose *) MC_FS_GET_MEMORY(sizeof(t_FsCmdFClose)); /* Fill message with input parameters */ pl_FClose->p_Stream = pp_Stream; /* Send message by setting operation and return command identifier */ return( MC_FS_MA_SEND_CMD_MSG_TO_FS(vp_Behaviour,(void*)pl_FClose,FS_CMD_FCLOSE_REQ));}#undef PROCEDURE_NUMBER #define PROCEDURE_NUMBER 3void Fs21_03CloseStream ( t_fsFILE * pp_Stream ){ s32 vl_Status = FS_OK; /* We must first close the file on lower layers */ MC_FS_LL_CLOSE_FILE( pp_Stream->v_FileID, &vl_Status ); /* Extract file from entity's list */ MC_FS_ED_DELETE_FILE_FROM_ENTITY( pp_Stream ); /* Extract file from the volume list */ MC_FS_VD_DELETE_FILE_FROM_VOL( pp_Stream); /* If an IO buffer is allocated to file free it */ MC_FS_BF_FREEE_BUFF( pp_Stream); /* Invalid FILE structure */ pp_Stream->v_Pattern = 0; /* Release stream structure */ MC_FS_FREE_MEMORY( pp_Stream );}#endif /* FSS_FTR */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -