Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

1842 lines
35 KiB

/*++
Copyright (c) 1999, 2000 Microsoft Corporation
Module Name:
prototyp.h
Abstract:
put all the prototypes in one header
Environment:
Kernel & user mode
Revision History:
2-25-00 : created
--*/
#ifndef __PROTOTYP_H__
#define __PROTOTYP_H__
#define FRAME_COUNT_WAIT 5
PUSBPORT_MINIPORT_DRIVER
USBPORT_FindMiniport(
PDRIVER_OBJECT DriverObject
);
VOID
USBPORT_Unload(
PDRIVER_OBJECT DriverObject
);
NTSTATUS
USBPORT_CreateDeviceObject(
PDRIVER_OBJECT DriverObject,
PUSBPORT_MINIPORT_DRIVER MiniportDriver,
OUT PDEVICE_OBJECT *DeviceObject,
PUNICODE_STRING DeviceNameUnicodeString
);
NTSTATUS
USBPORT_PnPAddDevice(
PDRIVER_OBJECT DriverObject,
PDEVICE_OBJECT PhysicalDeviceObject
);
NTSTATUS
USBPORT_Dispatch(
PDEVICE_OBJECT DeviceObject,
PIRP Irp
);
NTSTATUS
USBPORT_PdoPnPIrp(
PDEVICE_OBJECT PdoDeviceObject,
PIRP Irp
);
NTSTATUS
USBPORT_FdoPnPIrp(
PDEVICE_OBJECT FdoDeviceObject,
PIRP Irp
);
VOID
USBPORT_CompleteIrp(
PDEVICE_OBJECT DeviceObject,
PIRP Irp,
NTSTATUS ntStatus,
ULONG_PTR Information
);
NTSTATUS
USBPORT_DeferredStartDevice(
PDEVICE_OBJECT FdoDeviceObject,
PIRP Irp
);
NTSTATUS
USBPORT_StopDevice(
PDEVICE_OBJECT FdoDeviceObject,
BOOLEAN HardwarePresent
);
NTSTATUS
USBPORT_StartDevice(
PDEVICE_OBJECT FdoDeviceObject,
PHC_RESOURCES HcResources
);
BOOLEAN
USBPORT_ValidateDeviceHandle(
PDEVICE_OBJECT FdoDeviceObject,
PUSBD_DEVICE_HANDLE DeviceHandle,
BOOLEAN ReferenceUrb
);
BOOLEAN
USBPORT_ValidatePipeHandle(
PUSBD_DEVICE_HANDLE DeviceHandle,
PUSBD_PIPE_HANDLE_I PipeHandle
);
NTSTATUS
USBPORT_SetUSBDError(
PURB Urb,
USBD_STATUS UsbdStatus
);
NTSTATUS
USBPORT_PassIrp(
PDEVICE_OBJECT DeviceObject,
PIO_COMPLETION_ROUTINE CompletionRoutine,
PVOID Context,
BOOLEAN InvokeOnSuccess,
BOOLEAN InvokeOnError,
BOOLEAN InvokeOnCancel,
PIRP Irp
);
NTSTATUS
USBPORT_SymbolicLink(
BOOLEAN CreateFlag,
PDEVICE_EXTENSION DevExt,
PDEVICE_OBJECT PhysicalDeviceObject,
LPGUID Guid
);
NTSTATUS
USBPORT_SetRegistryKeyValueForPdo(
PDEVICE_OBJECT PhysicalDeviceObject,
BOOLEAN SoftwareBranch,
ULONG Type,
PWCHAR KeyNameString,
ULONG KeyNameStringLength,
PVOID Data,
ULONG DataLength
);
NTSTATUS
USBPORT_GetRegistryKeyValueForPdo(
PDEVICE_OBJECT FdoDeviceObject,
PDEVICE_OBJECT PhysicalDeviceObject,
BOOLEAN SoftwareBranch,
PWCHAR KeyNameString,
ULONG KeyNameStringLength,
PVOID Data,
ULONG DataLength
);
VOID
USBPORT_CancelSplitTransfer(
PDEVICE_OBJECT FdoDeviceObject,
PHCD_TRANSFER_CONTEXT SplitTransfer
);
NTSTATUS
USBPORT_CreateRootHubPdo(
PDEVICE_OBJECT FdoDeviceObject,
PDEVICE_OBJECT *RootHubPdo
);
NTSTATUS
USBPORT_BusQueryBusTime(
PVOID BusContext,
PULONG CurrentFrame
);
NTSTATUS
USBPORT_BusSubmitIsoOutUrb(
PVOID BusContext,
PURB Urb
);
VOID
USBPORT_BusGetUSBDIVersion(
PVOID BusContext,
PUSBD_VERSION_INFORMATION VersionInformation,
PULONG HcdCapabilities
);
NTSTATUS
USBPORT_MakeRootHubPdoName(
PDEVICE_OBJECT FdoDeviceObject,
PUNICODE_STRING PdoNameUnicodeString,
ULONG Index
);
NTSTATUS
USBPORT_MakeHcdDeviceName(
PUNICODE_STRING DeviceNameUnicodeString,
ULONG Idx
);
PWCHAR
USBPORT_GetIdString(
PDEVICE_OBJECT FdoDeviceObject,
USHORT Vid,
USHORT Pid,
USHORT Rev
);
USBD_STATUS
USBPORT_AllocTransfer(
PDEVICE_OBJECT FdoDeviceObject,
PTRANSFER_URB Urb,
PUSBD_DEVICE_HANDLE DeviceHandle,
PIRP Irp,
PKEVENT CompleteEvent,
ULONG MillisecTimeout
);
VOID
USBPORT_QueueTransferUrb(
PTRANSFER_URB Urb
);
VOID
USBPORT_FreeUsbAddress(
PDEVICE_OBJECT FdoDeviceObject,
USHORT DeviceAddress
);
USHORT
USBPORT_AllocateUsbAddress(
PDEVICE_OBJECT FdoDeviceObject
);
NTSTATUS
USBPORT_SendCommand(
PUSBD_DEVICE_HANDLE DeviceHandle,
PDEVICE_OBJECT FdoDeviceObject,
PUSB_DEFAULT_PIPE_SETUP_PACKET SetupPacket,
PVOID Buffer,
ULONG BufferLength,
PULONG BytesReturned,
USBD_STATUS *UsbdStatus
);
USBD_STATUS
USBPORT_MiniportStatus_TO_USBDStatus(
USB_MINIPORT_STATUS mpStatus
);
#define MPSTATUS_TO_USBSTATUS(s) USBPORT_MiniportStatus_TO_USBDStatus((s))
NTSTATUS
USBPORT_MiniportStatus_TO_NtStatus(
USB_MINIPORT_STATUS mpStatus
);
#define MPSTATUS_TO_NTSTATUS(s) USBPORT_MiniportStatus_TO_NtStatus((s))
RHSTATUS
USBPORT_MiniportStatus_TO_RHStatus(
USB_MINIPORT_STATUS mpStatus
);
#define MPSTATUS_TO_RHSTATUS(s) USBPORT_MiniportStatus_TO_RHStatus((s))
USBD_STATUS
USBPORT_RHStatus_TO_USBDStatus(
USB_MINIPORT_STATUS rhStatus
);
#define RHSTATUS_TO_USBDSTATUS(s) USBPORT_RHStatus_TO_USBDStatus((s))
NTSTATUS
USBPORT_FdoDeviceControlIrp(
PDEVICE_OBJECT FdoDeviceObject,
PIRP Irp
);
NTSTATUS
USBPORT_PdoDeviceControlIrp(
PDEVICE_OBJECT PdoDeviceObject,
PIRP Irp
);
NTSTATUS
USBPORT_FdoInternalDeviceControlIrp(
PDEVICE_OBJECT FdoDeviceObject,
PIRP Irp
);
NTSTATUS
USBPORT_PdoInternalDeviceControlIrp(
PDEVICE_OBJECT PdoDeviceObject,
PIRP Irp
);
#ifdef DRM_SUPPORT
NTSTATUS
USBPORT_PdoSetContentId(
IN PIRP irp,
IN PKSP_DRMAUDIOSTREAM_CONTENTID pKsProperty,
IN PKSDRMAUDIOSTREAM_CONTENTID pvData
);
#endif
NTSTATUS
USBPORT_ProcessURB(
PDEVICE_OBJECT PdoDeviceObject,
PDEVICE_OBJECT FdoDeviceObject,
PIRP Irp,
PURB Urb
);
VOID
USBPORT_TrackPendingRequest(
PDEVICE_OBJECT FdoDeviceObject,
PIRP Irp,
BOOLEAN AddToList
);
NTSTATUS
USBPORT_GetConfigValue(
PWSTR ValueName,
ULONG ValueType,
PVOID ValueData,
ULONG ValueLength,
PVOID Context,
PVOID EntryContext
);
VOID
USBPORT_CancelTransfer(
PDEVICE_OBJECT DeviceObject,
PIRP Irp
);
VOID
USBPORT_CompleteTransfer(
PTRANSFER_URB Urb,
USBD_STATUS CompleteCode
);
BOOLEAN
USBPORT_InterruptService(
PKINTERRUPT Interrupt,
PVOID Context
);
VOID
USBPORT_HalFreeCommonBuffer(
PDEVICE_OBJECT FdoDeviceObject,
PUSBPORT_COMMON_BUFFER CommonBuffer
);
PUSBPORT_COMMON_BUFFER
USBPORT_HalAllocateCommonBuffer(
PDEVICE_OBJECT FdoDeviceObject,
ULONG NumberOfBytes
);
USB_MINIPORT_STATUS
USBPORTSVC_GetMiniportRegistryKeyValue(
PDEVICE_DATA DeviceData,
BOOLEAN SoftwareBranch,
PWCHAR KeyNameString,
ULONG KeyNameStringLength,
PVOID Data,
ULONG DataLength
);
USB_MINIPORT_STATUS
USBPORTSVC_ReadWriteConfigSpace(
PDEVICE_DATA DeviceData,
BOOLEAN Read,
PVOID Buffer,
ULONG Offset,
ULONG Length
);
NTSTATUS
USBPORT_InternalOpenInterface(
PURB Urb,
PUSBD_DEVICE_HANDLE DeviceHandle,
PDEVICE_OBJECT FdoDeviceObject,
PUSBD_CONFIG_HANDLE ConfigHandle,
PUSBD_INTERFACE_INFORMATION InterfaceInformation,
OUT PUSBD_INTERFACE_HANDLE_I *InterfaceHandle,
BOOLEAN SendSetInterfaceCommand
);
PUSBD_CONFIG_HANDLE
USBPORT_InitializeConfigurationHandle(
PUSBD_DEVICE_HANDLE DeviceHandle,
PDEVICE_OBJECT FdoDeviceObject,
PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor
);
NTSTATUS
USBPORT_SelectConfiguration(
PDEVICE_OBJECT FdoDeviceObject,
PIRP Irp,
PURB Urb
);
VOID
USBPORT_InternalCloseConfiguration(
PUSBD_DEVICE_HANDLE DeviceHandle,
PDEVICE_OBJECT FdoDeviceObject,
ULONG Flags
);
PUSB_INTERFACE_DESCRIPTOR
USBPORT_InternalParseConfigurationDescriptor(
PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor,
UCHAR InterfaceNumber,
UCHAR AlternateSetting,
PBOOLEAN HasAlternateSettings
);
NTSTATUS
USBPORT_OpenEndpoint(
PUSBD_DEVICE_HANDLE DeviceHandle,
PDEVICE_OBJECT FdoDeviceObject,
PUSBD_PIPE_HANDLE_I PipeHandle,
USBD_STATUS *UsbdStatus,
BOOLEAN IsDefaultPipe
);
VOID
USBPORT_CloseEndpoint(
PUSBD_DEVICE_HANDLE DeviceHandle,
PDEVICE_OBJECT DeviceObject,
PHCD_ENDPOINT Endpoint
);
ULONG
USBPORT_InternalGetInterfaceLength(
PUSB_INTERFACE_DESCRIPTOR InterfaceDescriptor,
PUCHAR End
);
VOID
USBPORT_RootHub_EndpointWorker(
PHCD_ENDPOINT Endpoint
);
NTSTATUS
USBPORT_RootHub_CreateDevice(
PDEVICE_OBJECT FdoDeviceObject,
PDEVICE_OBJECT PdoDeviceObject
);
VOID
USBPORT_RootHub_RemoveDevice(
PDEVICE_OBJECT FdoDeviceObject,
PDEVICE_OBJECT PdoDeviceObject
);
RHSTATUS
USBPORT_RootHub_Endpoint0(
PHCD_TRANSFER_CONTEXT Transfer
);
RHSTATUS
USBPORT_RootHub_Endpoint1(
PHCD_TRANSFER_CONTEXT Transfer
);
VOID
USBPORT_PollEndpoint(
PHCD_ENDPOINT Endpoint
);
RHSTATUS
USBPORT_RootHub_ClassCommand(
PDEVICE_OBJECT FdoDeviceObject,
PUSB_DEFAULT_PIPE_SETUP_PACKET SetupPacket,
PUCHAR Buffer,
PULONG BufferLength
);
RHSTATUS
USBPORT_RootHub_StandardCommand(
PDEVICE_OBJECT FdoDeviceObject,
PUSB_DEFAULT_PIPE_SETUP_PACKET SetupPacket,
PUCHAR Buffer,
PULONG BufferLength
);
NTSTATUS
USBPORT_QueryCapabilities(
PDEVICE_OBJECT FdoDeviceObject,
PDEVICE_CAPABILITIES DeviceCapabilities
);
VOID
USBPORT_AddDeviceHandle(
PDEVICE_OBJECT FdoDeviceObject,
PUSBD_DEVICE_HANDLE DeviceHandle
);
VOID
USBPORT_AddPipeHandle(
PUSBD_DEVICE_HANDLE DeviceHandle,
PUSBD_PIPE_HANDLE_I PipeHandle
);
VOID
USBPORT_FlushCancelList(
PHCD_ENDPOINT Endpoint
);
VOID
USBPORT_SetEndpointState(
PHCD_ENDPOINT Endpoint,
MP_ENDPOINT_STATE State
);
MP_ENDPOINT_STATE
USBPORT_GetEndpointState(
PHCD_ENDPOINT Endpoint
);
VOID
USBPORT_IsrDpc(
PKDPC Dpc,
PVOID DeferredContext,
PVOID SystemArgument1,
PVOID SystemArgument2
);
VOID
USBPORT_DoneTransfer(
PHCD_TRANSFER_CONTEXT Transfer
);
VOID
USBPORTSVC_CompleteIsoTransfer(
PDEVICE_DATA DeviceData,
PDEVICE_DATA EndpointData,
PTRANSFER_PARAMETERS TransferParameters,
PMINIPORT_ISO_TRANSFER IsoTransfer
);
VOID
USBPORTSVC_RequestAsyncCallback(
PDEVICE_DATA DeviceData,
ULONG MilliSeconds,
PVOID Context,
ULONG ContextLength,
PMINIPORT_CALLBACK CallbackFunction
);
VOID
USBPORT_QueueDoneTransfer(
PHCD_TRANSFER_CONTEXT Transfer,
USBD_STATUS CompleteCode
);
VOID
USBPORT_FlushDoneTransferList(
PDEVICE_OBJECT FdoDeviceObject
);
BOOLEAN
USBPORT_CoreEndpointWorker(
PHCD_ENDPOINT Endpoint,
ULONG Flags
);
NTSTATUS
USBPORT_GetBusInterface(
PDEVICE_OBJECT FdoDeviceObject,
PDEVICE_OBJECT PdoDeviceObject,
PIRP Irp
);
NTSTATUS
USBPORT_GetBusInterfaceHub(
PDEVICE_OBJECT FdoDeviceObject,
PDEVICE_OBJECT PdoDeviceObject,
PIRP Irp
);
VOID
USBPORT_FlushAllEndpoints(
PDEVICE_OBJECT FdoDeviceObject
);
VOID
USBPORT_UserGetDriverVersion(
PDEVICE_OBJECT FdoDeviceObject,
PUSBUSER_REQUEST_HEADER Header,
PUSB_DRIVER_VERSION_PARAMETERS Parameters
);
NTSTATUS
USBPORTBUSIF_CreateUsbDevice(
PVOID BusContext,
PUSB_DEVICE_HANDLE *NewDeviceHandle,
PUSB_DEVICE_HANDLE HubDeviceHandle,
USHORT PortStatus,
USHORT PortNumber
);
NTSTATUS
USBPORTBUSIF_RemoveUsbDevice(
PVOID BusContext,
PUSB_DEVICE_HANDLE DeviceHandle,
ULONG Flags
);
NTSTATUS
USBPORT_InitializeDevice(
PUSBD_DEVICE_HANDLE DeviceHandle,
PDEVICE_OBJECT FdoDeviceObject
);
VOID
USBPORT_BusInterfaceReference(
PVOID BusContext
);
VOID
USBPORT_BusInterfaceDereference(
PVOID BusContext
);
NTSTATUS
USBPORT_CreateDevice(
PUSBD_DEVICE_HANDLE *DeviceHandle,
PDEVICE_OBJECT FdoDeviceObject,
PUSBD_DEVICE_HANDLE HubDeviceHandle,
USHORT PortStatus,
USHORT PortNumber
);
NTSTATUS
USBPORT_DeferIrpCompletion(
PDEVICE_OBJECT DeviceObject,
PIRP Irp,
PVOID Context
);
VOID
USBPORTSVC_InvalidateRootHub(
PDEVICE_DATA DeviceData
);
RHSTATUS
USBPORT_RootHub_PortRequest(
PDEVICE_OBJECT FdoDeviceObject,
PUSB_DEFAULT_PIPE_SETUP_PACKET SetupPacket,
PORT_OPERATION PortOperation
);
VOID
USBPORT_ComputeRootHubDeviceCaps(
PDEVICE_OBJECT FdoDeviceObject,
PDEVICE_OBJECT PdoDeviceObject
);
VOID
USBPORT_FlushMapTransferList(
PDEVICE_OBJECT FdoDeviceObject
);
NTSTATUS
USBPORT_FdoPowerIrp(
PDEVICE_OBJECT FdoDeviceObject,
PIRP Irp
);
NTSTATUS
USBPORT_PdoPowerIrp(
PDEVICE_OBJECT FdoDeviceObject,
PIRP Irp
);
VOID
USBPORT_DmaEndpointWorker(
PHCD_ENDPOINT Endpoint
);
NTSTATUS
USBPORT_CreateLegacyFdoSymbolicLink(
PDEVICE_OBJECT FdoDeviceObject
);
VOID
USBPORT_DpcWorker(
PDEVICE_OBJECT FdoDeviceObject
);
VOID
USBPORT_TransferFlushDpc(
PKDPC Dpc,
PVOID DeferredContext,
PVOID SystemArgument1,
PVOID SystemArgument2
);
VOID
USBPORT_InvalidateController(
PDEVICE_OBJECT FdoDeviceObject,
USB_CONTROLLER_STATE ControllerState
);
VOID
USBPORT_FlushPendingList(
PHCD_ENDPOINT Endpoint,
ULONG Count
);
ULONG
USBPORT_CalculateUsbBandwidth(
PDEVICE_OBJECT FdoDeviceObject,
PHCD_ENDPOINT Endpoint
);
VOID
USBPORT_SurpriseRemoveDpc(
PKDPC Dpc,
PVOID DeferredContext,
PVOID SystemArgument1,
PVOID SystemArgument2
);
VOID
USBPORT_HcResetDpc(
PKDPC Dpc,
PVOID DeferredContext,
PVOID SystemArgument1,
PVOID SystemArgument2
);
VOID
USBPORTSVC_CompleteTransfer(
PDEVICE_DATA DeviceData,
PDEVICE_DATA EndpointData,
PTRANSFER_PARAMETERS TransferParameters,
USBD_STATUS UsbdStatus,
ULONG BytesTransferred
);
VOID
USBPORTSVC_InvalidateEndpoint(
PDEVICE_DATA DeviceData,
PENDPOINT_DATA EndpointData
);
NTSTATUS
USBPORTBUSIF_InitializeUsbDevice(
PVOID BusContext,
PUSB_DEVICE_HANDLE DeviceHandle
);
NTSTATUS
USBPORTBUSIF_GetUsbDescriptors(
PVOID BusContext,
PUSB_DEVICE_HANDLE DeviceHandle,
PUCHAR DeviceDescriptorBuffer,
PULONG DeviceDescriptorBufferLength,
PUCHAR ConfigDescriptorBuffer,
PULONG ConfigDescriptorBufferLength
);
VOID
USBPORT_QueuePendingUrbToEndpoint(
PHCD_ENDPOINT Endpoint,
PTRANSFER_URB Urb
);
NTSTATUS
USBPORT_GetUsbDescriptor(
PUSBD_DEVICE_HANDLE DeviceHandle,
PDEVICE_OBJECT FdoDeviceObject,
UCHAR DescriptorType,
PUCHAR DescriptorBuffer,
PULONG DescriptorBufferLength
);
VOID
USBPORT_Wait(
PDEVICE_OBJECT FdoDeviceObject,
ULONG Milliseconds
);
VOID
USBPORT_Worker(
PDEVICE_OBJECT FdoDeviceObject
);
BOOLEAN
USBPORT_FindUrbInList(
PTRANSFER_URB Urb,
PLIST_ENTRY ListHead
);
VOID
USBPORT_SignalWorker(
PDEVICE_OBJECT FdoDeviceObject
);
VOID
USBPORTSVC_LogEntry(
PDEVICE_DATA DeviceData,
ULONG Mask,
ULONG Sig,
ULONG_PTR Info1,
ULONG_PTR Info2,
ULONG_PTR Info3
);
VOID
USBPORT_QueuePendingTransferIrp(
PIRP Irp
);
VOID
USBPORT_CancelPendingTransferIrp(
PDEVICE_OBJECT FdoDeviceObject,
PIRP CancelIrp
);
VOID
USBPORT_QueuePendingUrbToEndpoint(
PHCD_ENDPOINT Endpoint,
PTRANSFER_URB Urb
);
VOID
USBPORT_CancelActiveTransferIrp(
PDEVICE_OBJECT FdoDeviceObject,
PIRP CancelIrp
);
VOID
USBPORT_InsertIrpInTable(
PDEVICE_OBJECT FdoDeviceObject,
PUSBPORT_IRP_TABLE IrpTable,
PIRP Irp
);
PIRP
USBPORT_RemoveIrpFromTable(
PDEVICE_OBJECT FdoDeviceObject,
PUSBPORT_IRP_TABLE IrpTable,
PIRP Irp
);
PIRP
USBPORT_RemovePendingTransferIrp(
PDEVICE_OBJECT FdoDeviceObject,
PIRP Irp
);
PIRP
USBPORT_RemoveActiveTransferIrp(
PDEVICE_OBJECT FdoDeviceObject,
PIRP Irp
);
VOID
USBPORT_FreeIrpTable(
PDEVICE_OBJECT FdoDeviceObject,
PUSBPORT_IRP_TABLE BaseIrpTable
);
PUCHAR
USBPORTSVC_MapHwPhysicalToVirtual(
HW_32BIT_PHYSICAL_ADDRESS HwPhysicalAddress,
PDEVICE_DATA DeviceData,
PENDPOINT_DATA EndpointData
);
PURB
USBPORT_UrbFromIrp(
PIRP Irp
);
VOID
USBPORT_FlushAbortList(
PHCD_ENDPOINT Endpoint
);
VOID
USBPORT_AbortEndpoint(
PDEVICE_OBJECT FdoDeviceObject,
PHCD_ENDPOINT Endpoint,
PIRP Irp
);
BOOLEAN
USBPORT_LazyCloseEndpoint(
PDEVICE_OBJECT FdoDeviceObject,
PHCD_ENDPOINT Endpoint
);
NTSTATUS
USBPORT_RemoveDevice(
PUSBD_DEVICE_HANDLE DeviceHandle,
PDEVICE_OBJECT FdoDeviceObject,
ULONG Flags
);
VOID
USBPORT_AbortAllTransfers(
PDEVICE_OBJECT FdoDeviceObject,
PUSBD_DEVICE_HANDLE DeviceHandle
);
NTSTATUS
USBPORT_CreateWorkerThread(
PDEVICE_OBJECT FdoDeviceObject
);
#define IEP_SIGNAL_WORKER 0x00000001
#define IEP_REQUEST_INTERRUPT 0x00000002
VOID
USBPORT_InvalidateEndpoint(
PDEVICE_OBJECT FdoDeviceObject,
PHCD_ENDPOINT Endpoint,
ULONG IEPflags
);
VOID
USBPORT_TerminateWorkerThread(
PDEVICE_OBJECT FdoDeviceObject
);
VOID
USBPORT_FlushClosedEndpointList(
PDEVICE_OBJECT FdoDeviceObject
);
PIRP
USBPORT_FindActiveTransferIrp(
PDEVICE_OBJECT FdoDeviceObject,
PIRP Irp
);
NTSTATUS
USBPORT_ReadWriteConfigSpace(
PDEVICE_OBJECT FdoDeviceObject,
BOOLEAN Read,
PVOID Buffer,
ULONG Offset,
ULONG Length
);
NTSTATUS
USBPORT_UsbFdoUserIoctl(
PDEVICE_OBJECT FdoDeviceObject,
PIRP Irp,
PULONG BytesReturned
);
VOID
USBPORT_UserSendOnePacket(
PDEVICE_OBJECT FdoDeviceObject,
PUSBUSER_REQUEST_HEADER Header,
PPACKET_PARAMETERS PacketParameters
);
NTSTATUS
USBPORT_CreatePortFdoSymbolicLink(
PDEVICE_OBJECT FdoDeviceObject
);
#define USBPORT_ReadConfigSpace(fdo, buffer, offset, length) \
USBPORT_ReadWriteConfigSpace((fdo), TRUE, (buffer), (offset), (length))
#define USBPORT_WriteConfigSpace(fdo, buffer, offset, length) \
USBPORT_ReadWriteConfigSpace((fdo), FALSE, (buffer), (offset), (length))
BOOLEAN
USBPORT_ValidateConfigurtionDescriptor(
PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor,
USBD_STATUS *UsbdStatus
);
VOID
USBPORT_UserGetControllerInfo_0(
PDEVICE_OBJECT FdoDeviceObject,
PUSBUSER_REQUEST_HEADER Header,
PUSB_CONTROLLER_INFO_0 ControllerInfo_0
);
VOID
USBPORT_UserRawResetPort(
PDEVICE_OBJECT FdoDeviceObject,
PUSBUSER_REQUEST_HEADER Header,
PRAW_RESET_PORT_PARAMETERS Parameters
);
VOID
USBPORT_GetRootPortStatus(
PDEVICE_OBJECT FdoDeviceObject,
PUSBUSER_REQUEST_HEADER Header,
PRAW_ROOTPORT_PARAMETERS Parameters
);
VOID
USBPORT_UserSetRootPortFeature(
PDEVICE_OBJECT FdoDeviceObject,
PUSBUSER_REQUEST_HEADER Header,
PRAW_ROOTPORT_FEATURE Parameters
);
VOID
USBPORT_UserClearRootPortFeature(
PDEVICE_OBJECT FdoDeviceObject,
PUSBUSER_REQUEST_HEADER Header,
PRAW_ROOTPORT_FEATURE Parameters
);
VOID
USBPORT_StartDM_Timer(
PDEVICE_OBJECT FdoDeviceObject,
LONG MillisecondInterval
);
VOID
USBPORT_IsrDpcWorker(
PDEVICE_OBJECT FdoDeviceObject,
BOOLEAN HcInterrupt
);
VOID
USBPORT_InvalidateRootHub(
PDEVICE_OBJECT FdoDeviceObject
);
VOID
USBPORT_HcQueueWakeDpc(
PDEVICE_OBJECT FdoDeviceObject
);
VOID
USBPORT_HcWakeDpc(
PKDPC Dpc,
PVOID DeferredContext,
PVOID SystemArgument1,
PVOID SystemArgument2
);
VOID
USBPORT_StopDM_Timer(
PDEVICE_OBJECT FdoDeviceObject
);
BOOLEAN
USBPORT_EndpointHasQueuedTransfers(
PDEVICE_OBJECT FdoDeviceObject,
PHCD_ENDPOINT Endpoint
);
USB_USER_ERROR_CODE
USBPORT_NtStatus_TO_UsbUserStatus(
NTSTATUS NtStatus
);
VOID
USBPORT_UserGetControllerKey(
PDEVICE_OBJECT FdoDeviceObject,
PUSBUSER_REQUEST_HEADER Header,
PUSB_UNICODE_NAME ControllerKey
);
VOID
USBPORT_UserPassThru(
PDEVICE_OBJECT FdoDeviceObject,
PUSBUSER_REQUEST_HEADER Header,
PUSB_PASS_THRU_PARAMETERS PassThru
);
VOID
USBPORT_CancelPendingWakeIrp(
PDEVICE_OBJECT PdoDeviceObject,
PIRP CancelIrp
);
VOID
USBPORT_TurnControllerOff(
PDEVICE_OBJECT FdoDeviceObject
);
VOID
USBPORT_TurnControllerOn(
PDEVICE_OBJECT FdoDeviceObject
);
PHC_POWER_STATE
USBPORT_GetHcPowerState(
PDEVICE_OBJECT FdoDeviceObject,
PHC_POWER_STATE_TABLE HcPowerStateTbl,
SYSTEM_POWER_STATE SystemState
);
VOID
USBPORT_ComputeHcPowerStates(
PDEVICE_OBJECT FdoDeviceObject,
PDEVICE_CAPABILITIES HcDeviceCaps,
PHC_POWER_STATE_TABLE HcPowerStateTbl
);
NTSTATUS
USBPORTBUSIF_RestoreUsbDevice(
PVOID BusContext,
PUSB_DEVICE_HANDLE OldDeviceHandle,
PUSB_DEVICE_HANDLE NewDeviceHandle
);
MP_ENDPOINT_STATUS
USBPORT_GetEndpointStatus(
PHCD_ENDPOINT Endpoint
);
NTSTATUS
USBPORT_CloneDevice(
PDEVICE_OBJECT FdoDeviceObject,
PUSBD_DEVICE_HANDLE OldDeviceHandle,
PUSBD_DEVICE_HANDLE NewDeviceHandle
);
VOID
USBPORT_SuspendController(
PDEVICE_OBJECT FdoDeviceObject
);
VOID
USBPORT_NukeAllEndpoints(
PDEVICE_OBJECT FdoDeviceObject
);
VOID
USBPORT_RemoveDeviceHandle(
PDEVICE_OBJECT FdoDeviceObject,
PUSBD_DEVICE_HANDLE DeviceHandle
);
VOID
USBPORT_StopRootHubPdo(
PDEVICE_OBJECT FdoDeviceObject,
PDEVICE_OBJECT PdoDeviceObject
);
VOID
USBPORT_ResumeController(
PDEVICE_OBJECT FdoDeviceObject
);
VOID
USBPORT_UserPowerInformation(
PDEVICE_OBJECT FdoDeviceObject,
PUSBUSER_REQUEST_HEADER Header,
PUSB_POWER_INFO PowerInformation
);
PHCD_TRANSFER_CONTEXT
USBPORT_UnlinkTransfer(
PDEVICE_OBJECT FdoDeviceObject,
PTRANSFER_URB Urb
);
VOID
USBPORT_UserOpenRawDevice(
PDEVICE_OBJECT FdoDeviceObject,
PUSBUSER_REQUEST_HEADER Header,
PUSB_OPEN_RAW_DEVICE_PARAMETERS Parameters
);
VOID
USBPORT_UserCloseRawDevice(
PDEVICE_OBJECT FdoDeviceObject,
PUSBUSER_REQUEST_HEADER Header,
PUSB_CLOSE_RAW_DEVICE_PARAMETERS Parameters
);
VOID
USBPORT_UserSendRawCommand(
PDEVICE_OBJECT FdoDeviceObject,
PUSBUSER_REQUEST_HEADER Header,
PUSB_SEND_RAW_COMMAND_PARAMETERS Parameters
);
VOID
USBPORT_InitializeIsoTransfer(
PDEVICE_OBJECT FdoDeviceObject,
PTRANSFER_URB Urb,
PHCD_TRANSFER_CONTEXT Transfer
);
BOOLEAN
USBPORT_InTextmodeSetup(
VOID
);
NTSTATUS
USBPORT_IsCompanionController(
PDEVICE_OBJECT FdoDeviceObject,
PBOOLEAN ReturnResult
);
USB_CONTROLLER_FLAVOR
USBPORT_GetHcFlavor(
PDEVICE_OBJECT FdoDeviceObject,
USHORT PciVendorId,
USHORT PciProductId,
UCHAR PciRevision
);
VOID
USBPORT_ClosePipe(
PUSBD_DEVICE_HANDLE DeviceHandle,
PDEVICE_OBJECT FdoDeviceObject,
PUSBD_PIPE_HANDLE_I PipeHandle
);
PUSBD_INTERFACE_HANDLE_I
USBPORT_GetInterfaceHandle(
PDEVICE_OBJECT FdoDeviceObject,
PUSBD_CONFIG_HANDLE ConfigurationHandle,
UCHAR InterfaceNumber
);
USBD_STATUS
USBPORT_InitializeInterfaceInformation(
PDEVICE_OBJECT FdoDeviceObject,
PUSBD_INTERFACE_INFORMATION InterfaceInformation,
PUSBD_CONFIG_HANDLE ConfigHandle
);
NTSTATUS
USBPORT_GetBusInterfaceUSBDI(
PDEVICE_OBJECT FdoDeviceObject,
PDEVICE_OBJECT PdoDeviceObject,
PUSBD_DEVICE_HANDLE DeviceHandle,
PIRP Irp
);
PVOID
USBPORT_GetDeviceBusContext(
PDEVICE_OBJECT FdoDeviceObject,
PUSBD_DEVICE_HANDLE DeviceHandle,
PVOID HubBusContext
);
PVOID
USBPORTBUSIF_GetDeviceBusContext(
IN PVOID HubBusContext,
IN PVOID DeviceHandle
);
ULONG
USBPORT_ComputeTotalBandwidth(
PDEVICE_OBJECT FdoDeviceObject,
PVOID BusContext
);
USB_MINIPORT_STATUS
USBPORT_NtStatus_TO_MiniportStatus(
NTSTATUS NtStatus
);
BOOLEAN
USBPORT_AllocateBandwidthUSB11(
PDEVICE_OBJECT FdoDeviceObject,
PHCD_ENDPOINT Endpoint
);
BOOLEAN
USBPORT_AllocateBandwidthUSB20(
PDEVICE_OBJECT FdoDeviceObject,
PHCD_ENDPOINT Endpoint
);
VOID
USBPORT_FreeBandwidthUSB11(
PDEVICE_OBJECT FdoDeviceObject,
PHCD_ENDPOINT Endpoint
);
VOID
USBPORT_FreeBandwidthUSB20(
PDEVICE_OBJECT FdoDeviceObject,
PHCD_ENDPOINT Endpoint
);
VOID
USBPORT_UserGetBandwidthInformation(
PDEVICE_OBJECT FdoDeviceObject,
PUSBUSER_REQUEST_HEADER Header,
PUSB_BANDWIDTH_INFO BandwidthInfo
);
PTRANSACTION_TRANSLATOR
USBPORT_GetTt(
PDEVICE_OBJECT FdoDeviceObject,
PUSBD_DEVICE_HANDLE HubDeviceHandle,
PUSHORT PortNumber
);
NTSTATUS
USBPORT_InitializeTT(
PDEVICE_OBJECT FdoDeviceObject,
PUSBD_DEVICE_HANDLE HubDeviceHandle,
USHORT Port
);
VOID
USBPORTSVC_Wait(
PDEVICE_DATA DeviceData,
ULONG MillisecondsToWait
);
ULONG
USBPORT_GetDeviceCount(
PDEVICE_OBJECT FdoDeviceObject
);
VOID
USBPORT_UserGetBusStatistics0(
PDEVICE_OBJECT FdoDeviceObject,
PUSBUSER_REQUEST_HEADER Header,
PUSB_BUS_STATISTICS_0 BusStatistics0
);
ULONG
USBPORT_ComputeAllocatedBandwidth(
PDEVICE_OBJECT FdoDeviceObject,
PVOID BusContext
);
VOID
USBPORT_EndpointTimeout(
PDEVICE_OBJECT FdoDeviceObject,
PHCD_ENDPOINT Endpoint
);
VOID
USBPORT_TimeoutAllEndpoints(
PDEVICE_OBJECT FdoDeviceObject
);
NTSTATUS
USBPORT_LegacyGetUnicodeName(
PDEVICE_OBJECT FdoDeviceObject,
PIRP Irp,
PULONG BytesReturned
);
USHORT
USBPORT_GetTtDeviceAddress(
PDEVICE_OBJECT FdoDeviceObject,
PUSBD_DEVICE_HANDLE HubDeviceHandle
);
NTSTATUS
USBPORT_GetSymbolicName(
PDEVICE_OBJECT FdoDeviceObject,
PDEVICE_OBJECT DeviceObject,
PUNICODE_STRING SymbolicNameUnicodeString
);
VOID
USBPORT_UserGetRootHubName(
PDEVICE_OBJECT FdoDeviceObject,
PUSBUSER_REQUEST_HEADER Header,
PUSB_UNICODE_NAME RootHubName
);
NTSTATUS
USBPORTBUSIF_BusQueryDeviceInformation(
PVOID BusContext,
PUSB_DEVICE_HANDLE DeviceHandle,
PVOID DeviceInformationBuffer,
ULONG DeviceInformationBufferLength,
PULONG LengthOfDataCopied
);
NTSTATUS
USBPORT_IdleNotificationRequest(
PDEVICE_OBJECT PdoDeviceObject,
PIRP Irp
);
VOID
USBPORT_CompletePdoWaitWake(
PDEVICE_OBJECT FdoDeviceObject
);
VOID
USBPORT_CompletePendingIdleIrp(
PDEVICE_OBJECT PdoDeviceObject
);
VOID
USBPORT_FlushController(
PDEVICE_OBJECT FdoDeviceObject
);
VOID
USBPORT_SubmitHcWakeIrp(
PDEVICE_OBJECT FdoDeviceObject
);
BOOLEAN
USBPORT_RootHubEnabledForWake(
PDEVICE_OBJECT FdoDeviceObject
);
VOID
USBPORT_RestoreController(
PDEVICE_OBJECT FdoDeviceObject
);
VOID
USBPORT_ErrorCompleteIsoTransfer(
PDEVICE_OBJECT FdoDeviceObject,
PHCD_ENDPOINT Endpoiint,
PHCD_TRANSFER_CONTEXT Transfer
);
BOOLEAN
USBPORT_SelectiveSuspendEnabled(
PDEVICE_OBJECT FdoDeviceObject
);
PIRP
USBPORT_FindUrbInIrpTable(
PDEVICE_OBJECT FdoDeviceObject,
PUSBPORT_IRP_TABLE IrpTable,
PTRANSFER_URB Urb,
PIRP InputIrp
);
PUSBD_DEVICE_HANDLE
USBPORT_GetDeviceHandle(
PHCD_ENDPOINT Endpoint
);
//VOID
//USBPORT_CancelHcWakeIrp(
// PDEVICE_OBJECT FdoDeviceObject
// );
VOID
USBPORT_DoneSplitTransfer(
PHCD_TRANSFER_CONTEXT SplitTransfer
);
VOID
USBPORT_AssertTransferUrb(
PTRANSFER_URB Urb
);
VOID
USBPORT_SplitTransfer(
PDEVICE_OBJECT FdoDeviceObject,
PHCD_ENDPOINT Endpoint,
PHCD_TRANSFER_CONTEXT Transfer,
PLIST_ENTRY TransferList
);
VOID
USBPORTSVC_InvalidateController(
PDEVICE_DATA DeviceData,
USB_CONTROLLER_STATE ControllerState
);
VOID
USBPORTSVC_BugCheck(
PDEVICE_DATA DeviceData
);
VOID
USBPORT_DbgAcquireSpinLock(
PDEVICE_OBJECT FdoDeviceObject,
PUSBPORT_SPIN_LOCK SpinLock,
PKIRQL OldIrql
);
VOID
USBPORT_DbgReleaseSpinLock(
PDEVICE_OBJECT FdoDeviceObject,
PUSBPORT_SPIN_LOCK SpinLock,
KIRQL NewIrql
);
VOID
USBPORT_InitializeSpinLock (
PUSBPORT_SPIN_LOCK SpinLock,
LONG SigA,
LONG SigR
);
VOID
USBPORT_PowerFault(
PDEVICE_OBJECT FdoDeviceObject,
PUCHAR MessageText
);
NTSTATUS
USBPORTBUSIF_GetControllerInformation(
PVOID BusContext,
PVOID ControllerInformationBuffer,
ULONG ControllerInformationBufferLength,
PULONG LengthOfDataCopied
);
NTSTATUS
USBPORTBUSIF_ControllerSelectiveSuspend(
PVOID BusContext,
BOOLEAN Enable
);
NTSTATUS
USBPORTBUSIF_GetRootHubSymbolicName(
PVOID BusContext,
PVOID HubSymNameBuffer,
ULONG HubSymNameBufferLength,
PULONG LengthOfDataCopied
);
NTSTATUS
USBPORTBUSIF_GetExtendedHubInformation(
PVOID BusContext,
PDEVICE_OBJECT HubPhysicalDeviceObject,
PVOID HubInformationBuffer,
ULONG HubInformationBufferLength,
PULONG LengthOfDataCopied
);
VOID
USBPORT_BeginTransmitTriggerPacket(
PDEVICE_OBJECT FdoDeviceObject
);
VOID
USBPORT_EndTransmitTriggerPacket(
PDEVICE_OBJECT FdoDeviceObject
);
VOID
USBPORT_CatcTrap(
PDEVICE_OBJECT FdoDeviceObject
);
VOID
USBPORT_RebalanceEndpoint(
PDEVICE_OBJECT FdoDeviceObject,
PLIST_ENTRY EndpointList
);
NTSTATUS
USBPORT_GetDefaultBIOS_X(
PDEVICE_OBJECT FdoDeviceObject,
PULONG BiosX,
PULONG GlobalDisableSS,
PULONG GlobalDisableCCDetect,
PULONG EnIdleEndpointSupport
);
VOID
USBPORT_ApplyBIOS_X(
PDEVICE_OBJECT FdoDeviceObject,
PDEVICE_CAPABILITIES DeviceCaps,
ULONG BiosX
);
NTSTATUS
USBPORT_InitializeHsHub(
PDEVICE_OBJECT FdoDeviceObject,
PUSBD_DEVICE_HANDLE HubDeviceHandle,
ULONG TtCount
);
NTSTATUS
USBPORTBUSIF_InitailizeUsb2Hub(
PVOID BusContext,
PUSB_DEVICE_HANDLE HubDeviceHandle,
ULONG TtCount
);
VOID
USBPORTSVC_NotifyDoubleBuffer(
PDEVICE_DATA DeviceData,
PTRANSFER_PARAMETERS TransferParameters,
PVOID DbSystemAddress,
ULONG DbLength
);
VOID
USBPORT_FlushAdapterDBs(
PDEVICE_OBJECT FdoDeviceObject,
PHCD_TRANSFER_CONTEXT Transfer
);
BOOLEAN
USBPORT_IsDeviceHighSpeed(
PVOID BusContext
);
VOID
USBPORT_UpdateAllocatedBw(
PDEVICE_OBJECT FdoDeviceObject
);
VOID
USBPORT_UpdateAllocatedBwTt(
PTRANSACTION_TRANSLATOR Tt
);
VOID
USBPORT_BadRequestFlush(
PDEVICE_OBJECT FdoDeviceObject,
BOOLEAN ForceFlush
);
VOID
USBPORTBUSIF_FlushTransfers(
PVOID BusContext,
PVOID DeviceHandle
);
USBD_STATUS
USBPORT_FlushIsoTransfer(
PDEVICE_OBJECT FdoDeviceObject,
PTRANSFER_PARAMETERS TransferParameters,
PMINIPORT_ISO_TRANSFER IsoTransfer
);
USBPORT_OS_VERSION
USBPORT_DetectOSVersion(
PDEVICE_OBJECT FdoDeviceObject
);
VOID
USBPORT_DoSetPowerD0(
PDEVICE_OBJECT FdoDeviceObject
);
VOID
USBPORT_QueuePowerWorkItem(
PDEVICE_OBJECT FdoDeviceObject
);
NTSTATUS
USBPORTBUSIF_RootHubInitNotification(
PVOID BusContext,
PVOID CallBackContext,
PRH_INIT_CALLBACK CallbackRoutine
);
VOID
USBPORT_SynchronizeControllersStart(
PDEVICE_OBJECT FdoDeviceObject
);
VOID
USBPORT_SynchronizeControllersResume(
PDEVICE_OBJECT FdoDeviceObject
);
PDEVICE_OBJECT
USBPORT_FindUSB2Controller(
PDEVICE_OBJECT CcFdoDeviceObject
);
VOID
USBPORT_RegisterUSB2fdo(
PDEVICE_OBJECT FdoDeviceObject
);
VOID
USBPORT_RegisterUSB1fdo(
PDEVICE_OBJECT FdoDeviceObject
);
VOID
USBPORT_DeregisterUSB2fdo(
PDEVICE_OBJECT FdoDeviceObject
);
VOID
USBPORT_DeregisterUSB1fdo(
PDEVICE_OBJECT FdoDeviceObject
);
PDEVICE_RELATIONS
USBPORT_FindCompanionControllers(
PDEVICE_OBJECT Usb2FdoDeviceObject,
BOOLEAN ReferenceObjects,
BOOLEAN ReturnFdo
);
VOID
USBPORT_UserSetRootPortFeature(
PDEVICE_OBJECT FdoDeviceObject,
PUSBUSER_REQUEST_HEADER Header,
PRAW_ROOTPORT_FEATURE Parameters
);
VOID
USBPORT_UserClearRootPortFeature(
PDEVICE_OBJECT FdoDeviceObject,
PUSBUSER_REQUEST_HEADER Header,
PRAW_ROOTPORT_FEATURE Parameters
);
ULONG
USBPORT_SelectOrdinal(
PDEVICE_OBJECT FdoDeviceObject,
PHCD_ENDPOINT Endpoint
);
VOID
USBPORT_WriteHaction(
PDEVICE_OBJECT Usb2FdoDeviceObject,
ULONG Haction
);
USB_MINIPORT_STATUS
USBPORT_RootHub_PowerUsb2Port(
PDEVICE_OBJECT FdoDeviceObject,
USHORT Port
);
NTSTATUS
USBPORT_BusEnumLogEntry(
PVOID BusContext,
ULONG DriverTag,
ULONG EnumTag,
ULONG P1,
ULONG P2
);
BOOLEAN
USBPORT_ValidateRootPortApi(
PDEVICE_OBJECT FdoDeviceObject,
ULONG PortNumber
);
BOOLEAN
USBPORT_DCA_Enabled(
PDEVICE_OBJECT FdoDeviceObject
);
USB_MINIPORT_STATUS
USBPORT_RootHub_PowerUsbCcPort(
PDEVICE_OBJECT FdoDeviceObject,
USHORT Port
);
USB_MINIPORT_STATUS
USBPORT_RootHub_PowerAndChirpAllCcPorts(
PDEVICE_OBJECT FdoDeviceObject
);
#ifdef LOG_OCA_DATA
VOID
USBPORTBUSIF_SetDeviceHandleData(
PVOID BusContext,
PVOID DeviceHandle,
PDEVICE_OBJECT UsbDevicePdo
);
VOID
USBPORT_RecordOcaData(
PDEVICE_OBJECT FdoDeviceObject,
POCA_DATA OcaData,
PHCD_TRANSFER_CONTEXT Transfer,
PIRP Irp
);
#endif
RHSTATUS
USBPORT_RootHub_HubRequest(
PDEVICE_OBJECT FdoDeviceObject,
PORT_OPERATION PortOperation
);
NTSTATUS
USBPORT_ProcessHcWakeIrp(
PDEVICE_OBJECT FdoDeviceObject,
PIRP Irp
);
NTSTATUS
USBPORT_HcWakeIrp_Io_Completion(
PDEVICE_OBJECT DeviceObject,
PIRP Irp,
PVOID Context
);
NTSTATUS
USBPORT_HcWakeIrp_Po_Completion(
PDEVICE_OBJECT DeviceObject,
UCHAR MinorFunction,
POWER_STATE DeviceState,
PVOID Context,
PIO_STATUS_BLOCK IoStatus
);
VOID
USBPORT_DisarmHcForWake(
PDEVICE_OBJECT FdoDeviceObject
);
VOID
USBPORT_ArmHcForWake(
PDEVICE_OBJECT FdoDeviceObject
);
VOID
USBPORT_FlushCahcedRegistryKeys(
PDEVICE_OBJECT FdoDeviceObject
);
NTSTATUS
USBPORT_GetCachedRegistryKeyValueForPdo(
PDEVICE_OBJECT FdoDeviceObject,
PDEVICE_OBJECT PhysicalDeviceObject,
BOOLEAN SoftwareBranch,
PWCHAR KeyNameString,
ULONG KeyNameStringLength,
PVOID Data,
ULONG DataLength
);
VOID
USBPORT_DoRootHubCallback(
PDEVICE_OBJECT FdoDeviceObject,
PDEVICE_OBJECT Usb2Fdo
);
#endif /* __PROTOTYP_H__ */