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.
 
 
 
 
 
 

1038 lines
21 KiB

/*++
Copyright (c) 1993 Microsoft Corporation
Module Name:
Printp.c
Abstract:
This module contains printing support
Author:
Scott B. Suhy (ScottSu) 6/1/93
Environment:
User Mode
--*/
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <io.h>
#include "printp.h"
#include "regp.h"
#include "dialogsp.h"
#include "winmsdp.h"
#include "msgp.h"
TCHAR szGlobalPath[24];
static HANDLE hLogfile=NULL; // Handle to the log file
static TCHAR *log_path=TEXT ("msdrpt.txt"); // log filename
static TCHAR *log_path2=TEXT ("msdrpt.txt"); // log filename
BOOL PrintToFile(LPCTSTR Data, INT i, BOOL FLAG){
/*++
Routine Description:
Routine to log the data to file.
Arguments:
Data - String to be printed to the log file.
i - Value to switch on to determine string to print to
log file.
FLAG - TRUE: UNICODE
FALSE: NONUNICODE (BUG: this will be removed and fixed)
Return Value:
BOOL
--*/
TCHAR Buf[4096];
TCHAR ValueName[256];
CHAR NonUNICODEValueName[256];
TCHAR szBuffer[257];
INT rc;
if(!ValidateString(Data)){
return FALSE;
}
switch( i ){
//version
case IDC_EDIT_INSTALL_DATE :
strcpy(NonUNICODEValueName,"Install Date: ");//BUGBUG not unicode
break;
case IDC_EDIT_REGISTERED_OWNER:
lstrcpy(ValueName,TEXT("Registered Owner: "));
break;
case IDC_EDIT_REGISTERED_ORGANIZATION:
lstrcpy(ValueName,TEXT("Registered Organization: "));
break;
case IDC_EDIT_VERSION_NUMBER:
lstrcpy(ValueName,TEXT("Version Number: "));
break;
case IDC_EDIT_BUILD_NUMBER:
lstrcpy(ValueName,TEXT("Build Number: "));
break;
case IDC_EDIT_BUILD_TYPE:
lstrcpy(ValueName,TEXT("Build Type: "));
break;
case IDC_EDIT_SYSTEM_ROOT:
lstrcpy(ValueName,TEXT("System Root: "));
break;
case IDC_EDIT_START_OPTS:
lstrcpy(ValueName,TEXT("System Start Options: "));
break;
//drives
case IDC_REMOTE_DRIVE_TITLE:
lstrcpy(ValueName,TEXT("Remote Drive: "));
break;
case IDC_DRIVE_TITLE:
lstrcpy(ValueName,TEXT("Local Drive: "));
break;
case IDC_EDIT_SECTORS_PER_CLUSTER:
lstrcpy(ValueName,TEXT("Sectors Per Cluster: "));
break;
case IDC_EDIT_BYTES_PER_SECTOR:
lstrcpy(ValueName,TEXT("Bytes Per Sector: "));
break;
case IDC_EDIT_FREE_CLUSTERS:
lstrcpy(ValueName,TEXT("Free Clusters: "));
break;
case IDC_EDIT_USED_CLUSTERS:
lstrcpy(ValueName,TEXT("Used Clusters: "));
break;
case IDC_EDIT_TOTAL_CLUSTERS:
lstrcpy(ValueName,TEXT("Total Clusters: "));
break;
case IDC_EDIT_FREE_SPACE:
lstrcpy(ValueName,TEXT("Free Space: "));
break;
case IDC_EDIT_USED_SPACE:
lstrcpy(ValueName,TEXT("Used Space: "));
break;
case IDC_EDIT_TOTAL_SPACE:
lstrcpy(ValueName,TEXT("Total Space: "));
break;
case IDC_EDIT_FS_NAME:
lstrcpy(ValueName,TEXT("FS Name: "));
break;
case IDC_EDIT_FS_MAX_COMPONENT:
lstrcpy(ValueName,TEXT("FS Max Component: "));
break;
//services
case IDC_NAME:
lstrcpy(ValueName,TEXT("Name: "));
break;
case IDC_SYSTEM_ROOT:
lstrcpy(ValueName,TEXT("System Root: "));
break;
case IDC_SERVICE_TITLE:
lstrcpy(ValueName,TEXT("Service Title: "));
break;
case IDC_EDIT_GROUP:
lstrcpy(ValueName,TEXT("Edit Group: "));
break;
case IDC_EDIT_PATHNAME:
lstrcpy(ValueName,TEXT("Path Name: "));
break;
case IDC_EDIT_START_NAME:
lstrcpy(ValueName,TEXT("Start Name: "));
break;
case IDC_EDIT_ERROR_CONTROL:
lstrcpy(ValueName,TEXT("Error Control: "));
break;
case IDC_EDIT_START_TYPE:
lstrcpy(ValueName,TEXT("Start Type: "));
break;
case IDC_EDIT_SERVICE_TYPE:
lstrcpy(ValueName,TEXT("Service Type: "));
break;
//memory
case IDC_EDIT_AVAILABLE_PAGING_FILE_SPACE:
lstrcpy(ValueName,TEXT("Available paging file space: "));
break;
case IDC_EDIT_TOTAL_PAGING_FILE_SPACE:
lstrcpy(ValueName,TEXT("Total Paging File Space: "));
break;
case IDC_EDIT_AVAILABLE_PHYSICAL_MEMORY:
lstrcpy(ValueName,TEXT("Available Physical Memory: "));
break;
case IDC_EDIT_TOTAL_PHYSICAL_MEMORY:
lstrcpy(ValueName,TEXT("Total Physical Memory: "));
break;
case IDC_LIST_PAGING_FILES:
lstrcpy(ValueName,TEXT("Paging File: "));
break;
//resource
case IDC_PORT_NAME:
lstrcpy(ValueName,TEXT("Port Name: "));
break;
case IDC_MEMORY_NAME:
lstrcpy(ValueName,TEXT("Memory Name: "));
break;
case IDC_INTERRUPT_NAME:
lstrcpy(ValueName,TEXT("Interrupt Name: "));
break;
case IDC_DMA_NAME:
lstrcpy(ValueName,TEXT("DMA Port :" ));
break;
//hardware
case IDC_EDIT_P00:
lstrcpy(ValueName,TEXT("P00 Stepping: "));
break;
case IDC_EDIT_P01:
lstrcpy(ValueName,TEXT("P01 Stepping: "));
break;
case IDC_EDIT_P02:
lstrcpy(ValueName,TEXT("P02 Stepping: "));
break;
case IDC_EDIT_P03:
lstrcpy(ValueName,TEXT("P03 Stepping: "));
break;
case IDC_EDIT_P04:
lstrcpy(ValueName,TEXT("P04 Stepping: "));
break;
case IDC_EDIT_P05:
lstrcpy(ValueName,TEXT("P05 Stepping: "));
break;
case IDC_EDIT_P06:
lstrcpy(ValueName,TEXT("P06 Stepping: "));
break;
case IDC_EDIT_P07:
lstrcpy(ValueName,TEXT("P07 Stepping: "));
break;
case IDC_EDIT_P08:
lstrcpy(ValueName,TEXT("P08 Stepping: "));
break;
case IDC_EDIT_P09:
lstrcpy(ValueName,TEXT("P09 Stepping: "));
break;
case IDC_EDIT_P10:
lstrcpy(ValueName,TEXT("P10 Stepping: "));
break;
case IDC_EDIT_P11:
lstrcpy(ValueName,TEXT("P11 Stepping: "));
break;
case IDC_EDIT_P12:
lstrcpy(ValueName,TEXT("P12 Stepping: "));
break;
case IDC_EDIT_P13:
lstrcpy(ValueName,TEXT("P13 Stepping: "));
break;
case IDC_EDIT_P14:
lstrcpy(ValueName,TEXT("P14 Stepping: "));
break;
case IDC_EDIT_P15:
lstrcpy(ValueName,TEXT("P15 Stepping: "));
break;
case IDC_EDIT_P16:
lstrcpy(ValueName,TEXT("P16 Stepping: "));
break;
case IDC_EDIT_P17:
lstrcpy(ValueName,TEXT("P17 Stepping: "));
break;
case IDC_EDIT_P18:
lstrcpy(ValueName,TEXT("P18 Stepping: "));
break;
case IDC_EDIT_P19:
lstrcpy(ValueName,TEXT("P19 Stepping: "));
break;
case IDC_EDIT_P20:
lstrcpy(ValueName,TEXT("P20 Stepping: "));
break;
case IDC_EDIT_P21:
lstrcpy(ValueName,TEXT("P21 Stepping: "));
break;
case IDC_EDIT_P22:
lstrcpy(ValueName,TEXT("P22 Stepping: "));
break;
case IDC_EDIT_P23:
lstrcpy(ValueName,TEXT("P23 Stepping: "));
break;
case IDC_EDIT_P24:
lstrcpy(ValueName,TEXT("P24 Stepping: "));
break;
case IDC_EDIT_P25:
lstrcpy(ValueName,TEXT("P25 Stepping: "));
break;
case IDC_EDIT_P26:
lstrcpy(ValueName,TEXT("P26 Stepping: "));
break;
case IDC_EDIT_P27:
lstrcpy(ValueName,TEXT("P27 Stepping: "));
break;
case IDC_EDIT_P28:
lstrcpy(ValueName,TEXT("P28 Stepping: "));
break;
case IDC_EDIT_P29:
lstrcpy(ValueName,TEXT("P29 Stepping: "));
break;
case IDC_EDIT_P30:
lstrcpy(ValueName,TEXT("P30 Stepping: "));
break;
case IDC_EDIT_P31:
lstrcpy(ValueName,TEXT("P31 Stepping: "));
break;
case IDC_EDIT_SYSTEM_BIOS_DATE:
lstrcpy(ValueName,TEXT("System BIOS Date: "));
break;
case IDC_DROP_DOWN_SYSTEM_BIOS_VERSION:
lstrcpy(ValueName,TEXT("System BIOS Version: "));
break;
case IDC_EDIT_VIDEO_BIOS_DATE:
lstrcpy(ValueName,TEXT("Video VIOS Date: "));
break;
case IDC_DROP_DOWN_VIDEO_BIOS_VERSION:
lstrcpy(ValueName,TEXT("Video BIOS Version: "));
break;
case IDC_EDIT_PAGE_SIZE:
lstrcpy(ValueName,TEXT("Page Size :"));
break;
case IDC_EDIT_CURR_VIDEO_RES:
lstrcpy(ValueName,TEXT("Current Video Res :"));
break;
//environment
case IDC_EDIT_USER_NAME:
lstrcpy(ValueName,TEXT("User Name :"));
break;
case IDC_LIST_PROCESS_ENVIRONMENT:
lstrcpy(ValueName,TEXT("Process Environment :"));
break;
case IDC_LIST_USER_ENVIRONMENT:
lstrcpy(ValueName,TEXT("User Environment :"));
break;
case IDC_LIST_SYSTEM_ENVIRONMENT:
lstrcpy(ValueName,TEXT("System Environment :"));
break;
//other
case IDC_SPACE:
lstrcpy(ValueName,TEXT(""));
break;
// OSVer
case IDC_EDIT_CSD_NUMBER:
lstrcpy(ValueName,TEXT("Service Pack: "));
break;
default:
lstrcpy(ValueName,TEXT("......."));
break;
}//end switch
lstrcpy((LPTSTR)Buf,(LPCTSTR)(Data));
if(FLAG==TRUE){
wsprintf (szBuffer,
TEXT("%30s %s"),ValueName,Buf);
Log (__LINE__, __FILE__, szBuffer);
}
if(FLAG==FALSE){
// printf("%30s %s",NonUNICODEValueName,Buf);
// fp=fopen(print_path,"at");
// if(fp==NULL)return FALSE;
// fprintf(fp,"%30s %s",NonUNICODEValueName,Buf);
// fclose(fp);
}
return TRUE;
}//end function
BOOL PrintDwordToFile(
DWORD Data,
INT i)
{
/*++
Routine Description:
Routine to log the **DWORD** data to file.
Arguments:
Data - String to be printed to the log file.
i - Value to switch on to determine string to print to
log file.
Return Value:
BOOL
--*/
TCHAR ValueName[256];
TCHAR xData[30];
TCHAR szBuffer[257];
INT rc;
lstrcpy(xData,TEXT(""));
switch( i ){
//services
case IDC_EDIT_ERROR_CONTROL:
lstrcpy(ValueName,TEXT("Error Control: "));
switch(Data){
case 0:
lstrcpy(xData,TEXT(" Ignore"));
break;
case 1:
lstrcpy(xData,TEXT(" Normal"));
break;
case 2:
lstrcpy(xData,TEXT(" Severe"));
break;
case 3:
lstrcpy(xData,TEXT(" Critical"));
break;
}
break;
case IDC_EDIT_START_TYPE:
lstrcpy(ValueName,TEXT("Start Type: "));
switch(Data){
case 0:
lstrcpy(xData,TEXT(" Boot"));
break;
case 1:
lstrcpy(xData,TEXT(" System"));
break;
case 2:
lstrcpy(xData,TEXT(" Automatic"));
break;
case 3:
lstrcpy(xData,TEXT(" Demand"));
break;
case 4:
lstrcpy(xData,TEXT(" Disabled"));
break;
}
break;
case IDC_EDIT_SERVICE_TYPE:
lstrcpy(ValueName,TEXT("Service Type: "));
switch(Data){
case 16:
lstrcpy(xData,TEXT(" Own Process"));
break;
case 32:
lstrcpy(xData,TEXT(" Shared Process"));
break;
}
break;
case IDC_CURRENT_STATE:
lstrcpy(ValueName,TEXT("Current State: "));
switch(Data){
case 1:
lstrcpy(xData,TEXT(" Stopped"));
break;
case 2:
lstrcpy(xData,TEXT(" Start Pending"));
break;
case 3:
lstrcpy(xData,TEXT(" Stop Pending"));
break;
case 4:
lstrcpy(xData,TEXT(" Running"));
break;
case 5:
lstrcpy(xData,TEXT(" Continue Pending"));
break;
case 6:
lstrcpy(xData,TEXT(" Pause Pending"));
break;
case 7:
lstrcpy(xData,TEXT(" Paused"));
break;
}
break;
//resources
case IDC_DMA_CHANNEL:
lstrcpy(ValueName,TEXT("DMA Channel: "));
break;
case IDC_DMA_PORT:
lstrcpy(ValueName,TEXT("DMA Port: "));
break;
case IDC_PORT_LENGTH:
lstrcpy(ValueName,TEXT("Port Length: "));
break;
case IDC_PORT_START:
lstrcpy(ValueName,TEXT("Port Start: "));
break;
case IDC_PORT_START_LOWPART:
lstrcpy(ValueName,TEXT("Port Low Part: "));
break;
case IDC_MEMORY_LENGTH:
lstrcpy(ValueName,TEXT("Memory Length: "));
break;
case IDC_MEMORY_START:
lstrcpy(ValueName,TEXT("Memory Start: "));
break;
case IDC_MEMORY_START_LOWPART:
lstrcpy(ValueName,TEXT("Memory Start Low Part: "));
break;
case IDC_INTERRUPT_AFFINITY:
lstrcpy(ValueName,TEXT("Interrupt Affinity: "));
break;
case IDC_INTERRUPT_LEVEL:
lstrcpy(ValueName,TEXT("Interrupt Level: "));
break;
case IDC_INTERRUPT_VECTOR:
lstrcpy(ValueName,TEXT("Interrupt Vector: "));
break;
//hardware
case IDC_EDIT_NUMBER_OF_PROCESSORS:
lstrcpy(ValueName,TEXT("Number of Processors: "));
break;
case IDC_EDIT_OEM_ID:
lstrcpy(ValueName,TEXT("OEM ID: "));
break;
case IDC_EDIT_PROCESSOR_TYPE:
lstrcpy(ValueName,TEXT("Processor Type: "));
break;
//memory
case IDC_FORMAT_MEMORY_IN_USE:
lstrcpy(ValueName,TEXT("Memory In Use: "));
break;
default:
lstrcpy(ValueName,TEXT("....."));
break;
}//end switch
wsprintf (szBuffer,
TEXT("%30s %d %s"),ValueName,Data,xData);
Log (__LINE__, __FILE__, szBuffer);
return TRUE;
}//end function
BOOL PrintHexToFile(
DWORD Data,
INT i)
{
/*++
Routine Description:
Routine to log the **HEX** data to file.
Arguments:
Data - String to be printed to the log file.
i - Value to switch on to determine string to print to
log file.
Return Value:
BOOL
--*/
TCHAR ValueName[256];
TCHAR szBuffer[257];
INT rc;
switch( i ){
//resources
case IDC_MEMORY_START:
lstrcpy(ValueName,TEXT("Memory Start: "));
break;
//drives
case IDC_VOLUME_SN_TITLE:
lstrcpy(ValueName,TEXT("Serial number: "));
break;
//hardware
case IDC_EDIT_MAX_APP_ADDRESS:
lstrcpy(ValueName,TEXT("Max App Address: "));
break;
case IDC_EDIT_MIN_APP_ADDRESS:
lstrcpy(ValueName,TEXT("Min App Address: "));
break;
default:
lstrcpy(ValueName,TEXT("....."));
break;
}//end switch
wsprintf (szBuffer,
TEXT("%30s %lX"),ValueName,Data);
Log (__LINE__, __FILE__, szBuffer);
return TRUE;
}//end function
void PrintTitle(
LPCTSTR Title)
{
/*++
Routine Description:
Routing to log title to file.
Arguments:
Title - String to be printed to the log file.
Return Value:
void
--*/
TCHAR szBuffer[257];
wsprintf (szBuffer,
TEXT("%s"),Title);
Log (__LINE__, __FILE__, (LPCTSTR) szBuffer);
wsprintf (szBuffer,
TEXT("================================================================="));
Log (__LINE__, __FILE__, (LPCTSTR) szBuffer);
return;
}//end function
void Log (
INT nLine,
LPSTR szFile,
LPCTSTR szMessage)
{
/*++
Routine Description:
Routine to create the Asciii file and write data.
Arguments:
line - line in file.
file - file where data is going to be written.
message - contents to write to file
Return Value:
void
--*/
TCHAR szBuffer[257];
memset(szBuffer,0,sizeof(szBuffer));
// Open the log file if it is not already open.
//
if (hLogfile == NULL)
{
// this is the first call to Log:
//backup file
BackupFile(log_path2);
// - create/open the file
hLogfile = CreateFile (
log_path, // log
GENERIC_WRITE, // Open file for writing only
FILE_SHARE_READ, // Allow others to read file
NULL, // No security
CREATE_ALWAYS, // Create file if doesn't exist
0,
0) ;
if (hLogfile == (HANDLE)-1)
{
return;
}
}
// format the message and write it to the log file
//
wsprintf (szBuffer,
TEXT("%s \r\n"),szMessage);
MyAnsiWriteFile (hLogfile, szBuffer, lstrlen(szBuffer));
}
BOOL MyByteWriteFile (HANDLE hFile, LPVOID lpBuffer, DWORD nBytes)
{
/*++
Routine Description:
WriteFile support function
Arguments:
hFile - file.
lpBuffer - buffer to write data.
nBytes - number of bytes written.
Return Value:
BOOL
--*/
DWORD nBytesWritten;
LPVOID hpBuffer = lpBuffer;
DWORD dwByteCount = nBytes;
return (WriteFile (hFile, lpBuffer, nBytes, &nBytesWritten, NULL));
} // end of MyByteWriteFile()
BOOL MyAnsiWriteFile (HANDLE hFile, LPVOID lpBuffer, DWORD nChars)
{
/*++
Routine Description:
Converts UNICODE to ASCII
Arguments:
file - file where data is going to be written.
lpBuffer - contents to write to file
nChars - number of characters
Return Value:
BOOL
--*/
LPSTR lpAnsi;
int nBytes;
BOOL Done, fDefCharUsed;
nBytes = WideCharToMultiByte (CP_ACP, 0, (LPWSTR) lpBuffer, nChars, NULL, 0, NULL, &fDefCharUsed);
if (!(lpAnsi = (LPSTR) LocalAlloc (LPTR, nBytes + 3)))
{
MessageBox (GetFocus (), NULL, NULL, MB_OK);
return (FALSE);
}
WideCharToMultiByte (CP_ACP, 0, (LPWSTR) lpBuffer, nChars, lpAnsi, nBytes, NULL, &fDefCharUsed);
strcat(lpAnsi,"\n");
Done = MyByteWriteFile (hFile, lpAnsi, nBytes);
LocalFree (lpAnsi);
return (Done);
} // end of MyAnsiWriteFile()
BOOL ValidateString(LPCTSTR String){
/*++
Routine Description:
This routine insures that the string is valid
Arguments:
String - String to validate.
Return Value:
BOOL
--*/
INT GetLength;
BOOL TestChar;
INT i;
//GreggA added because of bug on MIPS machines
//If string is NULL (ie. on a MIPS if the drive A is empty
//String will be NULL)
if(String == NULL)
return FALSE;
//end of GreggA's code
GetLength=lstrlen(String);
if(GetLength == 0)
return FALSE;
for(i=0;i<(GetLength-1);++i){
if(String[i]<32 || String[i] > 126)
{
return FALSE;
}
}
return TRUE;
}//end function
//----------------------------------------------------------------------
// BackupFile
//
// DESCRIPTION:
// Backs up the given file "pszSrc"
//
// INPUT:
// pszSrc: holds the filename of the file to backup.
//
// OUTPUT:
// rc == 0: all OK.
// != 0: error,
// CopyFile ().
//
//----------------------------------------------------------------------
void BackupFile(TCHAR *pszSrc)
{
TCHAR szDst[24];
CHAR szAnsiPath[24];
TCHAR *pszPtr;
TCHAR szPath[24];
TCHAR ch = TEXT('.');
BOOL fDefCharUsed;
lstrcpy(szPath, pszSrc);
pszPtr = StrFindChar (szPath, ch);
*(pszPtr) = '\0';
indexedBackupFileName (szPath, szDst);
WideCharToMultiByte (CP_ACP, 0, (LPWSTR) pszSrc, 24, szAnsiPath, 24, NULL, &fDefCharUsed);
if( (_access( szAnsiPath, 0 )) != -1 ){
CopyFile(pszSrc, szDst, FALSE);
lstrcpy(szGlobalPath,szDst);
}
else
{
lstrcpy(szGlobalPath,TEXT("msdrpt.txt"));
}
} // BackupFile
//----------------------------------------------------------------------
// indexedBackupFileName
//
// DESCRIPTION:
// returns a filename with an extenstion of .000 to 999. It tries to find
// the next highest number for the extension to be used as a backup filename.
// if highest number found is 999, the filename extension stay the same.
//
//
// INPUT:
// pszBase: Base filename including the period if number is to be treated
// as an extension.
//
//
// OUTPUT:
// pszFileName: filename returned with highest number at end of it. Must
// have space preallocated to it.
//
// NOTES:
// Made into a void proc.
//
//----------------------------------------------------------------------
void indexedBackupFileName(TCHAR *pszBase, TCHAR *pszFileName)
{
TCHAR szPath1[24];
TCHAR szPath2[24];
INT iExtension;
INT iTmp;
lstrcpy(szPath1, pszBase);
iTmp=getHighestExt(szPath1);//, &iTmp);
iExtension = iTmp;
wsprintf(pszFileName, TEXT("%s%02d.txt"), szPath1, iExtension);
} // indexedBackupFileName
//----------------------------------------------------------------------
// getHighestExt
//
// DESCRIPTION:
// gets a string pszFileName as an input and forms the following string:
//
// szTemp = pszFileName + x + *, where x = 9 downto 0.
//
// Then tries to find if the szTemp file exist. The routine returns the
// highest number found.
//
// INPUT:
// pszFileName: fileName to look for
//
// OUTPUT:
// piExt : highest filename number in extension found.
// rc == 0;
//
//
//----------------------------------------------------------------------
USHORT getHighestExt(TCHAR *pszFileName)//, INT *piExt)
{
TCHAR szTemp[24];
USHORT uCount;
WIN32_FIND_DATA lpffd;
INT i=0;
for (i=0; i < 999; i++) {
wsprintf (szTemp, TEXT("%s%02d.txt"), pszFileName, i);
if (FindFirstFile(szTemp,(LPWIN32_FIND_DATA) & lpffd)==INVALID_HANDLE_VALUE)
break;
}
return i;
} // getHighestExt
TCHAR * StrFindChar(TCHAR * String, TCHAR ch){
int i;
for(i=0;i<lstrlen(String);i++){
if(String[i]==ch){
break;
}
}
return(&String[i]);
}
BOOL PrintNetDwordToFile(
TCHAR * Title,
DWORD Data)
{
/*++
Routine Description:
Routine to log the Net **DWORD** data to file.
Arguments:
Title - Registry Value name
Data - String to be printed to the log file.
Return Value:
BOOL
--*/
TCHAR szBuffer[257];
wsprintf (szBuffer,
TEXT("%30s %d"),Title,Data);
Log (__LINE__, __FILE__, szBuffer);
return TRUE;
}//end function
BOOL PrintNetStringToFile(
TCHAR * Title,
TCHAR * String)
{
/*++
Routine Description:
Routine to log the Net **DWORD** data to file.
Arguments:
Title - Registry Value name
Data - String to be printed to the log file.
Return Value:
BOOL
--*/
TCHAR szBuffer[257];
wsprintf (szBuffer,
TEXT("%30s %s"),Title,String);
Log (__LINE__, __FILE__, szBuffer);
return TRUE;
}//end function