/*++ 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 // Rdr2 include file #include // 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_