3.2.5.2 Receiving a Close Request

When the server receives a request to close a shared virtual disk file, the server MUST verify the following:

If the handle to the Open that is being closed is used by the client to send the create snapshot request and if the creation of a snapshot of type SvhdxSnapshotTypeCDP is incomplete, the server MUST abort the create snapshot operation. If the operation is aborted after the SvhdxSnapshotStageUnblockIO stage is completed, the server MUST set Snapshot.ChangeTracking to FALSE and MUST fail the change tracking with error STATUS_FILE_FORCED_CLOSED.

The server MUST locate the Open in the OpenTable where Open.LocalOpen matches the Open provided by the SMB server, as specified in [MS-SMB2] section 3.3.4.17.

The server MUST close the underlying object store open.

If Open.PendingDelete is TRUE, the server MUST pass the request to the underlying object store to delete the file.

If the underlying object store returns success, the server MUST remove the Open from the OpenTable, free the Open object, and MUST return STATUS_SUCCESS to the client.

Otherwise, the server MUST return the received error code to the client.