108 lines
3.6 KiB
C
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_
|
|
|