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_
|
|||
|
|
|||
|
|