4.4 Retrieving a VHD Set Snapshot List

The following diagram demonstrates the steps taken to open a VHD Set, retrieve snapshot IDs of the VHD Set, and close it.

Retrieving VHD Set Information

Figure 5: Retrieving VHD Set Information

  1. The client sends a SMB2 CREATE Request with the SVHDX_OPEN_DEVICE_CONTEXT_V2 create context to open a shared virtual disk file.

        Version: 2 (0x00000002)
        HasInitiatorId: 1
        Reserved: 0 (0x000000)
        InitiatorId: 68bad672-2a73-4cd8-9f58-6a4b67232e0d
        Flags: 0 (0x00000000)
        OriginatorFlags: SVHDX_ORIGINATOR_PVHDPARSER(0x00000001)
        OpenRequestId: (0x550916A700000000)
        InitiatorHostNameLength: 20 (0x0014)
        InitiatorHostName: SMBD-SUT01(0x0053004D00420044002D00530055005400300031)
        VirtualDiskPropertiesInitialized: 0 (0x00000000)
        ServerServiceVersion: 0 (0x00000000)
        VirtualSectorSize: 0 (0x00000000)
        PhysicalSectorSize:0 (0x00000000)
        VirtualSize: 0 (0x0000000000000000)
    
  2. The server responds with an SMB2 CREATE Response giving the handle to the open identifying the shared virtual disk file and SVHDX_OPEN_DEVICE_CONTEXT_V2_Response context

        Version: 2 (0x00000002)
        HasInitiatorId: 1
        Reserved: 0 (0x000000)
        InitiatorId: 68bad672-2a73-4cd8-9f58-6a4b67232e0d
        Flags: 0 (0x00000000)
        OriginatorFlags: SVHDX_ORIGINATOR_PVHDPARSER(0x00000001)
        OpenRequestId: (0x550916A700000000)
        InitiatorHostNameLength: 20 (0x0014)
        InitiatorHostName: SMBD-SUT01(0x0053004D00420044002D00530055005400300031)
        VirtualDiskPropertiesInitialized: 1 (0x00000001)
        ServerServiceVersion: 2 (0x00000002)
        VirtualSectorSize: 512 (0x00000200)
        PhysicalSectorSize: 4096 (0x00001000)
        VirtualSize: (0x4000000000000000)
    
  3. The client sends an SMB2 IOCTL Request with SVHDX_TUNNEL_INITIAL_INFO_REQUEST to retrieve the virtual disk information.

        OperationCode: RSVD_TUNNEL_GET_INITIAL_INFO_OPERATION (0x02001001)
        Status: 0 (0x00000000)
        RequestId: (0x550916A700000001)
    
  4. The server sends an SMB2 IOCTL Response with SVHDX_TUNNEL_INITIAL_INFO_RESPONSE containing the virtual disk information.

        OperationCode: RSVD_TUNNEL_GET_INITIAL_INFO_OPERATION (0x02001001)
        Status: 0 (0x00000000)
        RequestId: (0x550916A700000001)
        ServerVersion: 2 (0x00000002)
        SectorSize: 512 (0x00000200)
        PhysicalSectorSize: 256 (0x00000100)
        Reserved: 0 (0x00000000)
        VirtualSize: (0x4000000000000000)
    
  5. The client sends an SMB2 IOCTL Request with SVHDX_TUNNEL_VHDSET_QUERY_INFORMATION_REQUEST to retrieve the list of snapshot IDs of the VHD Set.

        SVHDX_TUNNEL_OPERATION_HEADER:
        OperationCode: RSVD_TUNNEL_VHDSET_QUERY_INFORMATION (0x02002005)
        Status: 0 (0x00000000)
        RequestId: (0x550916A700000002)
         
        SVHDX_TUNNEL_VHDSET_QUERY_INFORMATION_REQUEST: 
        VHDSetInformationType: SvhdxVHDSetInformationTypeSnapshotList(0x00000002)
        SnapshotType: SvhdxSnapshotTypeVM(0x00000001)
        SnapshotId: 00000000-0000-0000-0000-000000000000
    
  6. The server sends an SMB2 IOCTL Response with SVHDX_TUNNEL_VHDSET_QUERY_INFORMATION_SNAPSHOT_LIST_RESPONSE containing the list of snapshot IDs.

        SVHDX_TUNNEL_OPERATION_HEADER:
        OperationCode: RSVD_TUNNEL_VHDSET_QUERY_INFORMATION (0x02002005
        Status: 0 (0x00000000)
        RequestId: (0x550916A700000002)
         
        SVHDX_TUNNEL_VHDSET_QUERY_INFORMATION_SNAPSHOT_LIST_RESPONSE:
        VHDSetInformationType: SvhdxVHDSetInformationTypeSnapshotList(0x00000002)
        Padding: 1(0x00000001)
        ResponseComplete: 0x01
        Reserved: 0 (0x000000)
        NumberOfSnapshots: 2(0x00000002)
        SnapshotIds: 4d051d8d-d120-4ec5-ba14-a2bc02219678, 71836f8b-210e-4896-aac6- 1c4e3a8e81ef
    
  7. The client sends an SMB2 CLOSE Request to close the shared virtual disk file.

  8. The server sends an SMB2 CLOSE Response indicating the close was successful.