/*++ 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__ */