/*++ Copyright (c) 1990 Microsoft Corporation Module Name: smbtrsup.h Abstract: This module provides the interface to the kernel mode SmbTrace component within the LanMan server and redirector. The interface providing user-level access to SmbTrace is found in nt\private\inc\smbtrace.h Author: Stephan Mueller (t-stephm) 20-July-1992 Revision History: 20-July-1992 t-stephm Created --*/ #ifndef _SMBTRSUP_ #define _SMBTRSUP_ // // Selection of components in which SmbTrace will run. // Pass the appropriate value to SmbTraceStart and SmbTraceStop, // and test the appropriate element of SmbTraceActive and // SmbTraceTransitioning. The actual tracing calls do not require // a Component parameter as it is implied by the routine being called. // typedef enum _SMBTRACE_COMPONENT { SMBTRACE_SERVER, SMBTRACE_REDIRECTOR } SMBTRACE_COMPONENT; extern BOOLEAN SmbTraceActive[]; // // SmbTrace support exported routines // // // Initialize the SMB tracing package // NTSTATUS SmbTraceInitialize ( IN SMBTRACE_COMPONENT Component ); // // Terminate the SMB tracing package // VOID SmbTraceTerminate ( IN SMBTRACE_COMPONENT Component ); // // Start tracing // NTSTATUS SmbTraceStart( IN ULONG InputBufferLength, IN ULONG OutputBufferLength, IN OUT PVOID ConfigInOut, IN PFILE_OBJECT FileObject, IN SMBTRACE_COMPONENT Component ); // // Stop tracing // NTSTATUS SmbTraceStop( IN PFILE_OBJECT FileObject OPTIONAL, IN SMBTRACE_COMPONENT Component ); // // VOID // SMBTRACE_SRV( // IN PMDL SmbMdl, // ) // // Routine description: // // If SmbTrace is turned on, this macro calls SmbTraceCompleteSrv // to send the SMB to the smbtrace program in user mode. This routine // is specific to the LanMan server. Use it for tracing an SMB // contained in an Mdl. // // Arguments: // // SmbMdl - a pointer to the Mdl containing the SMB that is about // to be sent. // // Return Value: // // None // #define SMBTRACE_SRV(smbmdl) \ if ( SmbTraceActive[SMBTRACE_SERVER] ) { \ SmbTraceCompleteSrv( (smbmdl), NULL, 0 ); \ } // // VOID // SMBTRACE_SRV2( // IN PVOID Smb, // IN ULONG SmbLength // ) // // Routine description: // // If SmbTrace is turned on, this macro calls SmbTraceCompleteSrv // to send the SMB to the smbtrace program in user mode. This routine // is specific to the LanMan server. Use it for tracing an SMB // found in contiguous memory. // // Arguments: // // Smb - a pointer to the SMB that is about to be sent. // // SmbLength - the length of the SMB. // // Return Value: // // None // #define SMBTRACE_SRV2(smb,smblength) \ if ( SmbTraceActive[SMBTRACE_SERVER] ) { \ SmbTraceCompleteSrv( NULL, (smb), (smblength) ); \ } // // Identify a packet for tracing in the server. // Do not call this routine directly, always use the SMBTRACE_SRV macro // VOID SmbTraceCompleteSrv ( IN PMDL SmbMdl, IN PVOID Smb, IN CLONG SmbLength ); // // VOID // SMBTRACE_RDR( // IN PMDL SmbMdl // ) // // Routine description: // // If SmbTrace is turned on, this macro calls SmbTraceCompleteRdr // to send the SMB to the smbtrace program in user mode. This routine // is specific to the LanMan redirector. Use it for tracing an SMB // contained in an Mdl. // // Arguments: // // SmbMdl - a pointer to the Mdl containing the SMB that is about // to be sent. // // Return Value: // // None // #define SMBTRACE_RDR(smbmdl) \ if ( SmbTraceActive[SMBTRACE_REDIRECTOR] ) { \ SmbTraceCompleteRdr( (smbmdl), NULL, 0 ); \ } // // VOID // SMBTRACE_RDR2( // IN PVOID Smb, // IN ULONG SmbLength // ) // // Routine description: // // If SmbTrace is turned on, this macro calls SmbTraceCompleteRdr // to send the SMB to the smbtrace program in user mode. This routine // is specific to the LanMan redirector. Use it for tracing an SMB // found in contiguous memory. // // Arguments: // // Smb - a pointer to the SMB that is about to be sent. // // SmbLength - the length of the SMB. // // Return Value: // // None // #define SMBTRACE_RDR2(smb,smblength) \ if ( SmbTraceActive[SMBTRACE_REDIRECTOR] ) { \ SmbTraceCompleteRdr( NULL, (smb), (smblength) ); \ } // // Identify a packet for tracing in the redirector. // Do not call this routine directly, always use one of the SMBTRACE_RDR // macros. // VOID SmbTraceCompleteRdr ( IN PMDL SmbMdl, IN PVOID Smb, IN CLONG SmbLength ); #endif // _SMBTRSUP_