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