none
how to use CLUSCTL_RESOURCE_TYPE_STORAGE_GET_DISKID RRS feed

  • Question

  • The documentation is NOT very clear on how to implement "CLUSCTL_RESOURCE_TYPE_STORAGE_GET_DISKID" & "CLUSCTL_RESOURCE_TYPE_STORAGE_IS_CLUSTERABLE"

    I am reading the following link : http://msdn.microsoft.com/en-us/library/cc225286.aspx

    How to fill the lpOutBuffer is unclear. 

    Any samples and advice will be appreciated.

    PS: I am asking about the "server" side implementation. 


    Wednesday, September 11, 2013 6:04 PM

All replies

  • Hi Gaurav,

    Thanks for your inquiry.

    A member of our team will get in touch with you shortly to work on this request.

    Thanks and regards,


    SEBASTIAN CANEVARI - MSFT Escalation Engineer Protocol Documentation Team

    Wednesday, September 11, 2013 6:46 PM
  • Gaurav,

    I am researching this for you.


    Bryan S. Burgin Senior Escalation Engineer Microsoft Protocol Open Specifications Team

    Wednesday, September 11, 2013 10:16 PM
    Moderator
  • Thanks.


    Monday, September 16, 2013 6:59 AM
  • Can the results be published here?

    Thanks

    Tsang Chan

    Sunday, September 22, 2013 7:59 AM
  • Yes Tsang. Bryan will update this thread with his findings .

    Tarun Chopra | Escalation Engineer | Open Specifications Support Team


    Monday, September 23, 2013 1:11 AM
  • Gaurav,

    Sorry for the delay; I have been researching this.  Can you contact me directly by sending me mail at ("dochelp (at) Microsoft (dot) com")?


    Bryan S. Burgin Senior Escalation Engineer Microsoft Protocol Open Specifications Team

    Tuesday, September 24, 2013 7:35 PM
    Moderator
  • Gaurav,

    I received you mail and responded several times, but didn't get a reply.  Can you check your mail in case it got lost?


    Bryan S. Burgin Senior Escalation Engineer Microsoft Protocol Open Specifications Team

    Thursday, October 3, 2013 5:40 PM
    Moderator
  • Update to forum:

    We updated [MS-CMRP] with the changes outlined below.  The changes will be reflected in a future refresh of the specification library.

    2.2.2.22   CLUSDSK_DISKID_ENUM

    The CLUSDSK_DISKID_ENUM enumeration defines the possible values of the disk ID types.

    typedef  enum

    {

      DiskIdSignature = 0x00000001,

      DiskIdGuid = 0x00000002,

      DiskIdUnKnown = 0x00001388

    } CLUSDSK_DISKID_ENUM;

    DiskIdSignature:  This value indicates an MBR disk type.

    DiskIdGuid:  This value indicates a GPT disk type.

    DiskIdUnKnown:  This value indicates a disk whose partition type is unknown.

    2.2.3.33   CLUSDSK_DISKID

    The CLUSDSK_DISKID structure contains the identification information of the disk of the designated storage class resource type.

    typedef struct _CLUSDSK_DISKID {

      CLUSDSK_DISKID_ENUM DiskIdType;

      [switch_is (DiskIdType)] union {

        [case(DiskIdSignature)]

          unsigned long DiskSignature;

        [case(DiskIdGuid)]

          GUID DiskGuid;

      };

    } CLUSDSK_DISKID,

     *PCLUSDSK_DISKID;

    DiskIdType:  A 32-bit integer indicating disk ID type. See CLUSDSK_DISKID_ENUM (section 2.2.2.22).

    DiskSignature:  Identification information of the disk is an MBR disk signature.

    DiskGuid:  Identification information of the disk is a GPT disk ID, which is a 128-bit GUID.

    3.1.4.3.2.28   CLUSCTL_RESOURCE_TYPE_STORAGE_GET_DISKID

    The CLUSCTL_RESOURCE_TYPE_STORAGE_GET_DISKID resource type control code returns the identification information of the disk of the designated storage class resource type with the specified file path on the node where the ApiResourceTypeControl method was issued.

    Protocol version 2.0 servers SHOULD fail this method by using error code 0x00000001 (ERROR_INVALID_FUNCTION).

    The client MUST provide the file path on the target disk, as a null-terminated Unicode string, in the buffer that is designated by lpInBuffer.

    After successful completion of this method, the server MUST write the following data as a CLUSDSK_DISKID structure, as specified in section 2.2.3.33 to the buffer that is designated by lpOutBuffer:

    § A 32-bit integer indicating ID type. Valid values for this field are 0x00000001 for MBR disks, 0x00000002 for GPT disks, and 0x00001388 for disks whose partition type is unknown.

    § A 32-bit integer if the preceding ID type is an MBR disk signature or device number or a GUID (128-bit) if the preceding ID type is GPT disk ID.

    The server MUST fail this method by using error code 0x00000002 (ERROR_FILE_NOT_FOUND) or 0x00000003 (ERROR_PATH_NOT_FOUND) if the file name or path name, respectively, sent in the input buffer is not associated with a disk of the designated storage class resource type. The client MUST treat the two error codes equivalently.

    The server MUST fail this method by using error code 0x0000139F (ERROR_INVALID_STATE) if the ID type is 0x00001388 (partition type is unknown).

    The server SHOULD accept a CLUSCTL_RESOURCE_TYPE_STORAGE_GET_DISKID resource control code request if its protocol server state is read-only, and the server MUST accept the request for processing if it is in the read/write state, as specified in section 3.1.1.

    3.1.4.3.2.29   CLUSCTL_RESOURCE_TYPE_STORAGE_IS_CLUSTERABLE

    The CLUSCTL_RESOURCE_TYPE_STORAGE_IS_CLUSTERABLE resource type control code identifies whether the specified disk of the designated storage class resource type can be placed under cluster control on the node where the ApiResourceTypeControl method was issued.

    Protocol version 2.0 servers SHOULD fail this method by using error code ERROR_INVALID_FUNCTION (0x00000001).

    Protocol version 3.0: The server MUST fail this method with
    ERROR_WRONG_DISK (0x00000034) if the target disk does not meet the server implementation-specific criteria for whether a disk can be placed under cluster control.

    The client MUST provide the disk ID, as specified in section 3.1.4.3.2.28, for the target disk in the buffer that is designated by lpInBuffer.

    On successful completion of this method, the server MUST return ERROR_SUCCESS (0x00000000), and the client MUST ignore the lpOutBuffer value.

    The server SHOULD accept a CLUSCTL_RESOURCE_TYPE_STORAGE_IS_CLUSTERABLE resource control code request if its protocol server state is read-only, and the server MUST accept the request for processing if it is in the read/write state, as specified in section 3.1.1.

    In 6.2   Protocol Version 3.0 (Full IDL):

    [at end of section]

    typedef enum

    {

      DiskIdSignature = 0x00000001,

      DiskIdGuid = 0x00000002,

      DiskIdUnKnown = 0x00001388

    } CLUSDSK_DISKID_ENUM;

    typedef struct _CLUSDSK_DISKID {

      CLUSDSK_DISKID_ENUM DiskIdType;

      [switch_is(DiskIdType)] union {

         [case(DiskIdSignature)] unsigned long DiskSignature;

         [case(DiskIdGuid)] GUID DiskGuid;

    };

    } CLUSDSK_DISKID, *PCLUSDSK_DISKID;

    }


    Bryan S. Burgin Senior Escalation Engineer Microsoft Protocol Open Specifications Team

    Wednesday, November 6, 2013 11:38 PM
    Moderator