128 BOOLEAN bUseDMA, bUseInterrupt;
162 ASSERT(DriverObjectExtension);
178 Config->HwDeviceExtension = (
PVOID) (DeviceExtension + 1);
192 bUseInterrupt =
FALSE;
209 Config->NumberOfAccessRanges++;
219 bUseInterrupt =
TRUE;
226 if (!MappedAddr || !Mem)
251 Config->NumberOfAccessRanges++;
254 Mem->
Start = MappedAddr;
280 (
PVOID)DeviceExtension,
282 Config->BusInterruptVector,
283 Config->BusInterruptLevel,
284 Config->BusInterruptLevel,
301 Config->InterruptObject = DeviceExtension->Interrupt;
407 if (!StreamDescriptor)
static PIO_STACK_LOCATION IoGetCurrentIrpStackLocation(PIRP Irp)
static KSYNCHRONIZE_ROUTINE SynchronizeRoutine
#define NT_SUCCESS(StatCode)
BOOLEAN NTAPI KeInsertQueueDpc(IN PKDPC Dpc, IN PVOID SystemArgument1, IN PVOID SystemArgument2)
struct _ACCESS_RANGE ACCESS_RANGE
struct _PORT_CONFIGURATION_INFORMATION * PPORT_CONFIGURATION_INFORMATION
struct _ACCESS_RANGE * PACCESS_RANGE
NTSTATUS NTAPI StreamClassAddDevice(IN PDRIVER_OBJECT DriverObject, IN PDEVICE_OBJECT PhysicalDeviceObject)
VOID NTAPI StreamClassReleaseResources(IN PDEVICE_OBJECT DeviceObject)
NTSTATUS NTAPI StreamClassStartDevice(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
NTSTATUS NTAPI StreamClassPnp(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
VOID CompleteIrp(IN PIRP Irp, IN NTSTATUS Status, IN ULONG_PTR Information)
VOID NTAPI StreamClassInterruptDpc(IN PKDPC Dpc, IN PVOID DeferredContext, IN PVOID SystemArgument1, IN PVOID SystemArgument2)
BOOLEAN NTAPI StreamClassSynchronize(IN PKINTERRUPT Interrupt, IN PKSYNCHRONIZE_ROUTINE SynchronizeRoutine, IN PVOID SynchronizeContext)
BOOLEAN NTAPI StreamClassInterruptRoutine(IN PKINTERRUPT Interrupt, IN PVOID ServiceContext)
struct STREAM_DEVICE_EXTENSION * PSTREAM_DEVICE_EXTENSION
struct MEMORY_RESOURCE_LIST * PMEMORY_RESOURCE_LIST
#define InsertTailList(ListHead, Entry)
#define IsListEmpty(ListHead)
#define KeWaitForSingleObject(pEvt, foo, a, b, c)
#define KeInitializeEvent(pEvt, foo, foo2)
#define RemoveHeadList(ListHead)
VOID NTAPI KeClearEvent(IN PKEVENT Event)
#define ExAllocatePool(type, size)
#define CmResourceTypeMemory
#define CmResourceTypeDma
enum _INTERFACE_TYPE INTERFACE_TYPE
#define CmResourceTypePort
#define CmResourceTypeInterrupt
VOID NTAPI MmUnmapIoSpace(IN PVOID BaseAddress, IN SIZE_T NumberOfBytes)
PVOID NTAPI MmMapIoSpace(IN PHYSICAL_ADDRESS PhysicalAddress, IN SIZE_T NumberOfBytes, IN MEMORY_CACHING_TYPE CacheType)
PVOID NTAPI IoGetDriverObjectExtension(IN PDRIVER_OBJECT DriverObject, IN PVOID ClientIdentificationAddress)
#define IoCompleteRequest
BOOLEAN NTAPI IoForwardIrpSynchronously(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp)
VOID NTAPI IoDisconnectInterrupt(PKINTERRUPT InterruptObject)
NTSTATUS NTAPI IoConnectInterrupt(OUT PKINTERRUPT *InterruptObject, IN PKSERVICE_ROUTINE ServiceRoutine, IN PVOID ServiceContext, IN PKSPIN_LOCK SpinLock, IN ULONG Vector, IN KIRQL Irql, IN KIRQL SynchronizeIrql, IN KINTERRUPT_MODE InterruptMode, IN BOOLEAN ShareVector, IN KAFFINITY ProcessorEnableMask, IN BOOLEAN FloatingSave)
BOOLEAN NTAPI KeSynchronizeExecution(IN OUT PKINTERRUPT Interrupt, IN PKSYNCHRONIZE_ROUTINE SynchronizeRoutine, IN PVOID SynchronizeContext OPTIONAL)
#define STATUS_NOT_SUPPORTED
PDMA_ADAPTER NTAPI IoGetDmaAdapter(IN PDEVICE_OBJECT PhysicalDeviceObject, IN PDEVICE_DESCRIPTION DeviceDescription, IN OUT PULONG NumberOfMapRegisters)
NTSTATUS NTAPI IoGetDeviceProperty(IN PDEVICE_OBJECT DeviceObject, IN DEVICE_REGISTRY_PROPERTY DeviceProperty, IN ULONG BufferLength, OUT PVOID PropertyBuffer, OUT PULONG ResultLength)
struct _HW_STREAM_REQUEST_BLOCK HW_STREAM_REQUEST_BLOCK
base of all file and directory entries
HW_STREAM_REQUEST_BLOCK Block
HW_INITIALIZATION_DATA Data
PSTREAM_CLASS_DRIVER_EXTENSION DriverExtension
PHW_STREAM_DESCRIPTOR StreamDescriptor
PDEVICE_OBJECT PhysicalDeviceObject
ULONG StreamDescriptorSize
PHYSICAL_ADDRESS DmaPhysicalAddress
PDEVICE_OBJECT LowerDeviceObject
LIST_ENTRY MemoryResourceList
SYNCHRONIZE_FUNC SynchronizeFunction
INTERFACE_TYPE InterfaceType
BOOLEAN Dma32BitAddresses
struct _DMA_OPERATIONS * DmaOperations
PHW_INTERRUPT HwInterrupt
PHW_RECEIVE_DEVICE_SRB HwReceivePacket
BOOLEAN Dma24BitAddresses
union _HW_STREAM_REQUEST_BLOCK::_CommandData CommandData
struct _IO_STACK_LOCATION::@3974::@4011 StartDevice
union _IO_STACK_LOCATION::@1575 Parameters
#define RtlZeroMemory(Destination, Length)
#define CONTAINING_RECORD(address, type, field)
#define STATUS_UNSUCCESSFUL
#define STATUS_INSUFFICIENT_RESOURCES
PHW_STREAM_DESCRIPTOR StreamBuffer
struct _PORT_CONFIGURATION_INFORMATION * ConfigInfo
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_CHILD_LIST_CONFIG Config
_In_ WDFCOLLECTION _In_ ULONG Index
_In_ PDEVICE_OBJECT DeviceObject
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG _Out_ PULONG ResultLength
_Must_inspect_result_ _In_ PWDF_DPC_CONFIG _In_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFDPC * Dpc
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_INTERRUPT_CONFIG _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFINTERRUPT * Interrupt
_In_ WDFREQUEST _In_ NTSTATUS _In_ ULONG_PTR Information
_Must_inspect_result_ _In_ WDFIORESLIST _In_ PIO_RESOURCE_DESCRIPTOR Descriptor
_Must_inspect_result_ _In_ WDFCMRESLIST List
struct _DMA_ADAPTER * PADAPTER_OBJECT
_In_ ULONG _In_ ULONG _In_ ULONG _Out_ PKIRQL _Out_ PKAFFINITY Affinity
_In_ PKSERVICE_ROUTINE _In_opt_ PVOID ServiceContext
#define DEVICE_DESCRIPTION_VERSION
#define IRP_MN_START_DEVICE
@ DevicePropertyBusNumber
@ DevicePropertyLegacyBusType
_In_ PKSYNCHRONIZE_ROUTINE _In_opt_ __drv_aliasesMem PVOID SynchronizeContext
_In_opt_ PVOID _In_opt_ PVOID SystemArgument1
KSYNCHRONIZE_ROUTINE * PKSYNCHRONIZE_ROUTINE
_In_opt_ PVOID DeferredContext
_In_opt_ PVOID _In_opt_ PVOID _In_opt_ PVOID SystemArgument2