1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
|
/********************************************************************/
/** Copyright(c) 1989-1996 Microsoft Corporation. **/
/********************************************************************/
//***
//
// Filename: rasshost.h
//
// Description: This header defines the interface between third party security
// DLLs and the RAS server.
//
#ifndef _RASSHOST_
#define _RASSHOST_
#include <rassapi.h>
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[RASSAPI_MAX_DEVICE_NAME+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.
);
//
// The following entrypoints should be loaded by calling GetProcAddress from
// RasMan.lib
//
// 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
|