windows-nt/Source/XPSP1/NT/public/internal/base/inc/smbtrace.h
2020-09-26 16:20:57 +08:00

108 lines
3.6 KiB
C

/*++
Copyright (c) 1992 Microsoft Corporation
Module Name:
smbtrace.h
Abstract:
This module provides the interface between the SmbTrace program and
the kernel mode SmbTrace component.
The interface between the kernel mode component and the
server/redirector is found in nt\private\inc\smbtrsup.h
Author:
Peter Gray (w-peterg) 16-Mar-92
Revision History:
Stephan Mueller (t-stephm) 08-July-92
Extensions to support smbtrace in the redirector as well as the
server.
--*/
#ifndef _SMBTRACE_
#define _SMBTRACE_
//
// The shared memory has this structure in it, used to manage the
// table and other data shared by the kernel mode component and
// the appliction. It is passed back to the client after creation by the
// server during a FSCTL_???_START_SMBTRACE via an offset (pointer).
//
typedef struct _SMBTRACE_TABLE_HEADER {
ULONG HighestConsumed; // last table entry processed by app (queue head)
ULONG NextFree; // next free entry in table (queue tail)
BOOLEAN ApplicationStop; // when set, the application should halt
} SMBTRACE_TABLE_HEADER, *PSMBTRACE_TABLE_HEADER;
//
// The following stucture is one entry in the shared table of
// offsets to the received SMBs. The offsets are relative to the
// start of the shared memory section.
//
typedef struct _SMBTRACE_TABLE_ENTRY {
ULONG BufferOffset; // location of SMB from start of shared memory
ULONG SmbLength; // the length of the SMB
ULONG NumberMissed; // number of preceding SMBs that were missed
PVOID SmbAddress; // real address of original SMB, if available
} SMBTRACE_TABLE_ENTRY, *PSMBTRACE_TABLE_ENTRY;
//
// The following stucture is passed to the server when doing the
// FSCtl "FSCTL_???_START_SMBTRACE". It contains configuration
// information that will affect the way the NT server and Smbtrace
// will interact.
//
typedef struct _SMBTRACE_CONFIG_PACKET_REQ {
BOOLEAN SingleSmbMode; // T to block on DoneEvent, F for faster.
CLONG Verbosity; // how much data the app intends to decode
// indicates how much needs to be saved
ULONG BufferSize; // size of shared memory used to store SMBs
ULONG TableSize; // number of entries in the table
} SMBTRACE_CONFIG_PACKET_REQ, *PSMBTRACE_CONFIG_PACKET_REQ;
//
// Here is the response to that FSCTL.
//
typedef struct _SMBTRACE_CONFIG_PACKET_RESP {
ULONG HeaderOffset; // location of header from start of shared memory
ULONG TableOffset; // location of table from start of shared memory
} SMBTRACE_CONFIG_PACKET_RESP, *PSMBTRACE_CONFIG_PACKET_RESP;
//
// Well-known names for objects accessible to both the server/redirector
// and the Smbtrace application.
//
#define SMBTRACE_SRV_SHARED_MEMORY_NAME TEXT( "\\SmbTraceSrvMemory" )
#define SMBTRACE_SRV_NEW_SMB_EVENT_NAME TEXT( "\\SmbTraceSrvNewSmbEvent" )
#define SMBTRACE_SRV_DONE_SMB_EVENT_NAME TEXT( "\\SmbTraceSrvDoneSmbEvent" )
#define SMBTRACE_LMR_SHARED_MEMORY_NAME TEXT( "\\SmbTraceRdrMemory" )
#define SMBTRACE_LMR_NEW_SMB_EVENT_NAME TEXT( "\\SmbTraceRdrNewSmbEvent" )
#define SMBTRACE_LMR_DONE_SMB_EVENT_NAME TEXT( "\\SmbTraceRdrDoneSmbEvent" )
//
// Verbosity levels indicating how much data the SmbTrace application
// intends to decode, and consequently, how much data the server/redirector
// must preserve for it.
//
#define SMBTRACE_VERBOSITY_OFF 0
#define SMBTRACE_VERBOSITY_SINGLE_LINE 1
#define SMBTRACE_VERBOSITY_ERROR 2
#define SMBTRACE_VERBOSITY_HEADER 3
#define SMBTRACE_VERBOSITY_PARAMS 4
#define SMBTRACE_VERBOSITY_NONESSENTIAL 5
#endif // _SMBTRACE_