tftpd.exe开启调试
debugFlags设置为0xf开启debug
设置为0xf000f则开启debug和trace
第一部分:
位置
net/tcpip/services/tftpd/service.c
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,
"System\\CurrentControlSet\\Services\\Tftpd\\Parameters",
0, KEY_QUERY_VALUE, ¶meters) != ERROR_SUCCESS)
上面是注册表路径
void
TftpdReadRegistryParameters() {
DWORD keyType, valueSize;
char path[MAX_PATH];
HKEY parameters = NULL;
// Open the registry key which contains all the adjustable parameters
// to the service. We will register for notification on it later incase
// anything changes while we're running.
if (RegOpenKeyEx(HKEY_LOCAL_MACHINE,
"System\\CurrentControlSet\\Services\\Tftpd\\Parameters",
0, KEY_QUERY_VALUE, ¶meters) != ERROR_SUCCESS)
parameters = NULL;
if (parameters == NULL) {
globals.parameters.hashEntries = 256;
globals.parameters.lowWaterMark = 5;
globals.parameters.highWaterMark = 256;
globals.parameters.maxRetries = 10;
TftpdSetStartDirectory(NULL);
strcpy(globals.parameters.validClients, "*.*.*.*");
strcpy(globals.parameters.validReadFiles, "*");
strcpy(globals.parameters.validMasters, "*.*.*.*");
strcpy(globals.parameters.validWriteFiles, "*");
return;
}
#if (DBG)
// Initialize debug settings (if applicable) :
keyType = 0;
valueSize = sizeof(globals.parameters.debugFlags);
if ((RegQueryValueEx(parameters, "DebugFlags", NULL, &keyType,
(LPBYTE)&globals.parameters.debugFlags, &valueSize) != ERROR_SUCCESS) ||
(keyType != REG_DWORD)) {
globals.parameters.debugFlags = 0x00000000;
}
#endif // (DBG)
第二部分:
位置
net/tcpip/services/tftpd/debug.c
#if (DBG)
#include <stdio.h>
void __cdecl
TftpdOutputDebug(ULONG flag, CHAR *format, ...) {
CHAR buffer[1024];
va_list args;
if (!(flag & globals.parameters.debugFlags))
return;
va_start(args, format);
sprintf(buffer, "[%04X] ", GetCurrentThreadId());
vsprintf(buffer + 7, format, args);
va_end(args);
OutputDebugString(buffer);
} // TftpdOutputDebug()
#endif // (DBG)
第三部分:
位置
net/tcpip/services/tftpd/precomp.h
//
// Debug
//
#if defined(DBG)
void __cdecl
TftpdOutputDebug(ULONG flag, char *format, ...);
#define TFTPD_DEBUG(x) TftpdOutputDebug x
#define TFTPD_DBG_SERVICE 0x00000001
#define TFTPD_DBG_IO 0x00000002
#define TFTPD_DBG_PROCESS 0x00000004
#define TFTPD_DBG_CONTEXT 0x00000008
#define TFTPD_TRACE_SERVICE 0x00010000
#define TFTPD_TRACE_IO 0x00020000
#define TFTPD_TRACE_PROCESS 0x00040000
#define TFTPD_TRACE_CONTEXT 0x00080000
#else
#define TFTPD_DEBUG(x)
#endif // defined(DBG)