3.4.5.3.1.3 Processing Details

If the FileExtension field of any FILE_INFO_INPUT_ENTRY entry in FileVector is greater than an implementation-specific maximum size<11>, the server MUST fail the request with status code 500.

Otherwise, for each FILE_INFO_INPUT_ENTRY structure in FileVector, the server constructs a FILE_INFO_ENTRY structure as follows:

  • The server MUST set SyncItemId to the SyncItemId of FILE_INFO_INPUT_ENTRY.

  • The server MUST set Length field to zero.

  • The server MUST search for a FileMetadata entry in FileMetadataTable where FILE_INFO_INPUT_ENTRY.SyncItemId matches with FileMetadata.FileId. If no entry is found, the server MUST set ProtocolType to 0x01 and MUST set PrepareResult to zero.

  • Otherwise, if a FileMetadata entry is found and FileMetadata.Attributes contains FILE_ATTRIBUTE_DIRECTORY, the server MUST set ProtocolType to 0x00 and MUST set PrepareResult to ECS_E_STREAM_NOT_NEEDED, as specified in section 2.2.2.28.

  • Otherwise, if FileMetadata.FileStreamId is equal to FILE_INFO_INPUT_ENTRY.StreamId, the server MUST set ProtocolType to 0x00 and MUST set PrepareResult to ECS_E_STREAM_NOT_NEEDED, as specified in section 2.2.2.28.

  • Otherwise, if FileMetadata.FileStreamId is not equal to FILE_INFO_INPUT_ENTRY.StreamId, and FILE_INFO_INPUT_ENTRY.FileSize is greater than the implementation-specific<12> maximum size allowed, the server MUST set ProtocolType to 0x00 and MUST set PrepareResult to ECS_E_FILE_TOO_LARGE_FOR_UPLOAD, as specified in section 2.2.2.28.

  • Otherwise, if FileMetadata.FileStreamId is not equal to FILE_INFO_INPUT_ENTRY.StreamId, and FILE_INFO_INPUT_ENTRY.FileSize is greater than the space available for a user, the server MUST set ProtocolType to 0x00 and MUST set PrepareResult to ERROR_DISK_FULL, as specified in [MS-ERREF] section 2.1.1.

  • Otherwise the server MUST set ProtocolType to 0x01 and MUST set PrepareResult to zero.

The server MUST construct a VECTOR_FILE_INFO_ENTRY structure using the FILE_INFO_ENTRY structures constructed above.

The server MUST set a FileList response header with the VECTOR_FILE_INFO_ENTRY structure constructed above and send a response with status code 200.