209 lines
3.9 KiB
C
209 lines
3.9 KiB
C
/*++
|
||
|
||
Copyright (c) 1991 Microsoft Corporation
|
||
|
||
Module Name:
|
||
|
||
Rxdevice.h
|
||
|
||
Abstract:
|
||
|
||
Private header file for the Rx DRT ( Redirector FSCTL calls )
|
||
|
||
Author:
|
||
|
||
Balan Sethu Raman -- Created from the workstation service code
|
||
|
||
Revision History:
|
||
|
||
--*/
|
||
|
||
#ifndef _RXDEVICE_INCLUDED_
|
||
#define _RXDEVICE_INCLUDED_
|
||
|
||
#include <ntddnfs2.h> // Rdr2 include file
|
||
#include <ntddbrow.h> // Datagram receiver include file
|
||
|
||
|
||
|
||
typedef struct _RX_BIND_REDIR {
|
||
HANDLE EventHandle;
|
||
BOOL Bound;
|
||
IO_STATUS_BLOCK IoStatusBlock;
|
||
LMR_REQUEST_PACKET Packet;
|
||
} RX_BIND_REDIR, *PRX_BIND_REDIR;
|
||
|
||
typedef struct _RX_BIND_DGREC {
|
||
HANDLE EventHandle;
|
||
BOOL Bound;
|
||
IO_STATUS_BLOCK IoStatusBlock;
|
||
LMDR_REQUEST_PACKET Packet;
|
||
} RX_BIND_DGREC, *PRX_BIND_DGREC;
|
||
|
||
typedef struct _RX_BIND {
|
||
LIST_ENTRY ListEntry;
|
||
PRX_BIND_REDIR Redir;
|
||
PRX_BIND_DGREC Dgrec;
|
||
ULONG TransportNameLength; // not including terminator
|
||
WCHAR TransportName[1]; // Name of transport provider
|
||
} RX_BIND, *PRX_BIND;
|
||
|
||
typedef enum _DDTYPE {
|
||
Redirector,
|
||
DatagramReceiver
|
||
} DDTYPE, *PDDTYPE;
|
||
|
||
//
|
||
// Binding/Unbinding related functions
|
||
//
|
||
extern NTSTATUS
|
||
RxBindTransport(
|
||
IN LPTSTR TransportName,
|
||
IN DWORD QualityOfService,
|
||
OUT LPDWORD ErrorParameter OPTIONAL
|
||
);
|
||
|
||
|
||
extern NTSTATUS
|
||
RxBindToTransports(
|
||
VOID
|
||
);
|
||
|
||
extern NTSTATUS
|
||
RxUnbindTransport(
|
||
IN LPTSTR TransportName,
|
||
IN DWORD ForceLevel
|
||
);
|
||
|
||
|
||
extern NTSTATUS
|
||
RxAsyncBindTransport(
|
||
IN LPTSTR transportName,
|
||
IN DWORD qualityOfService,
|
||
IN PLIST_ENTRY pHeader
|
||
);
|
||
|
||
extern VOID
|
||
RxUnbindTransport2(
|
||
IN PRX_BIND pBind
|
||
);
|
||
|
||
//
|
||
// Loading and unloading drivers
|
||
//
|
||
NTSTATUS
|
||
RxUnloadDriver(
|
||
IN LPTSTR DriverNameString
|
||
);
|
||
|
||
NTSTATUS
|
||
RxLoadDriver(
|
||
IN LPWSTR DriverNameString
|
||
);
|
||
|
||
//
|
||
// FSCTL issued to the drivers.
|
||
//
|
||
|
||
extern NTSTATUS
|
||
RxDeviceControlGetInfo(
|
||
IN DDTYPE DeviceDriverType,
|
||
IN HANDLE FileHandle,
|
||
IN ULONG DeviceControlCode,
|
||
IN PVOID RequestPacket,
|
||
IN ULONG RequestPacketLength,
|
||
OUT PVOID *OutputBuffer,
|
||
IN ULONG PreferedMaximumLength,
|
||
IN ULONG BufferHintSize,
|
||
OUT PULONG Information
|
||
);
|
||
|
||
extern NTSTATUS
|
||
RxRedirFsControl (
|
||
IN HANDLE FileHandle,
|
||
IN ULONG RedirControlCode,
|
||
IN PLMR_REQUEST_PACKET Rrp,
|
||
IN ULONG RrpLength,
|
||
IN PVOID SecondBuffer OPTIONAL,
|
||
IN ULONG SecondBufferLength,
|
||
OUT PULONG Information OPTIONAL
|
||
);
|
||
|
||
extern NTSTATUS
|
||
RxDgReceiverIoControl(
|
||
IN HANDLE FileHandle,
|
||
IN ULONG DgReceiverControlCode,
|
||
IN PLMDR_REQUEST_PACKET Drp,
|
||
IN ULONG DrpLength,
|
||
IN PVOID SecondBuffer OPTIONAL,
|
||
IN ULONG SecondBufferLength,
|
||
OUT PULONG Information OPTIONAL
|
||
);
|
||
|
||
|
||
//
|
||
// Start/Stop control for redirectors.
|
||
//
|
||
|
||
extern NTSTATUS
|
||
RxOpenRedirector(
|
||
VOID
|
||
);
|
||
|
||
extern NTSTATUS
|
||
RxOpenDgReceiver (
|
||
VOID
|
||
);
|
||
|
||
extern NTSTATUS
|
||
RxStartRedirector(VOID);
|
||
|
||
extern NTSTATUS
|
||
RxStopRedirector(
|
||
VOID
|
||
);
|
||
|
||
|
||
//
|
||
// Miscellanous functions fro the DRT.
|
||
//
|
||
extern NTSTATUS
|
||
RxDeleteDomainName(
|
||
IN PLMDR_REQUEST_PACKET Drp,
|
||
IN DWORD DrpLength,
|
||
IN LPTSTR DomainName,
|
||
IN DWORD DomainNameSize
|
||
);
|
||
|
||
NTSTATUS
|
||
RxAddDomainName(
|
||
IN PLMDR_REQUEST_PACKET Drp,
|
||
IN DWORD DrpLength,
|
||
IN LPTSTR DomainName,
|
||
IN DWORD DomainNameSize
|
||
);
|
||
|
||
extern DWORD
|
||
RxGetPrivilege(
|
||
IN DWORD numPrivileges,
|
||
IN PULONG pulPrivileges
|
||
);
|
||
|
||
|
||
extern DWORD
|
||
RxReleasePrivilege(
|
||
VOID
|
||
);
|
||
|
||
// //
|
||
// Handles to the Redirector FSD, Datgram receiver FSd
|
||
//
|
||
|
||
extern HANDLE RxRedirDeviceHandle;
|
||
extern HANDLE RxDgReceiverDeviceHandle;
|
||
extern HANDLE RxRedirAsyncDeviceHandle; // redirector
|
||
extern HANDLE RxDgrecAsyncDeviceHandle; // datagram receiver or "bowser"
|
||
|
||
|
||
#endif // ifndef _RXDEVICE_INCLUDED_
|
||
|