mirror of
https://github.com/reactos/reactos.git
synced 2025-03-10 10:14:44 +00:00
107 lines
1.9 KiB
C++
107 lines
1.9 KiB
C++
/*++
|
|
|
|
Copyright (c) Microsoft Corporation. All rights reserved.
|
|
|
|
Module Name:
|
|
|
|
FxIoTargetSelf.hpp
|
|
|
|
Abstract:
|
|
|
|
Encapsulation of the Self target to which FxRequest are sent to.
|
|
FxSelfTarget represents the client itself and is used to send IO to
|
|
itself.
|
|
|
|
Unlike the the local and remote targets, the IO sent to an Self IO
|
|
target is routed to the sender's own top level queues. A dedicated queue
|
|
may also be configured as the target for requests dispatched to the Self
|
|
Io targets.
|
|
|
|
Author:
|
|
|
|
|
|
|
|
Environment:
|
|
|
|
Both kernel and user mode
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
#ifndef _FXIOTARGETSELF_H_
|
|
#define _FXIOTARGETSELF_H_
|
|
|
|
class FxIoTargetSelf : public FxIoTarget {
|
|
|
|
public:
|
|
|
|
FxIoTargetSelf(
|
|
_In_ PFX_DRIVER_GLOBALS FxDriverGlobals,
|
|
_In_ USHORT ObjectSize
|
|
);
|
|
|
|
virtual
|
|
_Must_inspect_result_
|
|
MdDeviceObject
|
|
GetTargetDeviceObject(
|
|
_In_ CfxDeviceBase* Device
|
|
)
|
|
/*++
|
|
Routine Description:
|
|
Returns the target device object of the Device. In case of an Self
|
|
Io Target it is the device itself.
|
|
|
|
Arguments:
|
|
|
|
Device - Handle to the Device Object
|
|
|
|
Returns:
|
|
|
|
MdDeviceObject for the Device.
|
|
|
|
--*/
|
|
{
|
|
return Device->GetDeviceObject();
|
|
}
|
|
|
|
FxIoQueue*
|
|
GetDispatchQueue(
|
|
_In_ UCHAR MajorFunction
|
|
);
|
|
|
|
VOID
|
|
SetDispatchQueue(
|
|
_In_ FxIoQueue* DispatchQueue
|
|
)
|
|
/*++
|
|
Routine Description:
|
|
Sets a disapatch queue for the IO send to the Self IO Target.
|
|
--*/
|
|
{
|
|
ASSERT(m_DispatchQueue == NULL);
|
|
m_DispatchQueue = DispatchQueue;
|
|
}
|
|
|
|
virtual
|
|
VOID
|
|
Send(
|
|
_In_ MdIrp Irp
|
|
);
|
|
|
|
protected:
|
|
//
|
|
// Hide destructor since we are reference counted object
|
|
//
|
|
~FxIoTargetSelf();
|
|
|
|
private:
|
|
|
|
//
|
|
// A Queue configured to dispatch IO sent to the Self IO Target.
|
|
//
|
|
FxIoQueue* m_DispatchQueue;
|
|
|
|
};
|
|
|
|
#endif //_FXIOTARGETSELF_H_
|