3.4.4.11 CprepDiskPRPreempt3 (Opnum 13)

The CprepDiskPRPreempt3 method performs a SCSI PERSISTENT RESERVE OUT command (see [SPC-3] section 6.12) with a PREEMPT action.

 HRESULT CprepDiskPRPreempt3(
   [in] CPREP_DISKID DiskId,
   [in] ULONGLONG OwnerKey,
   [in] ULONGLONG NewKey
 );

DiskId: The identifier of the ClusPrepDisk representing the disk.

OwnerKey: The key used in the Service Action Reservation Key field of the SCSI PERSISTENT RESERVE OUT command.

NewKey: The key used in the Reservation Key field of the SCSI PERSISTENT RESERVE OUT command.

Return Values: A signed 32-bit value that indicates return status. If the method returns a negative value, it has failed. Non-negative values indicate success, with the lower 16 bits of the value containing warnings or flags defined in the method implementation. For more information about Win32 error codes and HRESULT values, see [MS-ERREF] sections 2.2 and 2.1.

Return value/code

Description

0x00000000

S_OK

The call was successful.

0x80070002

ERROR_FILE_NOT_FOUND

The disk was not found.

0x00000057

ERROR_INVALID_PARAMETER

An internal error occurred.

0x80070548

ERROR_INVALID_SERVER_STATE

The server's Prepare State is not Online.

0x8007139F

ERROR_INVALID_STATE

The value of ClusPrepDisk.AttachedState is not Attached.

For any other condition, this method MUST return a value that is not one of the values listed in the preceding table. The client MUST behave in one consistent, identical manner for all values that are not listed in the preceding table.

Exceptions Thrown: No exceptions are thrown beyond those thrown by the underlying RPC protocol (see [MS-RPCE]).

The opnum field value for this method is 13.

When processing this call, the server MUST do the following:

  • Obtain the ClusPrepDisk identified by the DiskId parameter, as described in section 3.2.4.

  • Issue a PERSISTENT RESERVE OUT command with a PREEMPT action as specified in [SPC-3] section 6.12.