This topic has not yet been rated - Rate this topic

6 Appendix A: Full IDL

For ease of implementation, the following full Interface Definition Language (IDL) is provided, where "ms-dtyp.idl" is the IDL, as specified in [MS-DTYP] section 5<26>.

import "ms-dtyp.idl";

typedef struct _RPC_VERSION {
    unsigned short MajorVersion;
    unsigned short MinorVersion;
} RPC_VERSION;

typedef struct _RPC_SYNTAX_IDENTIFIER {
    GUID        SyntaxGUID;
    RPC_VERSION SyntaxVersion;
} RPC_SYNTAX_IDENTIFIER;

typedef [string, unique] wchar_t *STRING_T;

typedef [string] wchar_t *NSI_STRING_BINDING_T;

typedef [context_handle] void *NSI_NS_HANDLE_T;

typedef [unique] GUID *NSI_UUID_P_T;

typedef struct _NSI_BINDING_T {
    NSI_STRING_BINDING_T string;
    unsigned long   entry_name_syntax;
    STRING_T        entry_name;
} NSI_BINDING_T;

typedef struct _NSI_BINDING_VECTOR_T {
    unsigned long count;
    [size_is(count)] NSI_BINDING_T binding[*];
} NSI_BINDING_VECTOR_T;

typedef [unique] NSI_BINDING_VECTOR_T *NSI_BINDING_VECTOR_P_T;

typedef struct _NSI_UUID_VECTOR_T {
    unsigned long count;
    [size_is(count)] NSI_UUID_P_T uuid[*];
} NSI_UUID_VECTOR_T;

typedef [unique] NSI_UUID_VECTOR_T *NSI_UUID_VECTOR_P_T;


[
    uuid (e33c0cc4-0482-101a-bc0c-02608c6ba218),
    version (1.0),
    pointer_default (unique)
]
interface LocToLoc
{
    void I_nsi_lookup_begin(
        [in]        handle_t              hrpcPrimaryLocatorHndl,
        [in]        unsigned long         entry_name_syntax,
        [in]        STRING_T               entry_name,
        [in,unique] RPC_SYNTAX_IDENTIFIER *interfaceid,
        [in,unique] RPC_SYNTAX_IDENTIFIER *xfersyntax,
        [in]        NSI_UUID_P_T          obj_uuid,
        [in]        unsigned long         binding_max_count,
        [in]        unsigned long         MaxCacheAge,
        [out]       NSI_NS_HANDLE_T       *import_context,
        [out]       unsigned short        *status
    );

    void I_nsi_lookup_done(
        [in]     handle_t        hrpcPrimaryLocatorHndl,
        [in,out] NSI_NS_HANDLE_T *import_context,
        [out]    unsigned short  *status
    );

    void I_nsi_lookup_next(
        [in]  handle_t               hrpcPrimaryLocatorHndl,
        [in]  NSI_NS_HANDLE_T        import_context,
        [out] NSI_BINDING_VECTOR_P_T *binding_vector,
        [out] unsigned short         *status
    );

    void I_nsi_entry_object_inq_next(
        [in]  handle_t            hrpcPrimaryLocatorHndl,
        [in]  NSI_NS_HANDLE_T     InqContext,
        [out] NSI_UUID_VECTOR_P_T *uuid_vec,
        [out] unsigned short      *status
    );

    void I_nsi_ping_locator(
        [in]  handle_t      hLocatortoPing,
        [out] error_status_t *status
    );

    void I_nsi_entry_object_inq_done(
        [in,out] NSI_NS_HANDLE_T *InqContext,
        [out]    unsigned short  *status
    );

    void I_nsi_entry_object_inq_begin(
        [in]  handle_t        hrpcPrimaryLocatorHndl,
        [in]  unsigned long   EntryNameSyntax,
        [in]  STRING_T         EntryName,
        [out] NSI_NS_HANDLE_T *InqContext,
        [out] unsigned short  *status
    );
}
 
Did you find this helpful?
(1500 characters remaining)
© 2013 Microsoft. All rights reserved.