[USBOHCI]

- Fix regressions introduced by libusb

svn path=/trunk/; revision=55913
This commit is contained in:
Johannes Anderwald 2012-02-29 09:15:42 +00:00
parent bf426aafef
commit c131df4a4c
10 changed files with 87 additions and 38 deletions

View file

@ -32,7 +32,7 @@ VOID
NTAPI NTAPI
StatusChangeWorkItemRoutine(PVOID Context); StatusChangeWorkItemRoutine(PVOID Context);
class CUSBHardwareDevice : public IUSBHardwareDevice class CUSBHardwareDevice : public IOHCIHardwareDevice
{ {
public: public:
STDMETHODIMP QueryInterface( REFIID InterfaceId, PVOID* Interface); STDMETHODIMP QueryInterface( REFIID InterfaceId, PVOID* Interface);
@ -125,6 +125,7 @@ CUSBHardwareDevice::QueryInterface(
} }
NTSTATUS NTSTATUS
STDMETHODCALLTYPE
CUSBHardwareDevice::Initialize( CUSBHardwareDevice::Initialize(
PDRIVER_OBJECT DriverObject, PDRIVER_OBJECT DriverObject,
PDEVICE_OBJECT FunctionalDeviceObject, PDEVICE_OBJECT FunctionalDeviceObject,
@ -135,6 +136,7 @@ CUSBHardwareDevice::Initialize(
PCI_COMMON_CONFIG PciConfig; PCI_COMMON_CONFIG PciConfig;
NTSTATUS Status; NTSTATUS Status;
ULONG BytesRead; ULONG BytesRead;
PUSBQUEUE Queue;
DPRINT("CUSBHardwareDevice::Initialize\n"); DPRINT("CUSBHardwareDevice::Initialize\n");
@ -151,13 +153,19 @@ CUSBHardwareDevice::Initialize(
// //
// Create the UsbQueue class that will handle the Asynchronous and Periodic Schedules // Create the UsbQueue class that will handle the Asynchronous and Periodic Schedules
// //
Status = CreateUSBQueue((PUSBQUEUE*)&m_UsbQueue); Status = CreateUSBQueue(&Queue);
if (!NT_SUCCESS(Status)) if (!NT_SUCCESS(Status))
{ {
DPRINT1("Failed to create UsbQueue!\n"); DPRINT1("Failed to create UsbQueue!\n");
return Status; return Status;
} }
// get ohci queue
m_UsbQueue = POHCIQUEUE(Queue);
// sanity check
ASSERT(m_UsbQueue);
// //
// store device objects // store device objects
// //
@ -205,6 +213,7 @@ CUSBHardwareDevice::Initialize(
} }
NTSTATUS NTSTATUS
STDMETHODCALLTYPE
CUSBHardwareDevice::PnpStart( CUSBHardwareDevice::PnpStart(
PCM_RESOURCE_LIST RawResources, PCM_RESOURCE_LIST RawResources,
PCM_RESOURCE_LIST TranslatedResources) PCM_RESOURCE_LIST TranslatedResources)
@ -351,7 +360,7 @@ CUSBHardwareDevice::PnpStart(
// //
// Initialize the UsbQueue now that we have an AdapterObject. // Initialize the UsbQueue now that we have an AdapterObject.
// //
Status = m_UsbQueue->Initialize(PUSBHARDWAREDEVICE(this), m_Adapter, m_MemoryManager, NULL); Status = m_UsbQueue->Initialize(this, m_Adapter, m_MemoryManager, NULL);
if (!NT_SUCCESS(Status)) if (!NT_SUCCESS(Status))
{ {
DPRINT1("Failed to Initialize the UsbQueue\n"); DPRINT1("Failed to Initialize the UsbQueue\n");
@ -383,6 +392,7 @@ CUSBHardwareDevice::PnpStart(
} }
NTSTATUS NTSTATUS
STDMETHODCALLTYPE
CUSBHardwareDevice::PnpStop(void) CUSBHardwareDevice::PnpStop(void)
{ {
UNIMPLEMENTED UNIMPLEMENTED
@ -390,6 +400,7 @@ CUSBHardwareDevice::PnpStop(void)
} }
NTSTATUS NTSTATUS
STDMETHODCALLTYPE
CUSBHardwareDevice::GetDeviceDetails( CUSBHardwareDevice::GetDeviceDetails(
OUT OPTIONAL PUSHORT VendorId, OUT OPTIONAL PUSHORT VendorId,
OUT OPTIONAL PUSHORT DeviceId, OUT OPTIONAL PUSHORT DeviceId,
@ -431,7 +442,9 @@ CUSBHardwareDevice::GetDeviceDetails(
return STATUS_SUCCESS; return STATUS_SUCCESS;
} }
NTSTATUS CUSBHardwareDevice::GetDMA( NTSTATUS
STDMETHODCALLTYPE
CUSBHardwareDevice::GetDMA(
OUT struct IDMAMemoryManager **OutDMAMemoryManager) OUT struct IDMAMemoryManager **OutDMAMemoryManager)
{ {
if (!m_MemoryManager) if (!m_MemoryManager)
@ -441,6 +454,7 @@ NTSTATUS CUSBHardwareDevice::GetDMA(
} }
NTSTATUS NTSTATUS
STDMETHODCALLTYPE
CUSBHardwareDevice::GetUSBQueue( CUSBHardwareDevice::GetUSBQueue(
OUT struct IUSBQueue **OutUsbQueue) OUT struct IUSBQueue **OutUsbQueue)
{ {
@ -636,6 +650,7 @@ CUSBHardwareDevice::AllocateEndpointDescriptor(
} }
VOID VOID
STDMETHODCALLTYPE
CUSBHardwareDevice::GetBulkHeadEndpointDescriptor( CUSBHardwareDevice::GetBulkHeadEndpointDescriptor(
struct _OHCI_ENDPOINT_DESCRIPTOR ** OutDescriptor) struct _OHCI_ENDPOINT_DESCRIPTOR ** OutDescriptor)
{ {
@ -643,6 +658,7 @@ CUSBHardwareDevice::GetBulkHeadEndpointDescriptor(
} }
VOID VOID
STDMETHODCALLTYPE
CUSBHardwareDevice::GetInterruptEndpointDescriptors( CUSBHardwareDevice::GetInterruptEndpointDescriptors(
struct _OHCI_ENDPOINT_DESCRIPTOR *** OutDescriptor) struct _OHCI_ENDPOINT_DESCRIPTOR *** OutDescriptor)
{ {
@ -650,6 +666,7 @@ CUSBHardwareDevice::GetInterruptEndpointDescriptors(
} }
VOID VOID
STDMETHODCALLTYPE
CUSBHardwareDevice::GetIsochronousHeadEndpointDescriptor( CUSBHardwareDevice::GetIsochronousHeadEndpointDescriptor(
struct _OHCI_ENDPOINT_DESCRIPTOR ** OutDescriptor) struct _OHCI_ENDPOINT_DESCRIPTOR ** OutDescriptor)
{ {
@ -657,6 +674,7 @@ CUSBHardwareDevice::GetIsochronousHeadEndpointDescriptor(
} }
VOID VOID
STDMETHODCALLTYPE
CUSBHardwareDevice::HeadEndpointDescriptorModified( CUSBHardwareDevice::HeadEndpointDescriptorModified(
ULONG Type) ULONG Type)
{ {
@ -677,6 +695,7 @@ CUSBHardwareDevice::HeadEndpointDescriptorModified(
} }
VOID VOID
STDMETHODCALLTYPE
CUSBHardwareDevice::GetControlHeadEndpointDescriptor( CUSBHardwareDevice::GetControlHeadEndpointDescriptor(
struct _OHCI_ENDPOINT_DESCRIPTOR ** OutDescriptor) struct _OHCI_ENDPOINT_DESCRIPTOR ** OutDescriptor)
{ {
@ -1009,6 +1028,7 @@ CUSBHardwareDevice::StopController(void)
} }
NTSTATUS NTSTATUS
STDMETHODCALLTYPE
CUSBHardwareDevice::ResetPort( CUSBHardwareDevice::ResetPort(
IN ULONG PortIndex) IN ULONG PortIndex)
{ {
@ -1018,6 +1038,7 @@ CUSBHardwareDevice::ResetPort(
} }
NTSTATUS NTSTATUS
STDMETHODCALLTYPE
CUSBHardwareDevice::GetPortStatus( CUSBHardwareDevice::GetPortStatus(
ULONG PortId, ULONG PortId,
OUT USHORT *PortStatus, OUT USHORT *PortStatus,
@ -1080,6 +1101,7 @@ CUSBHardwareDevice::GetPortStatus(
} }
NTSTATUS NTSTATUS
STDMETHODCALLTYPE
CUSBHardwareDevice::ClearPortStatus( CUSBHardwareDevice::ClearPortStatus(
ULONG PortId, ULONG PortId,
ULONG Status) ULONG Status)
@ -1154,6 +1176,7 @@ CUSBHardwareDevice::ClearPortStatus(
NTSTATUS NTSTATUS
STDMETHODCALLTYPE
CUSBHardwareDevice::SetPortFeature( CUSBHardwareDevice::SetPortFeature(
ULONG PortId, ULONG PortId,
ULONG Feature) ULONG Feature)
@ -1244,6 +1267,7 @@ CUSBHardwareDevice::SetPortFeature(
VOID VOID
STDMETHODCALLTYPE
CUSBHardwareDevice::SetStatusChangeEndpointCallBack( CUSBHardwareDevice::SetStatusChangeEndpointCallBack(
PVOID CallBack, PVOID CallBack,
PVOID Context) PVOID Context)
@ -1253,6 +1277,7 @@ CUSBHardwareDevice::SetStatusChangeEndpointCallBack(
} }
VOID VOID
STDMETHODCALLTYPE
CUSBHardwareDevice::GetCurrentFrameNumber( CUSBHardwareDevice::GetCurrentFrameNumber(
PULONG FrameNumber) PULONG FrameNumber)
{ {
@ -1548,6 +1573,7 @@ StatusChangeWorkItemRoutine(
} }
NTSTATUS NTSTATUS
NTAPI
CreateUSBHardware( CreateUSBHardware(
PUSBHARDWAREDEVICE *OutHardware) PUSBHARDWAREDEVICE *OutHardware)
{ {

View file

@ -11,7 +11,7 @@
#include "usbohci.h" #include "usbohci.h"
#include "hardware.h" #include "hardware.h"
class CUSBQueue : public IUSBQueue class CUSBQueue : public IOHCIQueue
{ {
public: public:
STDMETHODIMP QueryInterface( REFIID InterfaceId, PVOID* Interface); STDMETHODIMP QueryInterface( REFIID InterfaceId, PVOID* Interface);
@ -86,17 +86,25 @@ CUSBQueue::QueryInterface(
} }
NTSTATUS NTSTATUS
STDMETHODCALLTYPE
CUSBQueue::Initialize( CUSBQueue::Initialize(
IN PUSBHARDWAREDEVICE Hardware, IN PUSBHARDWAREDEVICE Hardware,
IN PDMA_ADAPTER AdapterObject, IN PDMA_ADAPTER AdapterObject,
IN PDMAMEMORYMANAGER MemManager, IN PDMAMEMORYMANAGER MemManager,
IN OPTIONAL PKSPIN_LOCK Lock) IN OPTIONAL PKSPIN_LOCK Lock)
{ {
if (!Hardware)
{
// WTF
DPRINT1("[USBOHCI] Failed to initialize queue\n");
return STATUS_UNSUCCESSFUL;
}
// //
// store hardware // store hardware
// //
m_Hardware = POHCIHARDWAREDEVICE(Hardware); m_Hardware = POHCIHARDWAREDEVICE(Hardware);
ASSERT(m_Hardware);
// //
// get bulk endpoint descriptor // get bulk endpoint descriptor
@ -288,6 +296,7 @@ CUSBQueue::AddEndpointDescriptor(
NTSTATUS NTSTATUS
STDMETHODCALLTYPE
CUSBQueue::AddUSBRequest( CUSBQueue::AddUSBRequest(
IUSBRequest * Req) IUSBRequest * Req)
{ {
@ -337,6 +346,7 @@ CUSBQueue::AddUSBRequest(
} }
NTSTATUS NTSTATUS
STDMETHODCALLTYPE
CUSBQueue::CreateUSBRequest( CUSBQueue::CreateUSBRequest(
IUSBRequest **OutRequest) IUSBRequest **OutRequest)
{ {
@ -696,6 +706,7 @@ CUSBQueue::PrintEndpointList(
} }
VOID VOID
STDMETHODCALLTYPE
CUSBQueue::TransferDescriptorCompletionCallback( CUSBQueue::TransferDescriptorCompletionCallback(
ULONG TransferDescriptorLogicalAddress) ULONG TransferDescriptorLogicalAddress)
{ {
@ -860,6 +871,7 @@ CUSBQueue::FindInterruptEndpointDescriptor(
} }
NTSTATUS NTSTATUS
STDMETHODCALLTYPE
CUSBQueue::AbortDevicePipe( CUSBQueue::AbortDevicePipe(
IN UCHAR DeviceAddress, IN UCHAR DeviceAddress,
IN PUSB_ENDPOINT_DESCRIPTOR EndpointDescriptor) IN PUSB_ENDPOINT_DESCRIPTOR EndpointDescriptor)
@ -973,6 +985,7 @@ CUSBQueue::AbortDevicePipe(
NTSTATUS NTSTATUS
NTAPI
CreateUSBQueue( CreateUSBQueue(
PUSBQUEUE *OutUsbQueue) PUSBQUEUE *OutUsbQueue)
{ {

View file

@ -13,7 +13,7 @@
#include "usbohci.h" #include "usbohci.h"
#include "hardware.h" #include "hardware.h"
class CUSBRequest : public IUSBRequest class CUSBRequest : public IOHCIRequest
{ {
public: public:
STDMETHODIMP QueryInterface( REFIID InterfaceId, PVOID* Interface); STDMETHODIMP QueryInterface( REFIID InterfaceId, PVOID* Interface);
@ -157,6 +157,7 @@ CUSBRequest::QueryInterface(
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
NTSTATUS NTSTATUS
STDMETHODCALLTYPE
CUSBRequest::InitializeWithSetupPacket( CUSBRequest::InitializeWithSetupPacket(
IN PDMAMEMORYMANAGER DmaManager, IN PDMAMEMORYMANAGER DmaManager,
IN PUSB_DEFAULT_PIPE_SETUP_PACKET SetupPacket, IN PUSB_DEFAULT_PIPE_SETUP_PACKET SetupPacket,
@ -212,6 +213,7 @@ CUSBRequest::InitializeWithSetupPacket(
} }
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
NTSTATUS NTSTATUS
STDMETHODCALLTYPE
CUSBRequest::InitializeWithIrp( CUSBRequest::InitializeWithIrp(
IN PDMAMEMORYMANAGER DmaManager, IN PDMAMEMORYMANAGER DmaManager,
IN struct IUSBDevice* Device, IN struct IUSBDevice* Device,
@ -422,6 +424,7 @@ CUSBRequest::InitializeWithIrp(
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
BOOLEAN BOOLEAN
STDMETHODCALLTYPE
CUSBRequest::IsRequestComplete() CUSBRequest::IsRequestComplete()
{ {
// //
@ -443,6 +446,7 @@ CUSBRequest::IsRequestComplete()
} }
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
ULONG ULONG
STDMETHODCALLTYPE
CUSBRequest::GetTransferType() CUSBRequest::GetTransferType()
{ {
// //
@ -483,6 +487,7 @@ CUSBRequest::GetMaxPacketSize()
} }
UCHAR UCHAR
STDMETHODCALLTYPE
CUSBRequest::GetInterval() CUSBRequest::GetInterval()
{ {
ASSERT(m_EndpointDescriptor); ASSERT(m_EndpointDescriptor);
@ -568,6 +573,7 @@ CUSBRequest::InternalGetPidDirection()
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
UCHAR UCHAR
STDMETHODCALLTYPE
CUSBRequest::GetDeviceAddress() CUSBRequest::GetDeviceAddress()
{ {
PIO_STACK_LOCATION IoStack; PIO_STACK_LOCATION IoStack;
@ -1560,12 +1566,14 @@ CUSBRequest::BuildControlTransferDescriptor(
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
NTSTATUS NTSTATUS
STDMETHODCALLTYPE
CUSBRequest::GetEndpointDescriptor( CUSBRequest::GetEndpointDescriptor(
struct _OHCI_ENDPOINT_DESCRIPTOR ** OutDescriptor) struct _OHCI_ENDPOINT_DESCRIPTOR ** OutDescriptor)
{ {
ULONG TransferType; ULONG TransferType;
NTSTATUS Status; NTSTATUS Status;
// //
// get transfer type // get transfer type
// //
@ -1592,6 +1600,8 @@ CUSBRequest::GetEndpointDescriptor(
break; break;
} }
if (NT_SUCCESS(Status)) if (NT_SUCCESS(Status))
{ {
// //
@ -1613,6 +1623,7 @@ CUSBRequest::GetEndpointDescriptor(
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
VOID VOID
STDMETHODCALLTYPE
CUSBRequest::GetResultStatus( CUSBRequest::GetResultStatus(
OUT OPTIONAL NTSTATUS * NtStatusCode, OUT OPTIONAL NTSTATUS * NtStatusCode,
OUT OPTIONAL PULONG UrbStatusCode) OUT OPTIONAL PULONG UrbStatusCode)
@ -1646,6 +1657,7 @@ CUSBRequest::GetResultStatus(
} }
VOID VOID
STDMETHODCALLTYPE
CUSBRequest::FreeEndpointDescriptor( CUSBRequest::FreeEndpointDescriptor(
struct _OHCI_ENDPOINT_DESCRIPTOR * OutDescriptor) struct _OHCI_ENDPOINT_DESCRIPTOR * OutDescriptor)
{ {
@ -1878,12 +1890,10 @@ CUSBRequest::CheckError(
TransferDescriptor = (POHCI_GENERAL_TD)TransferDescriptor->NextLogicalDescriptor; TransferDescriptor = (POHCI_GENERAL_TD)TransferDescriptor->NextLogicalDescriptor;
} }
} }
} }
VOID VOID
STDMETHODCALLTYPE
CUSBRequest::CompletionCallback() CUSBRequest::CompletionCallback()
{ {
PIO_STACK_LOCATION IoStack; PIO_STACK_LOCATION IoStack;
@ -1943,20 +1953,9 @@ CUSBRequest::CompletionCallback()
} }
} }
#if 0
//-----------------------------------------------------------------------------------------
BOOLEAN
CUSBRequest::IsQueueHeadComplete(
struct _QUEUE_HEAD * QueueHead)
{
UNIMPLEMENTED
return TRUE;
}
#endif
//----------------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------------
NTSTATUS NTSTATUS
NTAPI
InternalCreateUSBRequest( InternalCreateUSBRequest(
PUSBREQUEST *OutRequest) PUSBREQUEST *OutRequest)
{ {

View file

@ -59,20 +59,23 @@ extern
(VOID)((!(exp)) ? \ (VOID)((!(exp)) ? \
RtlAssert((PVOID) #exp, (PVOID)__FILE__, __LINE__, NULL ), FALSE : TRUE) RtlAssert((PVOID) #exp, (PVOID)__FILE__, __LINE__, NULL ), FALSE : TRUE)
extern "C"
{
// //
// hardware.cpp // hardware.cpp
// //
NTSTATUS CreateUSBHardware(PUSBHARDWAREDEVICE *OutHardware); NTSTATUS NTAPI CreateUSBHardware(PUSBHARDWAREDEVICE *OutHardware);
// //
// usb_queue.cpp // usb_queue.cpp
// //
NTSTATUS CreateUSBQueue(PUSBQUEUE *OutUsbQueue); NTSTATUS NTAPI CreateUSBQueue(PUSBQUEUE *OutUsbQueue);
// //
// usb_request.cpp // usb_request.cpp
// //
NTSTATUS InternalCreateUSBRequest(PUSBREQUEST *OutRequest); NTSTATUS NTAPI InternalCreateUSBRequest(PUSBREQUEST *OutRequest);
}
#endif #endif

View file

@ -747,6 +747,7 @@ CHCDController::SetSymbolicLink(
} }
NTSTATUS NTSTATUS
NTAPI
CreateHCDController( CreateHCDController(
PHCDCONTROLLER *OutHcdController) PHCDCONTROLLER *OutHcdController)
{ {

View file

@ -3718,6 +3718,7 @@ CHubController::CreatePDO(
NTSTATUS NTSTATUS
NTAPI
CreateHubController( CreateHubController(
PHUBCONTROLLER *OutHcdController) PHUBCONTROLLER *OutHcdController)
{ {

View file

@ -16,6 +16,9 @@
// //
DRIVER_ADD_DEVICE USBLIB_AddDevice; DRIVER_ADD_DEVICE USBLIB_AddDevice;
extern
"C"
{
NTSTATUS NTSTATUS
NTAPI NTAPI
USBLIB_AddDevice( USBLIB_AddDevice(
@ -54,7 +57,11 @@ USBLIB_AddDevice(
return Status; return Status;
} }
}
extern
"C"
{
NTSTATUS NTSTATUS
NTAPI NTAPI
USBLIB_Dispatch( USBLIB_Dispatch(
@ -121,3 +128,4 @@ USBLIB_Dispatch(
return Status; return Status;
} }
}

View file

@ -66,35 +66,31 @@ typedef struct
RtlAssert((PVOID) #exp, (PVOID)__FILE__, __LINE__, NULL ), FALSE : TRUE) RtlAssert((PVOID) #exp, (PVOID)__FILE__, __LINE__, NULL ), FALSE : TRUE)
// hcd_controller.cpp // hcd_controller.cpp
NTSTATUS CreateHCDController(PHCDCONTROLLER *HcdController); extern "C"
{
NTSTATUS NTAPI CreateHCDController(PHCDCONTROLLER *HcdController);
// hardware.cpp // hardware.cpp
NTSTATUS CreateUSBHardware(PUSBHARDWAREDEVICE *OutHardware); NTSTATUS NTAPI CreateUSBHardware(PUSBHARDWAREDEVICE *OutHardware);
// misc.cpp // misc.cpp
NTSTATUS NTAPI SyncForwardIrp(PDEVICE_OBJECT DeviceObject, PIRP Irp); NTSTATUS NTAPI SyncForwardIrp(PDEVICE_OBJECT DeviceObject, PIRP Irp);
NTSTATUS NTAPI GetBusInterface(PDEVICE_OBJECT DeviceObject, PBUS_INTERFACE_STANDARD busInterface); NTSTATUS NTAPI GetBusInterface(PDEVICE_OBJECT DeviceObject, PBUS_INTERFACE_STANDARD busInterface);
// root_hub_controller.cpp // root_hub_controller.cpp
NTSTATUS CreateHubController(PHUBCONTROLLER * OutHubController); NTSTATUS NTAPI CreateHubController(PHUBCONTROLLER * OutHubController);
// memory_manager.cpp // memory_manager.cpp
NTSTATUS CreateDMAMemoryManager(PDMAMEMORYMANAGER *OutMemoryManager); NTSTATUS NTAPI CreateDMAMemoryManager(PDMAMEMORYMANAGER *OutMemoryManager);
// usb_device.cpp // usb_device.cpp
NTSTATUS CreateUSBDevice(PUSBDEVICE *OutDevice); NTSTATUS NTAPI CreateUSBDevice(PUSBDEVICE *OutDevice);
// usb_queue.cpp
NTSTATUS CreateUSBQueue(PUSBQUEUE *OutUsbQueue);
// usb_request.cpp
NTSTATUS InternalCreateUSBRequest(PUSBREQUEST *OutRequest);
// libusb.cpp // libusb.cpp
NTSTATUS NTAPI USBLIB_AddDevice(PDRIVER_OBJECT DriverObject, PDEVICE_OBJECT PhysicalDeviceObject); NTSTATUS NTAPI USBLIB_AddDevice(PDRIVER_OBJECT DriverObject, PDEVICE_OBJECT PhysicalDeviceObject);
NTSTATUS NTAPI USBLIB_Dispatch(PDEVICE_OBJECT DeviceObject, PIRP Irp); NTSTATUS NTAPI USBLIB_Dispatch(PDEVICE_OBJECT DeviceObject, PIRP Irp);
}
#endif #endif

View file

@ -335,6 +335,7 @@ CDMAMemoryManager::Release(
} }
NTSTATUS NTSTATUS
NTAPI
CreateDMAMemoryManager( CreateDMAMemoryManager(
PDMAMEMORYMANAGER *OutMemoryManager) PDMAMEMORYMANAGER *OutMemoryManager)
{ {

View file

@ -1183,6 +1183,7 @@ CUSBDevice::AbortPipe(
//---------------------------------------------------------------------------------------- //----------------------------------------------------------------------------------------
NTSTATUS NTSTATUS
NTAPI
CreateUSBDevice( CreateUSBDevice(
PUSBDEVICE *OutDevice) PUSBDEVICE *OutDevice)
{ {