//+-------------------------------------------------------------------------
//
//  Microsoft Windows
//
//  Copyright (C) Microsoft Corporation, 1997 - 1999
//
//  File:       nsicom.idl
//
//--------------------------------------------------------------------------

/* --------------------------------------------------------------------

                      Microsoft OS/2 LAN Manager
		   Copyright(c) Microsoft Corp., 1990

		  RPC locator - Written by Steven Zeck

                      - Modified by Satish Thatte (10/1/95)


	This file is just a wrapper for MIDL to get a reference to
	types used in the interface.
-------------------------------------------------------------------- */

[
    uuid (00000000-0000-0000-0000-000000000000),
    pointer_default (unique)
]
    interface NSiTypes

{

cpp_quote("#ifndef GUID_DEFINED")
cpp_quote("#define GUID_DEFINED")
typedef struct _GUID
{
    unsigned long Data1;
    unsigned short Data2;
    unsigned short Data3;
    unsigned char Data4[8];
} GUID;
cpp_quote("#endif /* GUID_DEFINED */")

cpp_quote("#ifndef UUID_DEFINED")
cpp_quote("#define UUID_DEFINED")
typedef GUID UUID;
cpp_quote("#endif")

cpp_quote("#ifndef __RPCDCEP_H__")

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, * PRPC_SYNTAX_IDENTIFIER;

cpp_quote("#endif")

/*
 * Misc commonly used standard types.
 */


#pragma midl_echo("#pragma warning(disable:4200)")

typedef unsigned long  UNSIGNED32;
typedef unsigned short UNSIGNED16;
typedef unsigned char  UNSIGNED8;
typedef [string, unique] wchar_t *STRING_T;

typedef [string] wchar_t *NSI_STRING_BINDING_T;
typedef [context_handle] void * NSI_NS_HANDLE_T;

typedef GUID NSI_UUID_T;

typedef [unique] NSI_UUID_T *NSI_UUID_P_T;

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

typedef struct _NSI_BINDING_VECTOR_T
    {
    UNSIGNED32            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_SERVER_BINDING_VECTOR_T
    {
    UNSIGNED32            count;
    [size_is(count)]
    NSI_STRING_BINDING_T  string[*];
    } NSI_SERVER_BINDING_VECTOR_T;

typedef [unique] NSI_SERVER_BINDING_VECTOR_T *NSI_SERVER_BINDING_VECTOR_P_T;

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

typedef [unique] NSI_UUID_VECTOR_T *NSI_UUID_VECTOR_P_T;

typedef RPC_SYNTAX_IDENTIFIER NSI_SYNTAX_ID_T;

typedef [unique] NSI_SYNTAX_ID_T *NSI_IF_ID_P_T;

typedef struct _NSI_INTERFACE_ID_T
    {
    NSI_SYNTAX_ID_T Interface;
    NSI_SYNTAX_ID_T TransferSyntax;
    } NSI_INTERFACE_ID_T;

typedef [unique] NSI_INTERFACE_ID_T *NSI_INTERFACE_ID_P_T;

typedef struct _NSI_IF_VECTOR_T
    {
    UNSIGNED32 count;
    [size_is(count)]
    NSI_IF_ID_P_T if_id[*];
    } NSI_IF_ID_VECTOR_T;


// If you change this table, you must update the status mapping vector
// NsiToRpcStatus in client\util.cxx

enum {
    NSI_S_OK,
    NSI_S_NO_MORE_BINDINGS,
    NSI_S_INTERFACE_NOT_FOUND,
    NSI_S_ENTRY_NOT_FOUND,
    NSI_S_NAME_SERVICE_UNAVAILABLE,
    NSI_S_NO_NS_PRIVILEGE,
    NSI_S_UNSUPPORTED_NAME_SYNTAX,
    NSI_S_NOTHING_TO_UNEXPORT,
    NSI_S_INVALID_NAME_SYNTAX,
    NSI_S_INVALID_NS_HANDLE,
    NSI_S_INVALID_OBJECT,
    NSI_S_NOT_ALL_OBJS_UNEXPORTED,    // Was NSI_S_INVALID_INTERFACE, but this
                                      // never could be returned by CSD.
    NSI_S_INVALID_STRING_BINDING,
    NSI_S_SOME_OTHER_ERROR,

    // New error codes added after 4/92 and v 1.0 of CSD deamon.

    NSI_S_NOTHING_TO_EXPORT,
    NSI_S_UNIMPLEMENTED_API,
    NSI_S_NO_INTERFACES_EXPORTED,
    NSI_S_INCOMPLETE_NAME,
    NSI_S_INVALID_VERS_OPTION,
    NSI_S_NO_MORE_MEMBERS,
    NSI_S_ENTRY_ALREADY_EXISTS,
    NSI_S_OUT_OF_MEMORY,
    NSI_S_GROUP_MEMBER_NOT_FOUND,
    NSI_S_NO_MASTER_LOCATOR,

    // New error codes added on 10/97

    NSI_S_ENTRY_TYPE_MISMATCH,
    NSI_S_NOT_ALL_OBJS_EXPORTED,
    NSI_S_INTERFACE_NOT_EXPORTED,
    NSI_S_PROFILE_NOT_ADDED,
    NSI_S_PRF_ELT_NOT_ADDED,
    NSI_S_PRF_ELT_NOT_REMOVED,
    NSI_S_GRP_ELT_NOT_ADDED,
    NSI_S_GRP_ELT_NOT_REMOVED,
    NSI_S_STATUS_MAX,

};

#pragma midl_echo("#pragma warning(default:4200)")

}
