windows-nt/Source/XPSP1/NT/ds/netapi/svcdlls/wkssvc/server/wsdevice.h
2020-09-26 16:20:57 +08:00

190 lines
4.3 KiB
C

/*++
Copyright (c) 1991 Microsoft Corporation
Module Name:
wsdevice.h
Abstract:
Private header file to be included by Workstation service modules that
need to call into the NT Redirector and the NT Datagram Receiver.
Author:
Rita Wong (ritaw) 15-Feb-1991
Revision History:
--*/
#ifndef _WSDEVICE_INCLUDED_
#define _WSDEVICE_INCLUDED_
#include <ntddnfs.h> // Redirector include file
#include <ntddbrow.h> // Datagram receiver include file
//-------------------------------------------------------------------//
// //
// Type definitions //
// //
//-------------------------------------------------------------------//
typedef enum _DDTYPE {
Redirector,
DatagramReceiver
} DDTYPE, *PDDTYPE;
//-------------------------------------------------------------------//
// //
// Function prototypes of support routines found in wsdevice.c //
// //
//-------------------------------------------------------------------//
NET_API_STATUS
WsDeviceControlGetInfo(
IN DDTYPE DeviceDriverType,
IN HANDLE FileHandle,
IN ULONG DeviceControlCode,
IN PVOID RequestPacket,
IN ULONG RequestPacketLength,
OUT LPBYTE *OutputBuffer,
IN ULONG PreferedMaximumLength,
IN ULONG BufferHintSize,
OUT PULONG_PTR Information OPTIONAL
);
NET_API_STATUS
WsInitializeRedirector(
VOID
);
NET_API_STATUS
WsShutdownRedirector(
VOID
);
NET_API_STATUS
WsRedirFsControl (
IN HANDLE FileHandle,
IN ULONG RedirControlCode,
IN PLMR_REQUEST_PACKET Rrp,
IN ULONG RrpLength,
IN PVOID SecondBuffer OPTIONAL,
IN ULONG SecondBufferLength,
OUT PULONG_PTR Information OPTIONAL
);
NET_API_STATUS
WsDgReceiverIoControl(
IN HANDLE FileHandle,
IN ULONG DgReceiverControlCode,
IN PLMDR_REQUEST_PACKET Drp,
IN ULONG DrpLength,
IN PVOID SecondBuffer OPTIONAL,
IN ULONG SecondBufferLength,
OUT PULONG_PTR Information OPTIONAL
);
NET_API_STATUS
WsBindTransport(
IN LPTSTR TransportName,
IN DWORD QualityOfService,
OUT LPDWORD ErrorParameter OPTIONAL
);
NET_API_STATUS
WsUnbindTransport(
IN LPTSTR TransportName,
IN DWORD ForceLevel
);
NET_API_STATUS
WsDeleteDomainName(
IN PLMDR_REQUEST_PACKET Drp,
IN DWORD DrpLength,
IN LPTSTR DomainName,
IN DWORD DomainNameSize
);
NET_API_STATUS
WsAddDomainName(
IN PLMDR_REQUEST_PACKET Drp,
IN DWORD DrpLength,
IN LPTSTR DomainName,
IN DWORD DomainNameSize
);
NET_API_STATUS
WsUnloadDriver(
IN LPTSTR DriverNameString
);
NET_API_STATUS
WsLoadDriver(
IN LPWSTR DriverNameString
);
//-------------------------------------------------------------------//
// //
// Global variables //
// //
//-------------------------------------------------------------------//
// Global Registry key definitions for the new Redirector
#define SERVICE_REGISTRY_KEY L"\\Registry\\Machine\\System\\CurrentControlSet\\Services\\"
#define SMB_MINIRDR L"MRxSmb"
#define RDBSS L"Rdbss"
// the key definition is relative to HKEY_LOCAL_MACHINE
#define MRXSMB_REGISTRY_KEY L"System\\CurrentControlSet\\Services\\MRxSmb"
#define LAST_LOAD_STATUS L"LastLoadStatus"
#define REDIRECTOR L"RDR"
//
// Handle to the Redirector FSD
//
extern HANDLE WsRedirDeviceHandle;
//
// This variable is used to remember whether we loaded rdr.sys or mrxsmb.sys
// and to act accordingly. at this stage, we only load mrxsmb.sys when certain
// conditions are met.
//
extern BOOLEAN LoadedMRxSmbInsteadOfRdr;
extern NET_API_STATUS
WsLoadRedirector(
VOID
);
extern VOID
WsUnloadRedirector(
VOID
);
extern NET_API_STATUS
WsCSCReportStartRedir(
VOID
);
extern NET_API_STATUS
WsCSCWantToStopRedir(
VOID
);
//
// Handle to the Datagram Receiver DD
//
extern HANDLE WsDgReceiverDeviceHandle;
#endif // ifndef _WSDEVICE_INCLUDED_