2.10 SIDF

SIDF isolates SMS from the media type and the target’s data format. Since SMS treats all file systems generically, a generic data format is required that is provided by SIDF.

SIDF formats data in two parts: fields and sections. A section represents a unit of data and each section consists of a set of related fields. For example, each of the following data units are represented by a corresponding section containing the full path and any trustees:

  Full path field (first field identifies the section) 
  Offset to end of section value 
  Name space type of path 
  Beginning of each path node in path array 
  Beginning of each separator in path array 
  Path 
  Full path field (last field identifies the end of the section)
  

Through SIDF, similar data from diverse Target Services are presented in the same way. For example, many Target Services have data sets that have a hidden attribute. This attribute may be represented as bit 1 in one Target Service and bit 5 in another Target Service. SIDF allows the representation of the hidden bit to be independent of the bit's position by representing the bit as a field. The field contains the value of the bit (ON or OFF) and a Field IDentifier (FID) that labels the field as a hidden attribute field. When any TSA supports hidden attributes and finds a hidden field, the TSA can set the information.

The data set is represented by a set of related sections such as file header, path information, characteristics, attributes, trustees, data streams, and file trailer for a file data set.

You can call NWSMTSReadDataSet and NWSMTSWriteDataSet to read and write SIDF data. NWSMTSReadDataSet formats all Target Service data into SIDF data while NWSMTSWriteDataSet deformats the formatted data sets and writes it to the Target Service.

2.10.1 Transfer Buffers

A transfer buffer is a multiple of a medium's sector size and specifies how the data is put into the transfer buffer.

There are five components to the transfer buffer.

  • The Transfer Buffer Header signifies the beginning of a transfer buffer.

  • A Data Set Header is inserted before data is placed into a transfer buffer.

    The data follows this header immediately. If there is room for more data, another Data Set Header is inserted immediately after the just inserted data. The data then follows the second Data Set Header. This process continues until there is not enough space for the next Data Set Header or data.

  • A Data Set Subheader is placed into a new transfer buffer if data overflows the current transfer buffer.

    The overflow data (data fragment) follows the Data Set Subheader.

  • The Data or Data Fragment is composed of three pieces of data:

    • Scan Information

    • Data Set Names

    • Data Set

      The scan information and data set names were returned by NWSMTSScanDataSetBegin or NWSMTSScanNextDataSet when the data set was scanned. The data set was returned by NWSMTSReadDataSet.