mirror of
https://github.com/reactos/reactos.git
synced 2025-08-02 06:05:48 +00:00
[WDF] Add Windows Driver Framework files
Takern from Microsoft GitHub repo:
d9c6040fe9
Licensed under MIT
This commit is contained in:
parent
545df81502
commit
8a978a179f
475 changed files with 285099 additions and 0 deletions
|
@ -0,0 +1,253 @@
|
|||
/*++
|
||||
|
||||
Copyright (c) Microsoft. All rights reserved.
|
||||
|
||||
Module Name:
|
||||
|
||||
WudfDispatcher.h
|
||||
|
||||
Abstract:
|
||||
|
||||
This file contains the class definition of the WUDF dispatcher object.
|
||||
|
||||
Author:
|
||||
|
||||
|
||||
|
||||
Environment:
|
||||
|
||||
User mode only
|
||||
|
||||
Revision History:
|
||||
|
||||
|
||||
|
||||
--*/
|
||||
#pragma once
|
||||
|
||||
extern const GUID IID_FxMessageDispatch;
|
||||
extern const GUID IID_FxMessageDispatch2;
|
||||
|
||||
class FxMessageDispatch;
|
||||
|
||||
class FxMessageDispatch :
|
||||
public FxStump,
|
||||
public IFxMessageDispatch2
|
||||
{
|
||||
//
|
||||
// Manager functions.
|
||||
//
|
||||
private:
|
||||
FxMessageDispatch(
|
||||
_In_ FxDevice* Device
|
||||
) :
|
||||
m_cRefs(1),
|
||||
m_Device(Device)
|
||||
{
|
||||
}
|
||||
|
||||
public:
|
||||
~FxMessageDispatch()
|
||||
{
|
||||
// SAFE_RELEASE(m_Device);
|
||||
}
|
||||
|
||||
static
|
||||
NTSTATUS
|
||||
_CreateAndInitialize(
|
||||
_In_ PFX_DRIVER_GLOBALS DriverGlobals,
|
||||
_In_ FxDevice* Device,
|
||||
_Out_ FxMessageDispatch ** ppWudfDispatcher
|
||||
);
|
||||
|
||||
//
|
||||
// IUnknown
|
||||
//
|
||||
public:
|
||||
HRESULT
|
||||
__stdcall
|
||||
QueryInterface(
|
||||
_In_ REFIID riid,
|
||||
_Out_ LPVOID* ppvObject
|
||||
);
|
||||
|
||||
ULONG
|
||||
__stdcall
|
||||
AddRef();
|
||||
|
||||
ULONG
|
||||
__stdcall
|
||||
Release();
|
||||
|
||||
//
|
||||
// IFxMessageDispatch
|
||||
//
|
||||
public:
|
||||
virtual void __stdcall
|
||||
DispatchPnP(
|
||||
_In_ IWudfIrp * pIrp
|
||||
);
|
||||
|
||||
virtual void __stdcall
|
||||
CreateFile(
|
||||
_In_ IWudfIoIrp * pCreateIrp
|
||||
);
|
||||
|
||||
virtual void __stdcall
|
||||
DeviceControl(
|
||||
_In_ IWudfIoIrp * pIrp,
|
||||
_In_opt_ IUnknown * pFxContext
|
||||
);
|
||||
|
||||
virtual void __stdcall
|
||||
ReadFile(
|
||||
_In_ IWudfIoIrp * pIrp,
|
||||
_In_opt_ IUnknown * pFxContext
|
||||
);
|
||||
|
||||
virtual void __stdcall
|
||||
WriteFile(
|
||||
_In_ IWudfIoIrp * pIrp,
|
||||
_In_opt_ IUnknown * pFxContext
|
||||
);
|
||||
|
||||
virtual void __stdcall
|
||||
CleanupFile(
|
||||
_In_ IWudfIoIrp * pIrp,
|
||||
_In_ IUnknown * pFxContext
|
||||
);
|
||||
|
||||
virtual void __stdcall
|
||||
CloseFile(
|
||||
_In_ IWudfIoIrp * pIrp,
|
||||
_In_ IUnknown * pFxContext
|
||||
);
|
||||
|
||||
virtual
|
||||
VOID
|
||||
__stdcall
|
||||
GetPreferredTransferMode(
|
||||
_Out_ UMINT::WDF_DEVICE_IO_BUFFER_RETRIEVAL *RetrievalMode,
|
||||
_Out_ UMINT::WDF_DEVICE_IO_TYPE *RWPreference,
|
||||
_Out_ UMINT::WDF_DEVICE_IO_TYPE *IoctlPreference
|
||||
);
|
||||
|
||||
virtual void __stdcall
|
||||
FlushBuffers(
|
||||
_In_ IWudfIoIrp * pIrp,
|
||||
_In_opt_ IUnknown * pFxContext
|
||||
);
|
||||
|
||||
virtual void __stdcall
|
||||
QueryInformationFile(
|
||||
_In_ IWudfIoIrp * pIrp,
|
||||
_In_opt_ IUnknown * pFxContext
|
||||
);
|
||||
|
||||
virtual void __stdcall
|
||||
SetInformationFile(
|
||||
_In_ IWudfIoIrp * pIrp,
|
||||
_In_opt_ IUnknown * pFxContext
|
||||
);
|
||||
|
||||
virtual NTSTATUS __stdcall
|
||||
ProcessWmiPowerQueryOrSetData(
|
||||
_In_ RdWmiPowerAction Action,
|
||||
_Out_ BOOLEAN *QueryResult
|
||||
);
|
||||
|
||||
//
|
||||
// We should remove these methods from this interface.
|
||||
//
|
||||
virtual WUDF_INTERFACE_CONTEXT __stdcall
|
||||
RemoteInterfaceArrival(
|
||||
_In_ LPCGUID pDeviceInterfaceGuid,
|
||||
_In_ PCWSTR pSymbolicLink
|
||||
);
|
||||
|
||||
virtual void __stdcall
|
||||
RemoteInterfaceRemoval(
|
||||
_In_ WUDF_INTERFACE_CONTEXT RemoteInterfaceID
|
||||
);
|
||||
|
||||
virtual BOOL __stdcall
|
||||
TransportQueryID(
|
||||
_In_ DWORD Id,
|
||||
_In_ PVOID DataBuffer,
|
||||
_In_ SIZE_T cbDataBufferSize
|
||||
);
|
||||
|
||||
virtual ULONG __stdcall
|
||||
GetDirectTransferThreshold(
|
||||
VOID
|
||||
);
|
||||
|
||||
virtual void __stdcall
|
||||
PoFxDevicePowerRequired(
|
||||
VOID
|
||||
);
|
||||
|
||||
virtual void __stdcall
|
||||
PoFxDevicePowerNotRequired(
|
||||
VOID
|
||||
);
|
||||
|
||||
//
|
||||
// Additional public functions.
|
||||
//
|
||||
public:
|
||||
//
|
||||
// Returns the Dispatcher object from the given interface without
|
||||
// incrementing the refcount.
|
||||
//
|
||||
static
|
||||
FxMessageDispatch*
|
||||
_GetObjFromItf(
|
||||
_In_ IFxMessageDispatch* pIFxMessageDispatch
|
||||
);
|
||||
|
||||
//
|
||||
// Returns the specified interface from the given object without
|
||||
// incrementing the refcount.
|
||||
//
|
||||
static
|
||||
IFxMessageDispatch*
|
||||
_GetDispatcherItf(
|
||||
_In_ FxMessageDispatch* pWudfDispatcher
|
||||
);
|
||||
|
||||
//
|
||||
// Returns a weak ref to the embedded user-mode driver object.
|
||||
//
|
||||
PDRIVER_OBJECT_UM
|
||||
GetDriverObject(
|
||||
VOID
|
||||
)
|
||||
{
|
||||
return m_Device->GetDriver()->GetDriverObject();
|
||||
}
|
||||
|
||||
MdDeviceObject
|
||||
GetDeviceObject(
|
||||
VOID
|
||||
)
|
||||
{
|
||||
return m_Device->GetDeviceObject();
|
||||
}
|
||||
|
||||
//
|
||||
// Data members.
|
||||
//
|
||||
private:
|
||||
//
|
||||
// Reference count for debugging purposes. The lifetime is managed by
|
||||
// FxDevice.
|
||||
//
|
||||
LONG m_cRefs;
|
||||
|
||||
//
|
||||
// Device object associated with this dispatcher object.
|
||||
//
|
||||
FxDevice * m_Device;
|
||||
};
|
||||
|
Loading…
Add table
Add a link
Reference in a new issue