Windows NT 4.0 source code leak
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

210 lines
5.1 KiB

#include "clntapp.h"
HANDLE hLogFile;
extern TCHAR szFileName[MAX_PATH];
CRITICAL_SECTION csFile;
extern BOOL gbLogging;
LPTSTR lpszLineErrs[] =
{
TEXT("SUCCESS"),
TEXT("ALLOCATED"),
TEXT("BADDEVICEID"),
TEXT("BEARERMODEUNAVAIL"),
TEXT("inval err code (0x80000004)"), // 0x80000004 isn't valid err code
TEXT("CALLUNAVAIL"),
TEXT("COMPLETIONOVERRUN"),
TEXT("CONFERENCEFULL"),
TEXT("DIALBILLING"),
TEXT("DIALDIALTONE"),
TEXT("DIALPROMPT"),
TEXT("DIALQUIET"),
TEXT("INCOMPATIBLEAPIVERSION"),
TEXT("INCOMPATIBLEEXTVERSION"),
TEXT("INIFILECORRUPT"),
TEXT("INUSE"),
TEXT("INVALADDRESS"), // 0x80000010
TEXT("INVALADDRESSID"),
TEXT("INVALADDRESSMODE"),
TEXT("INVALADDRESSSTATE"),
TEXT("INVALAPPHANDLE"),
TEXT("INVALAPPNAME"),
TEXT("INVALBEARERMODE"),
TEXT("INVALCALLCOMPLMODE"),
TEXT("INVALCALLHANDLE"),
TEXT("INVALCALLPARAMS"),
TEXT("INVALCALLPRIVILEGE"),
TEXT("INVALCALLSELECT"),
TEXT("INVALCALLSTATE"),
TEXT("INVALCALLSTATELIST"),
TEXT("INVALCARD"),
TEXT("INVALCOMPLETIONID"),
TEXT("INVALCONFCALLHANDLE"), // 0x80000020
TEXT("INVALCONSULTCALLHANDLE"),
TEXT("INVALCOUNTRYCODE"),
TEXT("INVALDEVICECLASS"),
TEXT("INVALDEVICEHANDLE"),
TEXT("INVALDIALPARAMS"),
TEXT("INVALDIGITLIST"),
TEXT("INVALDIGITMODE"),
TEXT("INVALDIGITS"),
TEXT("INVALEXTVERSION"),
TEXT("INVALGROUPID"),
TEXT("INVALLINEHANDLE"),
TEXT("INVALLINESTATE"),
TEXT("INVALLOCATION"),
TEXT("INVALMEDIALIST"),
TEXT("INVALMEDIAMODE"),
TEXT("INVALMESSAGEID"), // 0x80000030
TEXT("inval err code (0x80000031)"), // 0x80000031 isn't valid err code
TEXT("INVALPARAM"),
TEXT("INVALPARKID"),
TEXT("INVALPARKMODE"),
TEXT("INVALPOINTER"),
TEXT("INVALPRIVSELECT"),
TEXT("INVALRATE"),
TEXT("INVALREQUESTMODE"),
TEXT("INVALTERMINALID"),
TEXT("INVALTERMINALMODE"),
TEXT("INVALTIMEOUT"),
TEXT("INVALTONE"),
TEXT("INVALTONELIST"),
TEXT("INVALTONEMODE"),
TEXT("INVALTRANSFERMODE"),
TEXT("LINEMAPPERFAILED"), // 0x80000040
TEXT("NOCONFERENCE"),
TEXT("NODEVICE"),
TEXT("NODRIVER"),
TEXT("NOMEM"),
TEXT("NOREQUEST"),
TEXT("NOTOWNER"),
TEXT("NOTREGISTERED"),
TEXT("OPERATIONFAILED"),
TEXT("OPERATIONUNAVAIL"),
TEXT("RATEUNAVAIL"),
TEXT("RESOURCEUNAVAIL"),
TEXT("REQUESTOVERRUN"),
TEXT("STRUCTURETOOSMALL"),
TEXT("TARGETNOTFOUND"),
TEXT("TARGETSELF"),
TEXT("UNINITIALIZED"), // 0x80000050
TEXT("USERUSERINFOTOOBIG"),
TEXT("REINIT"),
TEXT("ADDRESSBLOCKED"),
TEXT("BILLINGREJECTED"),
TEXT("INVALFEATURE"),
TEXT("NOMULTIPLEINSTANCE")
};
BOOL InitLogging()
{
LONG dwTime;
DWORD dwLen;
if (!gbLogging)
return TRUE;
InitializeCriticalSection(&csFile);
EnterCriticalSection(&csFile);
hLogFile = CreateFile(szFileName,
GENERIC_WRITE,
0,
NULL,
OPEN_ALWAYS,
FILE_ATTRIBUTE_NORMAL,
NULL);
CloseHandle(hLogFile);
LeaveCriticalSection(&csFile);
return TRUE;
}
void LogTapiError(LPTSTR lpszFunction, LONG lResult, DWORD dwProcessID, DWORD dwThreadID)
{
TCHAR szBuffer[512];
DWORD dwBytes;
char szCharBuffer[512];
DWORD dwerror;
SYSTEMTIME st;
if (!gbLogging)
return ;
EnterCriticalSection(&csFile);
if (hLogFile == 0)
{
LeaveCriticalSection(&csFile);
return;
}
GetSystemTime(&st);
wsprintf(szBuffer,
TEXT("%02d:%02d:%02d:%04d: PROCESS:%lu THREAD:%lu %s FAILED with %s\r\n"),
st.wHour,
st.wMinute,
st.wSecond,
st.wMilliseconds,
dwProcessID,
dwThreadID,
lpszFunction,
lpszLineErrs[LOWORD(lResult)]);
WideCharToMultiByte(CP_ACP,
0,
szBuffer,
-1,
szCharBuffer,
512,
NULL,
NULL);
while (TRUE)
{
// wait until file is available
hLogFile = CreateFile(szFileName,
GENERIC_WRITE,
0,
NULL,
OPEN_EXISTING,
FILE_ATTRIBUTE_NORMAL,
NULL);
if (hLogFile == INVALID_HANDLE_VALUE)
{
Sleep(1000);
continue;
}
break;
}
SetFilePointer(hLogFile,
0,
NULL,
FILE_END);
WriteFile(hLogFile,
szCharBuffer,
lstrlenA(szCharBuffer),
&dwBytes,
NULL);
CloseHandle(hLogFile);
LeaveCriticalSection(&csFile);
}
void CloseLogging()
{
// CloseHandle(hLogFile);
}