📄 fs55getfileadr.c
字号:
#ifdef FSS_FTR#define ACCESS_RIGHTS_INTERNAL_FS#define FS55GETFILEADDR_C#undef FILE_NUMBER#define FILE_NUMBER 55 #include "Fs.h"#undef PROCEDURE_NUMBER #define PROCEDURE_NUMBER 1void Fs55_01GetFileAddress( void * pp_Param ){ t_fsVolStruct * pl_Volume; t_FsCmdGetFileAddr * pl_Param = (t_FsCmdGetFileAddr *) pp_Param; t_fsEntityStruct * pl_FsEntityPtr = NIL; /* Pointer on entity's CB */ fsPath * pl_RestOfPath; /* Point in the path after the volume name or if the current path is available pointer on it */ t_ObjectInfo sl_Info; /* Information on an object given from LL */ s32 vl_NumbOfFiles; /* Get entity's context pointer if current path used ( file path begin not with slatch ) */ if ( *pl_Param->p_FileName != '/' ) pl_FsEntityPtr = MC_FS_ED_GET_ENTITY_PTR( MC_FS_KERNEL_ID(pl_Param) ); /* Get volume of object */ pl_Volume = MC_FS_CO_GIVE_VOLUME_FROM_PATH( pl_FsEntityPtr, (ascii*)pl_Param->p_FileName, &pl_RestOfPath, &sl_Info, &MC_FS_STATUS(pl_Param)); /* If no volume return ( status was update by function ) */ if ( pl_Volume == NIL ) return; /* If rest of path empty no file name can be present -> err no entry */ if ( pl_RestOfPath == NIL ) { MC_FS_STATUS(pl_Param) = FS_ENOENT; return; } /* Set the interlayer table pointer */ MC_FS_LL_SET_NEW_VOL(pl_Volume); /* Take info on object ( dir exist, object exist, ...) at low layers */ MC_FS_LL_GET_OBJECT_INFO (&sl_Info, pl_RestOfPath, &MC_FS_STATUS(pl_Param)); /* If an error in info get return */ if ( MC_FS_STATUS(pl_Param) != FS_OK ) return; /* This file exist ? */ if ( sl_Info.s_FileStatus.v_ObjExist ) { /* Verify if object is a file */ if ( sl_Info.s_FileStatus.v_ObjIsFile == FALSE ) { /* Object is not a file but a directory error */ MC_FS_STATUS(pl_Param) = FS_EISDIR; return; } } else { /* No object exist return no entry */ MC_FS_STATUS(pl_Param) = FS_ENOENT; return; } /* Call lower layers to have address of file */ pl_Param->p_FileAddr = NIL; /* Address buffer is to allocate by lower layers */ MC_FS_LL_GET_FILES_ADDR( FS_READ_SINGLE_ADDR_WITH_ID, sl_Info.v_ObjID, 0, NIL ,1 , &pl_Param->p_FileAddr, 0, &vl_NumbOfFiles, &MC_FS_STATUS(pl_Param) );}#undef PROCEDURE_NUMBER #define PROCEDURE_NUMBER 2u32 Fs55_02ProcessGetFileAddress( const fssPath * pp_FileName ){ /* Reserve message space */ t_FsCmdGetFileAddr * pl_GetFileAddr = (t_FsCmdGetFileAddr *) MC_FS_GET_MEMORY(sizeof(t_FsCmdGetFileAddr)); /* Fill message with input parameters */ pl_GetFileAddr->p_FileName = pp_FileName; /* Send message by setting operation and return command identifier */ return( MC_FS_MA_SEND_CMD_MSG_TO_FS( FS_WITH_ACK, (void*) pl_GetFileAddr, FS_CMD_GETFILEADDR_REQ));}#endif /* FSS_FTR */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -