mirror of
https://github.com/reactos/reactos.git
synced 2024-07-07 13:15:07 +00:00
[USBEHCI_NEW]
- Implement stubs for classes CHCDController and CUSBHardwareDevice - Implement CreateHCDController, CreateUSBHardware - Implement CUSBHardwareDevice::QueryInterface, CUSBHardwareDevice::AddRef, CUSBHardwareDevice::Release - Implement CHCDController::AddRef, CHCDController::Release, CHCDController::QueryInterface svn path=/branches/usb-bringup/; revision=51337
This commit is contained in:
parent
009b2e00df
commit
2e9250bbec
|
@ -10,9 +10,193 @@
|
|||
|
||||
#include "usbehci.h"
|
||||
|
||||
class CUSBHardwareDevice : public IUSBHardwareDevice
|
||||
{
|
||||
public:
|
||||
STDMETHODIMP QueryInterface( REFIID InterfaceId, PVOID* Interface);
|
||||
|
||||
STDMETHODIMP_(ULONG) AddRef()
|
||||
{
|
||||
InterlockedIncrement(&m_Ref);
|
||||
return m_Ref;
|
||||
}
|
||||
STDMETHODIMP_(ULONG) Release()
|
||||
{
|
||||
InterlockedDecrement(&m_Ref);
|
||||
|
||||
if (!m_Ref)
|
||||
{
|
||||
delete this;
|
||||
return 0;
|
||||
}
|
||||
return m_Ref;
|
||||
}
|
||||
// com
|
||||
NTSTATUS Initialize(PDRIVER_OBJECT DriverObject, PDEVICE_OBJECT FunctionalDeviceObject, PDEVICE_OBJECT PhysicalDeviceObject, PDEVICE_OBJECT LowerDeviceObject);
|
||||
NTSTATUS PnpStart(PCM_RESOURCE_LIST RawResources, PCM_RESOURCE_LIST TranslatedResources);
|
||||
NTSTATUS PnpStop(void);
|
||||
NTSTATUS HandlePower(PIRP Irp);
|
||||
NTSTATUS GetDeviceDetails(PULONG VendorId, PULONG DeviceId, PULONG NumberOfPorts, PULONG Speed);
|
||||
NTSTATUS GetDmaMemoryManager(OUT struct IDMAMemoryManager **OutMemoryManager);
|
||||
NTSTATUS GetUSBQueue(OUT struct IUSBQueue **OutUsbQueue);
|
||||
NTSTATUS ResetController();
|
||||
NTSTATUS ResetPort(ULONG PortIndex);
|
||||
KIRQL AcquireDeviceLock(void);
|
||||
VOID ReleaseDeviceLock(KIRQL OldLevel);
|
||||
|
||||
// constructor / destructor
|
||||
CUSBHardwareDevice(IUnknown *OuterUnknown){}
|
||||
virtual ~CUSBHardwareDevice(){}
|
||||
|
||||
protected:
|
||||
LONG m_Ref;
|
||||
KSPIN_LOCK m_Lock;
|
||||
|
||||
};
|
||||
|
||||
//=================================================================================================
|
||||
// COM
|
||||
//
|
||||
NTSTATUS
|
||||
STDMETHODCALLTYPE
|
||||
CUSBHardwareDevice::QueryInterface(
|
||||
IN REFIID refiid,
|
||||
OUT PVOID* Output)
|
||||
{
|
||||
UNICODE_STRING GuidString;
|
||||
|
||||
if (IsEqualGUIDAligned(refiid, IID_IUnknown))
|
||||
{
|
||||
*Output = PVOID(PUNKNOWN(this));
|
||||
PUNKNOWN(*Output)->AddRef();
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
return STATUS_UNSUCCESSFUL;
|
||||
}
|
||||
|
||||
NTSTATUS
|
||||
CUSBHardwareDevice::Initialize(
|
||||
PDRIVER_OBJECT DriverObject,
|
||||
PDEVICE_OBJECT FunctionalDeviceObject,
|
||||
PDEVICE_OBJECT PhysicalDeviceObject,
|
||||
PDEVICE_OBJECT LowerDeviceObject)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
|
||||
NTSTATUS
|
||||
CUSBHardwareDevice::PnpStart(
|
||||
PCM_RESOURCE_LIST RawResources,
|
||||
PCM_RESOURCE_LIST TranslatedResources)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NTSTATUS
|
||||
CUSBHardwareDevice::PnpStop(void)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NTSTATUS
|
||||
CUSBHardwareDevice::HandlePower(
|
||||
PIRP Irp)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NTSTATUS
|
||||
CUSBHardwareDevice::GetDeviceDetails(
|
||||
OUT OPTIONAL PULONG VendorId,
|
||||
OUT OPTIONAL PULONG DeviceId,
|
||||
OUT OPTIONAL PULONG NumberOfPorts,
|
||||
OUT OPTIONAL PULONG Speed)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
|
||||
NTSTATUS
|
||||
CUSBHardwareDevice::GetDmaMemoryManager(
|
||||
OUT struct IDMAMemoryManager **OutMemoryManager)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
|
||||
NTSTATUS
|
||||
CUSBHardwareDevice::GetUSBQueue(
|
||||
OUT struct IUSBQueue **OutUsbQueue)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
|
||||
NTSTATUS
|
||||
CUSBHardwareDevice::ResetController(void)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NTSTATUS
|
||||
CUSBHardwareDevice::ResetPort(
|
||||
IN ULONG PortIndex)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
KIRQL
|
||||
CUSBHardwareDevice::AcquireDeviceLock(void)
|
||||
{
|
||||
KIRQL OldLevel = 0;
|
||||
|
||||
UNIMPLEMENTED
|
||||
return OldLevel;
|
||||
}
|
||||
|
||||
BOOLEAN
|
||||
NTAPI
|
||||
InterruptServiceRoutine(
|
||||
IN PKINTERRUPT Interrupt,
|
||||
IN PVOID ServiceContext)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
VOID
|
||||
CUSBHardwareDevice::ReleaseDeviceLock(
|
||||
KIRQL OldLevel)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
}
|
||||
|
||||
|
||||
NTSTATUS
|
||||
CreateUSBHardware(
|
||||
PUSBHARDWAREDEVICE *OutHardware)
|
||||
{
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
PUSBHARDWAREDEVICE This;
|
||||
|
||||
This = new(NonPagedPool, 0) CUSBHardwareDevice(0);
|
||||
if (!This)
|
||||
return STATUS_INSUFFICIENT_RESOURCES;
|
||||
|
||||
This->AddRef();
|
||||
|
||||
// return result
|
||||
*OutHardware = (PUSBHARDWAREDEVICE)This;
|
||||
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
|
|
@ -10,9 +10,125 @@
|
|||
|
||||
#include "usbehci.h"
|
||||
|
||||
class CHCDController : public IHCDController
|
||||
{
|
||||
public:
|
||||
STDMETHODIMP QueryInterface( REFIID InterfaceId, PVOID* Interface);
|
||||
|
||||
STDMETHODIMP_(ULONG) AddRef()
|
||||
{
|
||||
InterlockedIncrement(&m_Ref);
|
||||
return m_Ref;
|
||||
}
|
||||
STDMETHODIMP_(ULONG) Release()
|
||||
{
|
||||
InterlockedDecrement(&m_Ref);
|
||||
|
||||
if (!m_Ref)
|
||||
{
|
||||
delete this;
|
||||
return 0;
|
||||
}
|
||||
return m_Ref;
|
||||
}
|
||||
|
||||
// interface functions
|
||||
NTSTATUS Initialize(IN PROOTHDCCONTROLLER RootHCDController, IN PDRIVER_OBJECT DriverObject, IN PDEVICE_OBJECT PhysicalDeviceObject);
|
||||
NTSTATUS HandlePnp(IN PDEVICE_OBJECT DeviceObject, IN OUT PIRP Irp);
|
||||
NTSTATUS HandlePower(IN PDEVICE_OBJECT DeviceObject, IN OUT PIRP Irp);
|
||||
NTSTATUS HandleDeviceControl(IN PDEVICE_OBJECT DeviceObject, IN OUT PIRP Irp);
|
||||
|
||||
// constructor / destructor
|
||||
CHCDController(IUnknown *OuterUnknown){}
|
||||
virtual ~CHCDController(){}
|
||||
|
||||
protected:
|
||||
LONG m_Ref;
|
||||
};
|
||||
|
||||
//=================================================================================================
|
||||
// COM
|
||||
//
|
||||
NTSTATUS
|
||||
STDMETHODCALLTYPE
|
||||
CHCDController::QueryInterface(
|
||||
IN REFIID refiid,
|
||||
OUT PVOID* Output)
|
||||
{
|
||||
UNICODE_STRING GuidString;
|
||||
|
||||
if (IsEqualGUIDAligned(refiid, IID_IUnknown))
|
||||
{
|
||||
*Output = PVOID(PUNKNOWN(this));
|
||||
PUNKNOWN(*Output)->AddRef();
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
return STATUS_UNSUCCESSFUL;
|
||||
}
|
||||
|
||||
NTSTATUS
|
||||
CHCDController::Initialize(
|
||||
IN PROOTHDCCONTROLLER RootHCDController,
|
||||
IN PDRIVER_OBJECT DriverObject,
|
||||
IN PDEVICE_OBJECT PhysicalDeviceObject)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NTSTATUS
|
||||
CHCDController::HandleDeviceControl(
|
||||
IN PDEVICE_OBJECT DeviceObject,
|
||||
IN PIRP Irp)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NTSTATUS
|
||||
CHCDController::HandlePnp(
|
||||
IN PDEVICE_OBJECT DeviceObject,
|
||||
IN PIRP Irp)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
Irp->IoStatus.Status = STATUS_NOT_IMPLEMENTED;
|
||||
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
||||
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
NTSTATUS
|
||||
CHCDController::HandlePower(
|
||||
IN PDEVICE_OBJECT DeviceObject,
|
||||
IN PIRP Irp)
|
||||
{
|
||||
UNIMPLEMENTED
|
||||
|
||||
Irp->IoStatus.Status = STATUS_NOT_IMPLEMENTED;
|
||||
IoCompleteRequest(Irp, IO_NO_INCREMENT);
|
||||
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
NTSTATUS
|
||||
CreateHCDController(
|
||||
PHCDCONTROLLER *OutHcdController)
|
||||
{
|
||||
return STATUS_NOT_IMPLEMENTED;
|
||||
PHCDCONTROLLER This;
|
||||
|
||||
This = new(NonPagedPool, 0) CHCDController(0);
|
||||
if (!This)
|
||||
return STATUS_INSUFFICIENT_RESOURCES;
|
||||
|
||||
This->AddRef();
|
||||
|
||||
// return result
|
||||
*OutHcdController = (PHCDCONTROLLER)This;
|
||||
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue