⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 davsearch.h

📁 FDI Intel开发的FLASH文件系统,功能很强大
💻 H
字号:
/* Copyright (c) 1995-2004 Intel Corporation */
/* Intel Confidential                        */

/* ###########################################################################
###  DAV - Direct Access Volume Enhancement to FDI
###
###  Module: davsearch.h - DAV Search Include File
###
###  $Workfile: davsearch.h $
###  $Revision: 5 $
###  $NoKeywords: $
########################################################################### */

/*                                                               
 *****************************************************************
 * NOTICE OF LICENSE AGREEMENT                                    
 *                                                                
 * This code is provided by Intel Corp., and the use is governed  
 * under the terms of a license agreement. See license agreement  
 * for complete terms of license.                                 
 *                                                                
 * YOU MAY ONLY USE THE SOFTWARE WITH INTEL FLASH PRODUCTS.  YOUR 
 * USE OF THE SOFTWARE WITH ANY OTHER FLASH PRODUCTS IS EXPRESSLY 
 * PROHIBITED UNLESS AND UNTIL YOU APPLY FOR, AND ARE GRANTED IN  
 * INTEL'S SOLE DISCRETION, A SEPARATE WRITTEN SOFTWARE LICENSE   
 * FROM INTEL LICENSING ANY SUCH USE.                             
 *****************************************************************
 */
 

#ifndef __davsearch_h  /* sentry header */
#define __davsearch_h

/*### Include Files
#########################*/
#if (DIRECT_ACCESS_VOLUME == TRUE)

#include "davhdr.h"
#include "davobj.h"

/*### Local Declarations
#########################*/

/*### Global Declarations
#########################*/

/*########################################################################*/
/*### Macros and types for searching headers                              */

/* Header Table Search Types. */
typedef enum 
{
   SEARCH_ByNextObject = 0,               /* Return next object in the header table.           */
   SEARCH_ByNextValidObject,              /* Return the next valid object in the header table. */  
   SEARCH_ByNextValidParaObject,          /* Return next valid para object in the header table.*/
   SEARCH_ByNextPageObject,               /* Return next page object in the header table.      */
   SEARCH_ByNextValidPageObject,          /* Return next valid page object in the header table.*/
   SEARCH_ByNextInvalidPageObject,        /* Return Next Invalid Object.                       */
   SEARCH_ByValidType,                    /* Return the next valid object with the             */
                                          /*  specified type.                                  */
   SEARCH_ByHeaderAddress,                /* Return the next object that matches the           */
                                          /*  specified header address (fast search).          */
   SEARCH_ByTypeOnly,                     /* Return the next object of the specified type.     */
   SEARCH_ByNameType,                     /* Return the next object with the specified         */
                                          /*  name + type.                                     */
   SEARCH_ByName,                         /* Return the next object with the specified name.   */
   SEARCH_ByNextWriteInProgressObject,    /* Return Next WIP Object.                           */
   SEARCH_ByPartialAllocFixedHdrComplete, /* Only the object (HDR) was complete                */
   SEARCH_ByObjectAddress,                /* Return the next object header that matches the    */
                                          /*  specified object address.                        */
   SEARCH_ByObjectHeaderAddress,          /* Return the next object header that matches the    */
                                          /*  specified object header address.                 */
   SEARCH_ByFreeOrWIPType                 /* Return only free (empty) or WIP objects of the    */
                                          /*  specified type                                   */
} SEARCH_SearchMethodEnum;

typedef struct
{
   HDR_ObjectData CurrObj;    /* Current object information         */
   HDR_HeaderPtr  HeaderPtr;  /* Pointer to a FDI_Header structure  */
} SEARCH_SearchInfo, __FAR_ * SEARCH_SearchInfoPtr;

typedef struct
{
   HDR_HeaderPtr  HeaderPtr;  /* Pointer to a FDI_Header structure  */
} SEARCH_SearchInfo2, __FAR_ * SEARCH_SearchInfo2Ptr;

