SECHOST.H

/********************************************************************/ 
/** Copyright(c) 1989 Microsoft Corporation. **/
/********************************************************************/

//***
//
// Filename: sechost.h
//
// Description: This header defines the interface between third party security
// DLLs and the supervisor.
//
// History:
//Nov 11,1994.NarenGCreated original version.
//

#ifndef _SECHOST_
#define _SECHOST_

#include <lmcons.h> // Defines for DNLEN and UNLEN

#define DEVICE_NAME_LEN 32

typedef DWORD HPORT;

typedef struct _SECURITY_MESSAGE
{
DWORD dwMsgId;

HPORT hPort;

DWORD dwError; // Should be non-zero only if error
// occurred during the security dialog.
// Should contain errors from winerror.h
// or raserror.h
CHAR UserName[UNLEN+1]; // Should always contain username if
// dwMsgId is SUCCESS/FAILURE

CHAR Domain[DNLEN+1]; // Should always contain domain if
// dwMsgId is SUCCESS/FAILURE

} SECURITY_MESSAGE, *PSECURITY_MESSAGE;


// Values for dwMsgId in SECURITY_MESSAGE structure

#define SECURITYMSG_SUCCESS 1
#define SECURITYMSG_FAILURE 2
#define SECURITYMSG_ERROR 3

// Used by RasSecurityGetInfo call

typedef struct _RAS_SECURITY_INFO
{

DWORD LastError; // SUCCESS = receive completed
// PENDING = receive pending
// else completed with error

DWORD BytesReceived; // only valid if LastError == SUCCESS

CHAR DeviceName[DEVICE_NAME_LEN+1];


}RAS_SECURITY_INFO,*PRAS_SECURITY_INFO;

typedef DWORD (WINAPI *RASSECURITYPROC)();

//
// Called by third party DLL to notify the supervisor of termination of
// the security dialog
//

VOID WINAPI
RasSecurityDialogComplete(
IN SECURITY_MESSAGE * pSecMsg // Pointer to the above info. structure
);

//
// Called by supervisor into the security DLL to notify it to begin the
// security dialog for a client.
//
// Should return errors from winerror.h or raserror.h
//

DWORD WINAPI
RasSecurityDialogBegin(
IN HPORT hPort, // RAS handle to port
IN PBYTE pSendBuf, // Pointer to the buffer used in
// RasSecurityDialogSend
IN DWORD SendBufSize, // Size of above bufer in bytes
IN PBYTE pRecvBuf, // Pointer to the buffer used in
// RasSecurityDialogReceive
IN DWORD RecvBufSize, // Size of above buffer
IN VOID (WINAPI *RasSecurityDialogComplete)( SECURITY_MESSAGE* )
// Pointer to function RasSecurityDialogComplete.
// Guaranteed to be the same on every call.
);

//
// Called by supervisor into the security DLL to notify it to stop the
// security dialog for a client. If this call returns an error, then it is not
// neccesary for the dll to call RasSecurityDialogComplete. Otherwise the DLL
// must call RasSecurityDialogComplete.
//
// Should return errors from winerror.h or raserror.h
//

DWORD WINAPI
RasSecurityDialogEnd(
IN HPORT hPort // RAS handle to port.
);

//
// Called to send data to remote host
// Will return errors from winerror.h or raserror.h
//

DWORD WINAPI
RasSecurityDialogSend(
IN HPORT hPort, // RAS handle to port.
IN PBYTE pBuffer, // Pointer to buffer containing data to send
IN WORD BufferLength // Length of above buffer.
);

//
// Called to receive data from remote host
// Will return errors from winerror.h or raserror.h
//

DWORD WINAPI
RasSecurityDialogReceive(
IN HPORT hPort, // RAS handle to port.
IN PBYTE pBuffer, // Pointer to buffer to receive data
IN PWORD pBufferLength, // length of data received in bytes.
IN DWORD Timeout, // in seconds
IN HANDLE hEvent // Event to set when receive completes or
// timeouts
);

//
// Called to get Information about port.
// Will return errors from winerror.h or raserror.h
//

DWORD WINAPI
RasSecurityDialogGetInfo(
IN HPORT hPort, // RAS handle to port.
IN RAS_SECURITY_INFO* pBuffer // Pointer to get info structure.
);

#endif