共用方式為


2.2.1.9 TableEntryFixed

The TableEntryFixed structure is used in the TableDataFixed (section 2.2.1.10) and TableDataFixedWrite (section 2.2.1.13) structures. These structures are always used along with a TableDataVariable (section 2.2.1.15) structure. This type represents fixed-size parts of the data in a table entry:

  • The status of each property value.

  • The size of each nonfixed size eDT_BYTES property.

  • The property value for each fixed size property.

  • An offset, in bytes, to the property value within a TableDataVariable for each nonfixed size property.

This structure is marshaled as specified in the following diagram.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

Status 0

Status 1

...

...

Status n

Padding

Size 0

Size 1

...

Size m

ValueOrOffset 0 (variable)

ValueOrOffset 1 (variable)

...

ValueOrOffset n (variable)

Status 0-n: The property status for each property, in order by index. MUST be an fPropertyStatus (section 2.2.1.8) value.

Padding: Padding with zeros to a 4-byte boundary from the start of the structure.

Size 0-m: The size, in bytes, represented by an unsigned integer, of the property value for each nonfixed size eDT_BYTES property, in order by index. If the representation of the property value in the associated TableDataVariable structure requires padding to a multiple of 4 bytes, this size does not include the padding bytes.

ValueOrOffset 0-n: The property value or offset for each property, in order by index. The format of this field depends on the type of the property, whether the fPROPERTY_FIXEDLENGTH flag is set in the property's section PropertyMeta (section 2.2.1.7), and whether the NonNull (see section 2.2.1.8) bit is set in the property's Status field.

Type of property

fPROPERTY_FIXEDLENGTH set?

NonNull set?

Format

eDT_ULONG

-

The property value, marshaled as a 32-bit unsigned integer.

eDT_GUID

-

-

The property value, marshaled as specified in [MS-DTYP], section 2.3.4.2.

eDT_BYTES

No

No

A 4-byte field, which SHOULD<9> be zero and MUST be ignored on receipt.

eDT_BYTES

No

Yes

A 32-bit unsigned integer, which MUST be the offset in bytes to the property value from the start of the associated TableDataVariable structure. MUST be a multiple of 4.

eDT_BYTES

Yes

No

A field with length equal to the fixed size of the property, rounded up to a multiple of 4. SHOULD be filled with zeros and MUST be ignored on receipt.

eDT_BYTES

Yes

Yes

The property value, marshaled as an array of bytes, padded with zeros to a multiple of 4 bytes.

eDT_LPWSTR

No

No

A 4-byte field, which SHOULD<10> be zero and MUST be ignored on receipt.

eDT_LPWSTR

No

Yes

A 32-bit unsigned integer, which MUST be the offset in bytes to the property value from the start of the associated TableDataVariable structure. MUST be a multiple of 4.

eDT_LPWSTR

Yes

No

A field with the length equal to the fixed size of the property, rounded up to a multiple of 4. SHOULD be filled with zeros and MUST be ignored on receipt.

eDT_LPWSTR

Yes

Yes

The property value, marshaled as a null-terminated array of wchar_t in little-endian byte order, padded with zeros to a multiple of 4 bytes.