110 lines
3 KiB
C
110 lines
3 KiB
C
/*++
|
||
|
||
Copyright (c) 1989 Microsoft Corporation
|
||
|
||
Module Name:
|
||
|
||
smbadmin.h
|
||
|
||
Abstract:
|
||
|
||
This module implements the SMB's that need to be exchanged to facilitate
|
||
bookkeeping at the server
|
||
|
||
Author:
|
||
|
||
Balan Sethu Raman [SethuR] 7-March-1995
|
||
|
||
Revision History:
|
||
|
||
|
||
Notes;
|
||
|
||
In the normal course of events a TreeId/UserId which translates into a Share/Session instance
|
||
is required to send a SMB to the server. In terms of the local data structures it translates
|
||
to a SMBCEDB_SERVER_ENTRY/SMBCEDB_SESSION_ENTRY/SMBCEDB_NET_ROOT_ENTRY. However, there are a
|
||
few exceptions to this rule in which one or more of the fields in not required. These are
|
||
normally used during connection establishment/connection tear down and connection state
|
||
maintenance.
|
||
|
||
All these SMB's have been grouped together in the implementation of SMB_ADMIN_EXCHANGE which
|
||
is derived from SMB_EXCHANGE. All NEGOTIATE,LOG_OFF,DISCONNECT and ECHO SMB are sent
|
||
using this type of exchange. The important factor that distinguishes the SMB_ADMIN_EXCHANGE
|
||
from regular exchanges is the way the state of the exchange is manipulated to take into
|
||
account the specialized requirements of each of the above mentioned commands.
|
||
|
||
--*/
|
||
|
||
#ifndef _SMBADMIN_H_
|
||
#define _SMBADMIN_H_
|
||
|
||
#include <smbxchng.h>
|
||
|
||
typedef struct _SMB_ADMIN_EXCHANGE_ {
|
||
SMB_EXCHANGE;
|
||
|
||
ULONG SmbBufferLength;
|
||
PVOID pSmbBuffer;
|
||
PMDL pSmbMdl;
|
||
PSMBCE_RESUMPTION_CONTEXT pResumptionContext;
|
||
|
||
union {
|
||
struct {
|
||
PMRX_SRV_CALL pSrvCall;
|
||
UNICODE_STRING DomainName;
|
||
PMDL pSecurityBlobMdl;
|
||
} Negotiate;
|
||
|
||
struct {
|
||
UCHAR DisconnectSmb[TRANSPORT_HEADER_SIZE +
|
||
sizeof(SMB_HEADER) +
|
||
sizeof(REQ_TREE_DISCONNECT)];
|
||
} Disconnect;
|
||
|
||
struct {
|
||
UCHAR LogOffSmb[TRANSPORT_HEADER_SIZE +
|
||
sizeof(SMB_HEADER) +
|
||
sizeof(REQ_LOGOFF_ANDX)];
|
||
} LogOff;
|
||
|
||
struct {
|
||
PMDL pEchoProbeMdl;
|
||
ULONG EchoProbeLength;
|
||
} EchoProbe;
|
||
};
|
||
} SMB_ADMIN_EXCHANGE, *PSMB_ADMIN_EXCHANGE;
|
||
|
||
PSMB_EXCHANGE
|
||
SmbResetServerEntryNegotiateExchange(
|
||
PSMBCEDB_SERVER_ENTRY pServerEntry);
|
||
|
||
PSMB_EXCHANGE
|
||
SmbResetServerEntryNegotiateExchange(
|
||
PSMBCEDB_SERVER_ENTRY pServerEntry);
|
||
|
||
extern SMB_EXCHANGE_DISPATCH_VECTOR AdminExchangeDispatch;
|
||
|
||
extern NTSTATUS
|
||
SmbCeNegotiate(
|
||
PSMBCEDB_SERVER_ENTRY pServerEntry,
|
||
PMRX_SRV_CALL pSrvCall,
|
||
BOOLEAN RemoteBootSession);
|
||
|
||
extern NTSTATUS
|
||
SmbCeDisconnect(
|
||
PSMBCE_V_NET_ROOT_CONTEXT pNetRootEntry);
|
||
|
||
extern NTSTATUS
|
||
SmbCeLogOff(
|
||
PSMBCEDB_SERVER_ENTRY pServerEntry,
|
||
PSMBCEDB_SESSION_ENTRY pSessionEntry);
|
||
|
||
extern NTSTATUS
|
||
SmbCeSendEchoProbe(
|
||
PSMBCEDB_SERVER_ENTRY pServerEntry,
|
||
PMRXSMB_ECHO_PROBE_SERVICE_CONTEXT pEchoProbeContext);
|
||
|
||
|
||
#endif // _SMBADMIN_H_
|
||
|
||
|