3.2.5.7 Receiving an Open Request with a Target Specifier

The received buffer MUST be interpreted as the FILE_FULL_EA_INFORMATION structure specified in [MS-FSCC] section 2.4.15.

If EaValueLength is greater than or equal to 24, and EaName is equal to "RSVD_TARGET_SPECIFIER_EA", the server MUST process as follows:

  • The EaValue MUST be interpreted as the RSVD_BLOCK_DEVICE_TARGET_SPECIFIER structure specified in section 2.2.4.34.

  • If EaValue.RsvdBlockDeviceTargetNamespace is not SnapshotId, the server MUST return STATUS_INVALID_PARAMETER.

  • If EaValue.TargetInformationSnapshot.SnapshotType is not SvhdxSnapshotTypeVM or SvhdxSnapshotTypeWriteable, then the server MUST return STATUS_INVALID_PARAMETER.

  • Otherwise, the server MUST look up an Open in OpenTable where Open.VHDSSnapshotId is equal to EaValue.TargetInformationSnapshot.SnapshotID. If an entry is found, the server MUST return STATUS_SUCCESS, and no further processing is specified. If an entry is not found, the server MUST issue an Open on the VHD set file to the virtual SCSI disk in an implementation-specific manner. If the virtual SCSI disk indicates success, the server MUST initialize an Open object with the following:

    • Open.LocalOpen is set to the Open of the object in the local resource received as part of the local create operation.

    • Open.FileName MUST be set to the application-provided file name.

    • Open.SenseErrorDataList MUST be set to empty.

    • Open.SenseErrorSequence MUST be set to 0x00.

    • Open.CreateOptions MUST be set to the CreateOptions received as part of the local create operation.

    • Open.IsVHDSet MUST be set to TRUE. 

    • Open.PendingDelete MUST be set to FALSE.

    • Open.VHDSSnapshotId MUST be set to EaValue.TargetInformationSnapshot.SnapshotID.

  • The server MUST return the status returned by the virtual SCSI disk.