94 DPRINT(
"No interface!!!\n");
104CDmaChannelInit::AllocateBuffer(
113 DPRINT(
"CDmaChannelInit_AllocateBuffer free common buffer first \n");
120 DPRINT(
"CDmaChannelInit_AllocateBuffer fAllocateCommonBuffer failed \n");
133CDmaChannelInit::AllocatedBufferSize()
135 DPRINT(
"CDmaChannelInit_AllocatedBufferSize: this %p BufferSize %u\n",
this,
m_BufferSize);
141CDmaChannelInit::CopyFrom(
154CDmaChannelInit::CopyTo(
166CDmaChannelInit::FreeBuffer()
168 DPRINT(
"CDmaChannelInit_FreeBuffer: this %p\n",
this);
174 DPRINT(
"CDmaChannelInit_FreeBuffer allocate common buffer first \n");
192CDmaChannelInit::GetAdapterObject()
194 DPRINT(
"CDmaChannelInit_GetAdapterObject: this %p\n",
this);
200CDmaChannelInit::MaximumBufferSize()
202 DPRINT(
"CDmaChannelInit_MaximumBufferSize: this %p\n",
this);
210CDmaChannelInit::PhysicalAddress()
221CDmaChannelInit::PhysicalAddress(
237CDmaChannelInit::SetBufferSize(
240 DPRINT(
"CDmaChannelInit_SetBufferSize: this %p\n",
this);
247CDmaChannelInit::BufferSize()
256CDmaChannelInit::SystemAddress()
258 DPRINT(
"CDmaChannelInit_SystemAddress: this %p\n",
this);
264CDmaChannelInit::TransferCount()
266 DPRINT(
"CDmaChannelInit_TransferCount: this %p\n",
this);
272CDmaChannelInit::ReadCounter()
302 This->m_pAdapter->DmaOperations->MapTransfer(
This->m_pAdapter,
307 This->m_WriteToDevice);
319CDmaChannelInit::Start(
327 DPRINT(
"CDmaChannelInit_Start: this %p\n",
this);
365CDmaChannelInit::Stop()
369 DPRINT(
"CDmaChannelInit::Stop: this %p\n",
this);
398CDmaChannelInit::WaitForTC(
402 ULONG BytesRemaining;
403 ULONG PrevBytesRemaining;
414 PrevBytesRemaining = 0xFFFFFFFF;
422 if (PrevBytesRemaining == BytesRemaining)
426 PrevBytesRemaining = BytesRemaining;
428 }
while(RetryCount-- >= 1);
441CDmaChannelInit::Init(
489 DPRINT(
"OutDmaChannel %p OuterUnknown %p PoolType %p DeviceDescription %p DeviceObject %p\n",
_In_ PSCSI_REQUEST_BLOCK _In_opt_ PVOID _In_ ULONG _In_ BOOLEAN WriteToDevice
ULONG m_LastTransferCount
PHYSICAL_ADDRESS m_Address
PDEVICE_OBJECT m_pDeviceObject
friend IO_ALLOCATION_ACTION NTAPI AdapterControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID MapRegisterBase, IN PVOID Context)
virtual ~CDmaChannelInit()
ULONG m_AllocatedBufferSize
ULONG m_MaximumBufferSize
STDMETHODIMP QueryInterface(REFIID InterfaceId, PVOID *Interface)
CDmaChannelInit(IUnknown *OuterUnknown)
#define NT_SUCCESS(StatCode)
NTSTATUS NTAPI PcNewDmaChannel(OUT PDMACHANNEL *OutDmaChannel, IN PUNKNOWN OuterUnknown OPTIONAL, IN POOL_TYPE PoolType, IN PDEVICE_DESCRIPTION DeviceDescription, IN PDEVICE_OBJECT DeviceObject)
IO_ALLOCATION_ACTION NTAPI AdapterControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID MapRegisterBase, IN PVOID Context)
GUID IID_IDmaChannelSlave
#define ExAllocatePoolWithTag(hernya, size, tag)
#define KeRaiseIrql(irql, oldIrql)
#define KeLowerIrql(oldIrql)
static void CopyTo(const S &Src, D &Dst)
enum _INTERFACE_TYPE INTERFACE_TYPE
VOID FreeItem(IN PVOID Item)
VOID NTAPI MmBuildMdlForNonPagedPool(IN PMDL Mdl)
#define KeStallExecutionProcessor(MicroSeconds)
_In_ UINT _In_ UINT _In_ PNDIS_PACKET Source
_In_ PUNICODE_STRING _Inout_ PUNICODE_STRING Destination
_In_ ULONG _In_ ULONG _In_ ULONG Length
#define STATUS_DEVICE_CONFIGURATION_ERROR
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)
IDmaChannel * PDMACHANNEL
#define PC_ASSERT_IRQL_EQUAL(x)
#define PC_ASSERT_IRQL(x)
struct PCLASS_DEVICE_EXTENSION * PPCLASS_DEVICE_EXTENSION
PULONG MinorVersion OPTIONAL
PDEVICE_OBJECT PhysicalDeviceObject
struct _DMA_OPERATIONS * DmaOperations
static LARGE_INTEGER Counter
#define RtlCopyMemory(Destination, Source, Length)
#define STATUS_UNSUCCESSFUL
#define STATUS_INSUFFICIENT_RESOURCES
_In_ PDEVICE_OBJECT DeviceObject
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG _Out_ PULONG ResultLength
_Must_inspect_result_ _In_ WDFDEVICE _In_ BOOLEAN _In_opt_ PVOID Tag
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ _Strict_type_match_ POOL_TYPE PoolType
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DEVICE_PROPERTY_DATA _In_ DEVPROPTYPE _In_ ULONG Size
_Must_inspect_result_ _In_ WDFDEVICE _In_ LPCGUID _Out_ PINTERFACE Interface
_In_ WDFMEMORY _Out_opt_ size_t * BufferSize
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_ PCUNICODE_STRING DeviceDescription
#define IsEqualGUIDAligned(guid1, guid2)
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
_In_opt_ PUNICODE_STRING _In_ PDRIVER_OBJECT _In_ PDEVICE_OBJECT _In_ INTERFACE_TYPE BusType
_Inout_ struct _IRP _In_ PVOID MapRegisterBase
enum _IO_ALLOCATION_ACTION IO_ALLOCATION_ACTION
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS _In_ LARGE_INTEGER ByteCount
@ DevicePropertyLegacyBusType
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
#define ADDRESS_AND_SIZE_TO_SPAN_PAGES(_Va, _Size)