The SRV_SNAPSHOT_ARRAY packet is returned to the client by the server in an SMB2 IOCTL Response for the FSCTL_SRV_ENUMERATE_SNAPSHOTS request, as specified in [MS-SMB] section 2.2.14.7.1. This packet MUST contain all the revision time-stamps that are associated with the particular open. This SRV_SNAPSHOT_ARRAY is placed in the OutputBuffer field in the SMB2 IOCTL Response. This packet consists of the following:
        public Smb2IOCtlResponsePacket CreateSnapshotIOCtlResponseAsync(
            Smb2Endpoint endpoint,
            ulong asyncId,
            ulong messageId,
            SRV_SNAPSHOT_ARRAY snapshots
            )
        {
            Smb2IOCtlResponsePacket packet = CreateSnapshotIOCtlResponse(endpoint, messageId, snapshots);

            ModifyAsyncHeader(packet, endpoint, asyncId);

            packet.Sign();

            return packet;
        }
        public Smb2IOCtlResponsePacket CreateSnapshotIOCtlResponse(
            Smb2Endpoint endpoint,
            ulong messageId,
            SRV_SNAPSHOT_ARRAY snapshots
            )
        {
            byte[] output = TypeMarshal.ToBytes(snapshots);

            return CreateIOCtlResponse(endpoint, messageId, null, output);
        }