, , DllMain DLL_THREAD_ATTACH, DLL_THREAD_ATTACH . DLL_PROCESS_ATTACH.
, (, , , (accept thread)), , DllMain . , DLL_THREAD_ATTACH, ; TLS. ReceiveCSMessage . , , , .
DLL , , , . .
DLL, Web-, DllMain .
. , , , DLL. ExitProcess DllMain DLL_PROCESS_DETACH, DLL_THREAD_DETACH. , , . , , , . . , DLL_PROCESS_DETACH, .
: DLL
12.4 TLS DllMain , , , . , "" , , .
, , . . UNIX , . , .
|
|
12.5 12.4. , DllMain , , . send receive . , serverSKHA, Web- , ( "handle" ).
12.5. SendReceiveSKHA: DLL
/* SendReceiveSKHA. . */
/* */
/* SendReceiveSKST.c, , */
/* . */
/* TLS, , */
/* HANDLE. */
/* . ('\0')*/
#define _NOEXCLUSIONS
#include "EvryThng.h"
#include "ClntSrvr.h " /* . */
typedef struct SOCKET_HANDLE_T {
/* "handle". */
/* "static_buf_len" . */
/* ( ) , */
/* . */
SOCKET sk; /* , "handle". */
char static_buf[MAX_RQRS_LEN];
LONG32 static_buf_len;
} SOCKET_HANDLE, * PSOCKET_HANDLE;
/* " ". */
_declspec(dllexport)
PVOID CreateCSSocketHandle(SOCKET s) {
PVOID p;
PSOCKET_HANDLE ps;
p = malloc(sizeof(SOCKET_HANDLE));
if (p == NULL) return NULL;
ps = (PSOCKET_HANDLE)p;
ps->sk = s;
ps->static_buf_len = 0; /* . */
return p;
}
_declspec(dllexport)
BOOL CloseCSSocketHandle(PVOID p) {
if (p == NULL) return FALSE;
free(p);
return TRUE;
}
_declspec(dllexport)
BOOL ReceiveCSMessage(REQUEST *pRequest, PVOID sh)
/* PVOID , */
/* SOCKET_HANDLE. */
{
/* TRUE . */
PSOCKET_HANDLE p;
SOCKET sd;
= (PSOCKET_HANDLE)sh;
if (p == NULL) return FALSE;
sd = p->sk;
/* SendReceiveSKST! */
}
_declspec(dllexport)
BOOL SendCSMessage(RESPONSE *pResponse, PVOID sh) {
/* sd. */
SOCKET sd;
PSOCKET_HANDLE p;
p = (PSOCKET_HANDLE)sh;
if (p == NULL) return FALSE;
sd = p->sk;
/* SendReceiveSKST! */
}