/* This structure defines the values used to compare against */
/* during an object search.                                  */
typedef struct
{
   UINT32       CompareValue;
   UINT32       CompareValue2;
   HDR_NamePtr  NamePtr;
   UINT8        NameSize;
} SEARCH_CompareInfo, __FAR_ * SEARCH_CompareInfoPtr;

/* This defines the special condition for manipulating the way */
/*  GetNextHeaderHandle functions.                             */
typedef enum
{
   SEARCH_Normal = 0,     /* Use spec. parameters for starting header.      */
   SEARCH_StartAtCurrent, /* Return info about the current header as        */
                          /* well as the next (read the header).            */
   SEARCH_UseSearchInfo   /* Use obj info in SearchInfo parameter as        */
                          /* starting point (don't read from flash first).  */
} SEARCH_SpecialConditionEnum;

/*### GetNextObject Search Methods
##################################*/
typedef enum
{
   SearchByNextObject,
   SearchByType,
   SearchByName,
   SearchByNameType
} FDI_SearchMethod;


/*### Initializing Structures
################################*/

/*### Global Functions
#########################*/
ERR_CODE SEARCH_GetNextHeaderHandle(SEARCH_SearchInfoPtr        aSrchInfoPtr,
                                    SEARCH_SpecialConditionEnum aSpecialCondition,
                                    BOOLEAN                     restart);

ERR_CODE SEARCH_GetNextHeader(SEARCH_SearchInfoPtr     aSrchInfoPtr,
                              SEARCH_SearchMethodEnum  aCompareMethod,
                              SEARCH_CompareInfoPtr    aCompareInfoPtr,
                              BOOLEAN                  restart);
                         
FDI_Handle SEARCH_CalcNextHdrAddr(FDI_Handle aCurrentHeaderHandle);

ERR_CODE SEARCH_CalcFirstUserObjectHdrAddr(FDI_HandlePtr aHandlePtr);

ERR_CODE SEARCH_CalcLastUserObjectHdrAddr(FDI_HandlePtr aHandlePtr);

ERR_CODE SEARCH_CalcFirstInternalObjectHdrAddr(FDI_HandlePtr aHandlePtr);

ERR_CODE SEARCH_CalcNextUserObjectHdrAddr(FDI_Handle    aCurrentHeaderHandle, 
                                          FDI_HandlePtr aNextHeaderHandlePtr);

ERR_CODE SEARCH_CalcPrevUserObjectHdrAddr(FDI_Handle    aCurrentHeaderHandle, 
                                          FDI_HandlePtr aPrevHeaderHandlePtr);

ERR_CODE SEARCH_CalcNextInternalObjectHdrAddr(FDI_Handle    aCurrentHeaderHandle, 
                                              FDI_HandlePtr aNextHeaderHandlePtr);


UINT32 SEARCH_GetObjectSize(FDI_ObjectInfoPtr aInfoPtr);

UINT32 SEARCH_GetObjectSize2(SEARCH_SearchInfoPtr aPtr);


/* data structure conversion functions */
void SEARCH_Header2SearchInfo(SEARCH_SearchInfoPtr aSrchInfoPtr, 
                              HDR_HeaderPtr        aHeaderPtr);
                        
void SEARCH_FixedHeader2SearchInfo2(SEARCH_SearchInfo2Ptr aSrchInfoPtr, /* formerly HDR_InitSearchInfo2 */
                                    HDR_FixedHeaderPtr    aHeaderPtr);
                        
void SEARCH_SearchInfo2ObjectInfo(FDI_ObjectInfoPtr    anObjInfoPtr,
                                  SEARCH_SearchInfoPtr aSrchInfoPtr);

void SEARCH_ObjectInfo2Header(HDR_HeaderPtr     aHeaderPtr, 
                              FDI_ObjectInfoPtr anObjInfoPtr);


#endif /* DIRECT_ACCESS_VOLUME */

#endif  /* Sentry */

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -