3.4.4 Message Processing Events and Sequencing Rules

This protocol MUST indicate to the RPC runtime that it is to perform a strict Network Data Representation (NDR) data consistency check at target level 6.0, as specified in [MS-RPCE] section 3.

This protocol MUST indicate to the RPC runtime that it is to reject a NULL unique or full pointer with nonzero conformant value, as specified in [MS-RPCE] section 3.

This interface SHOULD<16> be supported.

The server MUST fail a method with error 0x80070548 (ERROR_INVALID_SERVER_STATE) if the server's Prepare State (3.2.1) is not correct for that method. The required Prepare State is as follows:

Once the server's Prepare State is Online, it remains Online until the DCOM object exporter removes the application-specific state associated with the IClusterStorage2 interface, as defined in [MS-DCOM] section 1.3.6.

A ClusPrepDisk object has three state variables, as specified in section 3.2.1: ClusPrepDisk.AttachedState, ClusPrepDisk.OwnedState, and ClusPrepDisk.OnlineState. These states are related as follows:

  • ClusPrepDisk.AttachedState MUST be Attached for ClusPrepDisk.OwnedState to be OwnedByThisServer.

  • ClusPrepDisk.OwnedState MUST be OwnedByThisServer for ClusPrepDisk.OnlineState to be Online.

Methods in the protocol that take a CPREP_DISKID (section 2.2.2) as an input parameter have requirements on the values of ClusPrepDisk.AttachedState, ClusPrepDisk.OwnedState, and ClusPrepDisk.OnlineState. The server MUST accept the following methods regardless of the values of ClusPrepDisk.AttachedState, ClusPrepDisk.OwnedState, and ClusPrepDisk.OnlineState:

For the following methods, the server MUST require the value of ClusPrepDisk.AttachedState to be equal to Attached:

For the following methods, the server MUST additionally require the value of ClusPrepDisk.OwnedState to be equal to OwnedByThisServer:

For the following methods, the server MUST additionally require the value of ClusPrepDisk.OnlineState to be equal to Online:

For methods that take a CPREP_DISKID (section 2.2.2) as an input parameter, the server MUST look in the ClusPrepDiskList for a ClusPrepDisk object that matches the CPREP_DISKID input parameter. If no such object is found, the server SHOULD<17> return 0x80070002 (ERROR_FILE_NOT_FOUND). If the CPREP_DISKID provided by the client matches more than one ClusPrepDisk in the server's ClusPrepDiskList, the server SHOULD execute the method for one of the matching ClusPrepDisk objects. The matching ClusPrepDisk that the server chooses is arbitrary and implementation-specific.

For those methods listed previously that take a CPREP_DISKID as an input parameter and require ClusPrepDisk.AttachedState to be equal to Attached (or ClusPrepDisk.OwnedState to be equal to OwnedByThisServer or ClusPrepDisk.OnlineState to be equal to Online), the server SHOULD<18> fail the method with 0x80070002 (ERROR_FILE_NOT_FOUND) if the matching ClusPrepDisk.AttachedState is not equal to Attached.

For those methods listed previously that take a CPREP_DISKID as an input parameter and require ClusPrepDisk.OwnedState to be equal to OwnedByThisServer (or ClusPrepDisk.OnlineState to be equal to Online), the server MUST fail with error 0x8007139F (ERROR_INVALID_STATE) if the matching ClusPrepDisk.OwnedState is not equal to OwnedByThisServer.

For those methods listed previously that take a CPREP_DISKID as an input parameter and require ClusPrepDisk.OnlineState to be equal to Online, the server MUST fail with error 0x8007139F (ERROR_INVALID_STATE) if the matching ClusPrepDisk.OnlineState is not equal to Online.

For those methods that take a ulPartition as the partition number, the server MUST use an implementation-specific mechanism to map the partition identified by ulPartition to a volume. If ulPartition cannot be mapped to a volume, the server MUST return ERROR_FILE_NOT_FOUND.

For those methods that access a volume through a file system, the server MUST use an implementation-specific mechanism to verify that the volume contains a file system. If the volume does not contain a file system, the server MUST return ERROR_UNRECOGNIZED_VOLUME.

All methods MUST NOT throw exceptions.

This DCOM interface inherits the IUnknown interface. Method opnum field values start with 3; opnum values 0 through 2 represent the IUnknown::QueryInterface, IUnknown::AddRef, and IUnknown::Release methods, respectively, as specified in [MS-DCOM] section 3.1.1.5.8.

Methods in RPC Opnum Order

Method

Description

CprepDiskGetUniqueIds3

Retrieves SCSI page 80h and 83h data for a given disk.

Opnum: 3

CprepCheckNetFtBindings3

Verifies that an implementation-specific file and print sharing mechanism is enabled.

Opnum: 4

CprepCsvTestSetup3

A test setup method called before other methods. Changes the server ClusterFileShareTestSetupState to ClusterFileShareTestSetup.

Opnum: 5

CprepIsNodeClustered3

Returns values indicating whether the server is part of a cluster.

Opnum: 6

CprepCreateNewSmbShares3

A server returns a list of shares available via an implementation-specific mechanism

Opnum: 7

CprepConnectToNewSmbShares3

A target server attempts to connect to a list of shares via an implementation-specific mechanism.

Opnum: 8

CprepDiskGetProps3

Gets the properties about a given ClusPrepDisk.

Opnum: 9

CprepDiskIsReadOnly3

Returns the state of the LUN underlying the disk, if the disk is backed by a LUN.

Opnum: 10