OEM Parameter Definition with exFAT (Windows Embedded CE 6.0)

1/6/2010

Extended file allocation (exFAT) supports separate parameters that OEMs can define to customize the exFAT file system for a specific device. Each OEM-defined parameter has a type and a value. OEMs can define parameters to specify characteristics of a device, such as performance, and can define a parameter type as a globally unique identifier (GUID).

If an OEM parameter structure exists prior to a FAT format, the structure is preserved after formatting, except in the case of a secure wipe. For more information about secure wipe, see Erasing User Data from Devices.

The structure of the OEM parameters is as follows:

struct
{
   struct
      {
         //If the GUID is all zeroes, it indicates the parameter is undefined.
         GUID OemParameterType;
         //OEM-specific parameter structure
         UCHAR OemParameters[32];
      }
   OemParameterArea[10];
   UCHAR Reserved[32];
}
OEM_PARAMETERS;

OEMs can add performance parameters for flash devices, for example. OEM-defined parameters are ignored by Windows Embedded CE, but can be useful in OEM-specific implementations. They are ignored by Windows implementations.

A value of GUID_NULL for OemParameterType indicates that the structure is undefined. It is recommended that the entire sector be read to determine which parameters are valid, with the implementation skipping parameters for which OemParameterType is set to GUID_NULL.

Currently the following parameter(s) are defined globally:

#define OEM_FLASH_PARAMETER_GUID 0A0C7E46-3399-4021-90C8-FA6D389C4BA2

The parameter defines flash media–specific parameters. If any of the fields in the following example are set to zero, they are considered to be unspecified:

struct
{
   GUID OemParameterType; //Value is OEM_FLASH_PARAMETER_GUID
   UINT32 EraseBlockSize; //Erase block size in bytes
   UINT32 PageSize;
   UINT32 NumberOfSpareBlocks;
   UINT32 tRandomAccess; //Random Access Time in nanoseconds
   UINT32 tProgram; //Program time in nanoseconds
   UINT32 tReadCycle; // Serial read cycle time in nanoseconds
   UINT32 tWriteCycle; // Write Cycle time in nanoseconds
   UCHAR Reserved[4];
}
FlashParameters;

OEMs can allocate unique GUIDs for their own parameters. Use uuidgen.exe in the Windows environment to generate GUIDs.

See Also

Concepts

Extended FAT File System