PERSISTENT_RESERVE_COMMAND structure (ntddstor.h)

The PERSISTENT_RESERVE_COMMAND structure is used together with the IOCTL_STORAGE_PERSISTENT_RESERVE_IN and IOCTL_STORAGE_PERSISTENT_RESERVE_OUT requests to obtain and control information about persistent reservations and reservation keys that are active within a device server.

Syntax

typedef struct _PERSISTENT_RESERVE_COMMAND {
  ULONG Version;
  ULONG Size;
  union {
    struct {
      UCHAR  ServiceAction : 5;
      UCHAR  Reserved1 : 3;
      USHORT AllocationLength;
    } PR_IN;
    struct {
      UCHAR ServiceAction : 5;
      UCHAR Reserved1 : 3;
      UCHAR Type : 4;
      UCHAR Scope : 4;
      UCHAR ParameterList[0];
    } PR_OUT;
  } DUMMYUNIONNAME;
} PERSISTENT_RESERVE_COMMAND, *PPERSISTENT_RESERVE_COMMAND;

Members

Version

The version of this structure.

Size

The size of this structure.

DUMMYUNIONNAME

DUMMYUNIONNAME.PR_IN

DUMMYUNIONNAME.PR_IN.ServiceAction

The service action code for this IOCTL_STORAGE_PERSISTENT_RESERVE_IN request. PR_IN.ServiceAction can be one of the following values: RESERVATION_ACTION_READ_KEYS RESERVATION_ACTION_READ_RESERVATIONS

DUMMYUNIONNAME.PR_IN.Reserved1

Reserved. Must be zero.

DUMMYUNIONNAME.PR_IN.AllocationLength

The number of bytes allocated for the returned parameter list.

DUMMYUNIONNAME.PR_OUT

DUMMYUNIONNAME.PR_OUT.ServiceAction

The service action code for this IOCTL_STORAGE_PERSISTENT_RESERVE_OUT request. PR_OUT.ServiceAction can be one of the following values:

  • RESERVATION_ACTION_REGISTER
  • RESERVATION_ACTION_RESERVE
  • RESERVATION_ACTION_RELEASE
  • RESERVATION_ACTION_CLEAR
  • RESERVATION_ACTION_PREEMPT
  • RESERVATION_ACTION_PREEMPT_ABORT
  • RESERVATION_ACTION_REGISTER_IGNORE_EXISTING

DUMMYUNIONNAME.PR_OUT.Reserved1

Reserved. Must be zero.

DUMMYUNIONNAME.PR_OUT.Type

A value that specifies the characteristics of the persistent reservation. PR_OUT.Type can be one of the following values:

  • RESERVATION_TYPE_WRITE_EXCLUSIVE
  • RESERVATION_TYPE_EXCLUSIVE
  • RESERVATION_TYPE_WRITE_EXCLUSIVE_REGISTRANTS
  • RESERVATION_TYPE_EXCLUSIVE_REGISTRANTS

DUMMYUNIONNAME.PR_OUT.Scope

A value that specifies whether the persistent reservation applies to the entire logical unit or a specific element of the logical unit. PR_OUT.Scope can be one of the following values:

  • RESERVATION_SCOPE_LU
  • RESERVATION_SCOPE_ELEMENT

DUMMYUNIONNAME.PR_OUT.ParameterList[0]

The space for additional SCSI Persistent Reserve Out command parameters.

Remarks

The behavior of the storage device when a SCSI Persistent Reserve In command or a SCSI Persistent Reserve Out command is received is described in the SCSI Primary Commands - 2 (SPC-2) specification.

Requirements

Requirement Value
Header ntddstor.h (include Ntddstor.h)

See also

IOCTL_STORAGE_PERSISTENT_RESERVE_IN

IOCTL_STORAGE_PERSISTENT_RESERVE_OUT