/*++

Copyright (c) 1994  Microsoft Corporation
Copyright (c) 1993  Micro Computer Systems, Inc.

Module Name:

    net\svcdlls\nwsap\saplpc.h

Abstract:

Author:

    Brian Walker (MCS) 06-30-1993

Revision History:

--*/

#ifndef _NWSAP_LPC_
#define _NWSAP_LPC_

/**
    Structure used to pass LPC messages between the client
    library and the main server.  Note the the PORT_MESSAGE is first
    and that the request and reply structures are VERY similar.
**/

typedef struct _NWSAP_REQUEST_MESSAGE {

    PORT_MESSAGE PortMessage;
    ULONG MessageType;

    union {

        struct {
            USHORT  ServerType;
            UCHAR   ServerName[48];
            UCHAR   ServerAddr[12];
            BOOL    RespondNearest;
        } AdvApi;

        struct {
            ULONG   ObjectID;
            UCHAR   ObjectName[48];
            USHORT  ObjectType;
            UCHAR   ObjectAddr[12];
            USHORT  ScanType;
        } BindLibApi;

    } Message;

} NWSAP_REQUEST_MESSAGE, *PNWSAP_REQUEST_MESSAGE;


typedef struct _NWSAP_REPLY_MESSAGE {

    PORT_MESSAGE PortMessage;
    ULONG Error;

    union {

        struct {
            USHORT  ServerType;
            UCHAR   ServerName[48];
            UCHAR   ServerAddr[12];
            BOOL    RespondNearest;
        } AdvApi;

        struct {
            ULONG   ObjectID;
            UCHAR   ObjectName[48];
            USHORT  ObjectType;
            UCHAR   ObjectAddr[12];
            USHORT  ScanType;
        } BindLibApi;

    } Message;
} NWSAP_REPLY_MESSAGE, *PNWSAP_REPLY_MESSAGE;

/** Message Types **/

#define NWSAP_LPCMSG_ADDADVERTISE           0
#define NWSAP_LPCMSG_REMOVEADVERTISE        1
#define NWSAP_LPCMSG_GETOBJECTID            2
#define NWSAP_LPCMSG_GETOBJECTNAME          3
#define NWSAP_LPCMSG_SEARCH                 4
#define NWSAP_LPCMSG_STOP                   0xFFFFFFFF

/** Name of our port **/

#define NWSAP_BIND_PORT_NAME_W   L"\\BaseNamedObjects\\NwSapLpcPort"
#define NWSAP_BIND_PORT_NAME_A    "\\BaseNamedObjects\\NwSapLpcPort"

/** Max message length we need **/

#define NWSAP_BS_PORT_MAX_MESSAGE_LENGTH                                         \
    ( sizeof(NWSAP_REQUEST_MESSAGE) > sizeof(NWSAP_REPLY_MESSAGE) ?    \
         sizeof(NWSAP_REQUEST_MESSAGE) : sizeof(NWSAP_REPLY_MESSAGE) )

#endif