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.
 
 
 
 
 
 

596 lines
10 KiB

/*++
Copyright (c) 1994 Microsoft Corporation
Module Name:
tpstress.c
Abstract:
This module contains the
Author:
Dan Knudson (DanKn) 05-May-1995
Revision History:
--*/
#include "windows.h"
#include "malloc.h"
#include "string.h"
#include "tapi.h"
#include "trapper.h"
typedef struct _INSTANCE_INFO
{
LONG lExpectedReplyID;
BOOL bExpectedMsgReceived;
} INSTANCE_INFO, *PINSTANCE_INFO;
#define LOW_API_VERSION 0x10003
#define HIGH_API_VERSION 0x10005
HANDLE ghDll;
LOGPROC gpfnLog;
char gszDestAddress[64] = "20110";
#ifdef WIN32
#define __export
#define __loadds
BOOL
WINAPI
DllMain(
HANDLE hDLL,
DWORD dwReason,
LPVOID lpReserved
)
{
switch (dwReason)
{
case DLL_PROCESS_ATTACH:
ghDll = hDLL;
case DLL_PROCESS_DETACH:
case DLL_THREAD_ATTACH:
case DLL_THREAD_DETACH:
break;
}
return TRUE;
}
#else
int
FAR
PASCAL
LibMain(
HANDLE hInstance,
WORD wDataSegment,
WORD wHeapSize,
LPSTR lpszCmdLine
)
{
ghDll = hInstance;
return TRUE;
}
#endif
VOID
FAR
PASCAL
__loadds
__export
TapiCallback(
DWORD hDevice,
DWORD dwMsg,
DWORD dwCallbackInstance,
DWORD dwParam1,
DWORD dwParam2,
DWORD dwParam3
)
{
(*gpfnLog)(
3,
"TapiCallback: enter, dwMsg=x%lx, dwCbInst=%ld, dwP1=x%lx",
dwMsg,
dwCallbackInstance,
dwParam1
);
switch (dwMsg)
{
case LINE_REPLY:
{
PINSTANCE_INFO pInstInfo = (PINSTANCE_INFO) dwCallbackInstance;
if (dwParam1 == (DWORD) pInstInfo->lExpectedReplyID)
{
pInstInfo->bExpectedMsgReceived = TRUE;
}
break;
}
} // switch
}
BOOL
FAR
PASCAL
__export
SuiteInit(
LOGPROC pfnLog
)
{
gpfnLog = pfnLog;
return TRUE;
}
BOOL
FAR
PASCAL
__export
SuiteShutdown(
void
)
{
return TRUE;
}
BOOL
FAR
PASCAL
__export
SuiteAbout(
HWND hwndOwner
)
{
MessageBox (hwndOwner, "xxx", "About the Tapi Stress Suite", MB_OK);
return TRUE;
}
BOOL
FAR
PASCAL
__export
SuiteConfig(
HWND hwndOwner
)
{
MessageBox (hwndOwner, "xxx", "Tapi Stress Suite Config", MB_OK);
return TRUE;
}
BOOL
MakeNCalls(
DWORD dwNumCalls
)
{
MSG msg;
LONG lResult;
BOOL bFoundESP = FALSE, bResult = TRUE;
DWORD dwDeviceID, dwAPIVersion, dwNumDevs, i;
HCALL hCall;
HLINE hLine;
HLINEAPP hLineApp;
LPLINEDEVCAPS pLineDevCaps;
PINSTANCE_INFO pInstInfo;
LINEEXTENSIONID extensionID;
Sleep (1000); // give other apps time to play
pInstInfo = LocalAlloc (LPTR, sizeof (INSTANCE_INFO));
lResult = lineInitialize(
&hLineApp,
ghDll,
TapiCallback,
"tpstress.dll",
&dwNumDevs
);
if (lResult)
{
(*gpfnLog)(0, " TPSTRESS: lineInitialize failed, err=x%lx", lResult);
return FALSE;
}
//
// Find an ESP line device
//
pLineDevCaps = (LPLINEDEVCAPS) LocalAlloc (LPTR, 1024);
for (dwDeviceID = 0; ((dwDeviceID < dwNumDevs) && !bFoundESP); dwDeviceID++)
{
char *pszProviderInfo;
pLineDevCaps->dwTotalSize = 1024;
lResult = lineNegotiateAPIVersion(
hLineApp,
dwDeviceID,
LOW_API_VERSION,
HIGH_API_VERSION,
&dwAPIVersion,
&extensionID
);
lResult = lineGetDevCaps(
hLineApp,
dwDeviceID,
dwAPIVersion,
0,
pLineDevCaps
);
pszProviderInfo = ((char *) pLineDevCaps) +
pLineDevCaps->dwProviderInfoOffset;
try
{
if (strstr (pszProviderInfo, "ESP"))
{
bFoundESP = TRUE;
}
}
except (GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ?
EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH)
{
}
}
LocalFree (LocalHandle (pLineDevCaps));
if (dwDeviceID == dwNumDevs)
{
(*gpfnLog)(0, " TPSTRESS: couldn't locate ESP line");
bResult = FALSE;
goto MakeNCalls_lineShutdown;
}
lResult = lineOpen(
hLineApp,
dwDeviceID,
&hLine,
dwAPIVersion,
0,
(DWORD) pInstInfo,
LINECALLPRIVILEGE_NONE,
0,
(LPLINECALLPARAMS) NULL
);
if (lResult)
{
(*gpfnLog)(0, " TPSTRESS: lineOpen failed, err=x%lx", lResult);
bResult = FALSE;
goto MakeNCalls_lineShutdown;
}
for (i = 0; i < dwNumCalls; i++)
{
if ((lResult = lineMakeCall(
hLine,
&hCall,
gszDestAddress,
0,
(LPLINECALLPARAMS) NULL
)) > 0)
{
//
// Wait for the make call request to complete
//
pInstInfo->lExpectedReplyID = lResult;
pInstInfo->bExpectedMsgReceived = FALSE;
while (!pInstInfo->bExpectedMsgReceived)
{
GetMessage (&msg, NULL, 0, 0);
DispatchMessage (&msg);
}
//
// Now drop the call
//
if ((lResult = lineDrop (hCall, NULL, 0)) > 0)
{
//
// Wait for the drop request to complete
//
pInstInfo->lExpectedReplyID = lResult;
pInstInfo->bExpectedMsgReceived = FALSE;
while (!pInstInfo->bExpectedMsgReceived)
{
GetMessage (&msg, NULL, 0, 0);
DispatchMessage (&msg);
}
}
//
// Nuke the call handle
//
lResult = lineDeallocateCall (hCall);
}
else
{
(*gpfnLog)(0, " TPSTRESS: lineMakeCall failed, err=x%lx", lResult);
}
}
if ((lResult = lineClose (hLine)))
{
(*gpfnLog)(0, " TPSTRESS: lineClose failed, err=x%lx", lResult);
bResult = FALSE;
}
MakeNCalls_lineShutdown:
if ((lResult = lineShutdown (hLineApp)))
{
(*gpfnLog)(0, " TPSTRESS: lineShutdown failed, err=x%lx", lResult);
bResult = FALSE;
}
LocalFree (LocalHandle (pInstInfo));
return bResult;
}
BOOL
FAR
PASCAL
__export
Test1(
HINSTANCE hAppInst
)
/*++
Makes a voice call on an ESP line device
--*/
{
return (MakeNCalls (1));
}
BOOL
FAR
PASCAL
__export
Test2(
HINSTANCE hAppInst
)
/*++
Makes 10 voice calls on an ESP line device
--*/
{
return (MakeNCalls (10));
}
BOOL
FAR
PASCAL
__export
Test3(
HINSTANCE hAppInst
)
/*++
Does a init, open, close, & shutdown on an ESP phone device
--*/
{
BOOL bResult = TRUE, bFoundESP = FALSE;
LONG lResult;
DWORD dwNumPhones, dwDeviceID, dwGain, dwAPIVersion,
dwPrivilege = PHONEPRIVILEGE_OWNER;
HPHONE hPhone;
HPHONEAPP hPhoneApp;
LPPHONECAPS pPhoneCaps;
PHONEEXTENSIONID extensionID;
//
// Init TAPI
//
if ((lResult = phoneInitialize(
&hPhoneApp,
ghDll,
TapiCallback,
"tpstress.dll",
&dwNumPhones
)))
{
(*gpfnLog)(1, "phoneInitialize ret'd x%x", lResult);
return FALSE;
}
//
// Try to find an ESP phone device
//
pPhoneCaps = (LPPHONECAPS) LocalAlloc (LPTR, 1024);
for(
dwDeviceID = 0;
((dwDeviceID < dwNumPhones) && !bFoundESP);
dwDeviceID++
)
{
char *pszProviderInfo;
pPhoneCaps->dwTotalSize = 1024;
lResult = phoneNegotiateAPIVersion(
hPhoneApp,
dwDeviceID,
LOW_API_VERSION,
HIGH_API_VERSION,
&dwAPIVersion,
&extensionID
);
lResult = phoneGetDevCaps(
hPhoneApp,
dwDeviceID,
dwAPIVersion,
0,
pPhoneCaps
);
pszProviderInfo = ((char *) pPhoneCaps) +
pPhoneCaps->dwProviderInfoOffset;
try
{
if (strstr (pszProviderInfo, "ESP"))
{
bFoundESP = TRUE;
}
}
except (GetExceptionCode() == EXCEPTION_ACCESS_VIOLATION ?
EXCEPTION_EXECUTE_HANDLER : EXCEPTION_CONTINUE_SEARCH)
{
}
}
LocalFree (LocalHandle (pPhoneCaps));
if (dwDeviceID == dwNumPhones)
{
(*gpfnLog)(0, " TPSTRESS: couldn't locate ESP phone");
bResult = FALSE;
goto Test3_phoneShutdown;
}
//
// Open the ESP phone device & make some basic requests (if we can't
// open as owner try opening as monitor)
//
if ((lResult = phoneOpen(
hPhoneApp,
dwDeviceID,
&hPhone,
dwAPIVersion,
0,
0,
dwPrivilege
)))
{
dwPrivilege = PHONEPRIVILEGE_MONITOR;
if ((lResult != PHONEERR_INVALPRIVILEGE) ||
(lResult = phoneOpen(
hPhoneApp,
dwDeviceID,
&hPhone,
dwAPIVersion,
0, // dwExtVersion
0, // dwCallbackInst
dwPrivilege
)))
{
(*gpfnLog)(0, " TPSTRESS: phoneOpen ret'd x%x", lResult);
bResult = FALSE;
goto Test3_phoneShutdown;
}
}
if ((lResult = phoneGetGain(
hPhone,
PHONEHOOKSWITCHDEV_HANDSET,
&dwGain
)))
{
(*gpfnLog)(0, " TPSTRESS: phoneGetDisplay ret'd x%x", lResult);
bResult = FALSE;
goto Test3_phoneShutdown;
}
//
// Clean up
//
if ((lResult = phoneClose (hPhone)))
{
(*gpfnLog)(0, " TPSTRESS: phoneClose ret'd x%x", lResult);
bResult = FALSE;
}
Test3_phoneShutdown:
if ((lResult = phoneShutdown (hPhoneApp)))
{
(*gpfnLog)(0, " TPSTRESS: phoneShutdown ret'd x%x", lResult);
bResult = FALSE;
}
return bResult;
}