99 DPRINT(
"No interface!!!\n");
109 CDmaChannelInit::AllocateBuffer(
118 DPRINT(
"CDmaChannelInit_AllocateBuffer free common buffer first \n");
125 DPRINT(
"CDmaChannelInit_AllocateBuffer fAllocateCommonBuffer failed \n");
138 CDmaChannelInit::AllocatedBufferSize()
140 DPRINT(
"CDmaChannelInit_AllocatedBufferSize: this %p BufferSize %u\n",
this,
m_BufferSize);
146 CDmaChannelInit::CopyFrom(
159 CDmaChannelInit::CopyTo(
171 CDmaChannelInit::FreeBuffer()
173 DPRINT(
"CDmaChannelInit_FreeBuffer: this %p\n",
this);
179 DPRINT(
"CDmaChannelInit_FreeBuffer allocate common buffer first \n");
197 CDmaChannelInit::GetAdapterObject()
199 DPRINT(
"CDmaChannelInit_GetAdapterObject: this %p\n",
this);
205 CDmaChannelInit::MaximumBufferSize()
207 DPRINT(
"CDmaChannelInit_MaximumBufferSize: this %p\n",
this);
243 CDmaChannelInit::SetBufferSize(
246 DPRINT(
"CDmaChannelInit_SetBufferSize: this %p\n",
this);
263 CDmaChannelInit::SystemAddress()
265 DPRINT(
"CDmaChannelInit_SystemAddress: this %p\n",
this);
271 CDmaChannelInit::TransferCount()
273 DPRINT(
"CDmaChannelInit_TransferCount: this %p\n",
this);
279 CDmaChannelInit::ReadCounter()
309 This->m_pAdapter->DmaOperations->MapTransfer(
This->m_pAdapter,
314 This->m_WriteToDevice);
334 DPRINT(
"CDmaChannelInit_Start: this %p\n",
this);
376 DPRINT(
"CDmaChannelInit::Stop: this %p\n",
this);
405 CDmaChannelInit::WaitForTC(
409 ULONG BytesRemaining;
410 ULONG PrevBytesRemaining;
421 PrevBytesRemaining = 0xFFFFFFFF;
429 if (PrevBytesRemaining == BytesRemaining)
433 PrevBytesRemaining = BytesRemaining;
435 }
while(RetryCount-- >= 1);
496 DPRINT(
"OutDmaChannel %p OuterUnknown %p PoolType %p DeviceDescription %p DeviceObject %p\n",
enum _IO_ALLOCATION_ACTION IO_ALLOCATION_ACTION
STDMETHODIMP QueryInterface(REFIID InterfaceId, PVOID *Interface)
IDmaChannel * PDMACHANNEL
#define STATUS_INSUFFICIENT_RESOURCES
IO_ALLOCATION_ACTION NTAPI AdapterControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID MapRegisterBase, IN PVOID Context)
_In_ ULONG _In_ ULONG _In_ ULONG Length
enum _INTERFACE_TYPE INTERFACE_TYPE
PDMA_ADAPTER NTAPI IoGetDmaAdapter(IN PDEVICE_OBJECT PhysicalDeviceObject, IN PDEVICE_DESCRIPTION DeviceDescription, IN OUT PULONG NumberOfMapRegisters)
_In_opt_ PUNICODE_STRING _In_ PDRIVER_OBJECT _In_ PDEVICE_OBJECT _In_ INTERFACE_TYPE BusType
struct PCLASS_DEVICE_EXTENSION * PPCLASS_DEVICE_EXTENSION
PDEVICE_OBJECT m_pDeviceObject
VOID NTAPI MmBuildMdlForNonPagedPool(IN PMDL Mdl)
IN PVOID IN PVOID IN USHORT IN USHORT Size
BOOL Init(PUSERCONNECT UserCon)
ULONG m_MaximumBufferSize
struct _DMA_OPERATIONS * DmaOperations
_In_ PVOID _Out_ BOOLEAN * Stop
#define IsEqualGUIDAligned(guid1, guid2)
_In_ PDEVICE_OBJECT DeviceObject
VOID FreeItem(IN PVOID Item)
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_ PCUNICODE_STRING DeviceDescription
NTSTATUS(* NTAPI)(IN PFILE_FULL_EA_INFORMATION EaBuffer, IN ULONG EaLength, OUT PULONG ErrorOffset)
_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
NTSTATUS NTAPI IoGetDeviceProperty(IN PDEVICE_OBJECT DeviceObject, IN DEVICE_REGISTRY_PROPERTY DeviceProperty, IN ULONG BufferLength, OUT PVOID PropertyBuffer, OUT PULONG ResultLength)
GUID IID_IDmaChannelSlave
#define ADDRESS_AND_SIZE_TO_SPAN_PAGES(_Va, _Size)
friend IO_ALLOCATION_ACTION NTAPI AdapterControl(IN PDEVICE_OBJECT DeviceObject, IN PIRP Irp, IN PVOID MapRegisterBase, IN PVOID Context)
#define NT_SUCCESS(StatCode)
PDEVICE_OBJECT PhysicalDeviceObject
_In_ PUNICODE_STRING _Inout_ PUNICODE_STRING Destination
#define PC_ASSERT_IRQL_EQUAL(x)
VOID NTAPI IoFreeMdl(PMDL Mdl)
#define STATUS_UNSUCCESSFUL
#define ExAllocatePoolWithTag(hernya, size, tag)
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS PhysicalAddress
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql
virtual ~CDmaChannelInit()
PHYSICAL_ADDRESS m_Address
ULONG m_AllocatedBufferSize
_Must_inspect_result_ _In_ WDFDEVICE _In_ BOOLEAN _In_opt_ PVOID Tag
_Must_inspect_result_ typedef _In_ PHYSICAL_ADDRESS _In_ LARGE_INTEGER ByteCount
ULONG m_LastTransferCount
_In_ PSCSI_REQUEST_BLOCK _In_opt_ PVOID _In_ ULONG _In_ BOOLEAN WriteToDevice
PMDL NTAPI IoAllocateMdl(IN PVOID VirtualAddress, IN ULONG Length, IN BOOLEAN SecondaryBuffer, IN BOOLEAN ChargeQuota, IN PIRP Irp)
NTSTATUS NTAPI PcNewDmaChannel(OUT PDMACHANNEL *OutDmaChannel, IN PUNKNOWN OuterUnknown OPTIONAL, IN POOL_TYPE PoolType, IN PDEVICE_DESCRIPTION DeviceDescription, IN PDEVICE_OBJECT DeviceObject)
_Inout_ struct _IRP _In_ PVOID MapRegisterBase
IN PVOID IN PVOID IN USHORT IN USHORT IN PINTERFACE Interface
VOID NTAPI KeRaiseIrql(KIRQL NewIrql, PKIRQL OldIrql)
static LARGE_INTEGER Counter
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ _Strict_type_match_ POOL_TYPE PoolType
#define RtlCopyMemory(Destination, Source, Length)
_Must_inspect_result_ _In_ WDFDEVICE _In_ DEVICE_REGISTRY_PROPERTY _In_ ULONG _Out_ PULONG ResultLength
_In_ UINT _In_ UINT _In_ PNDIS_PACKET Source
VOID NTAPI KeLowerIrql(KIRQL NewIrql)
#define STATUS_DEVICE_CONFIGURATION_ERROR
CDmaChannelInit(IUnknown *OuterUnknown)
VOID NTAPI KeStallExecutionProcessor(IN ULONG MicroSeconds)
#define PC_ASSERT_IRQL(x)
_In_ WDFMEMORY _Out_opt_ size_t * BufferSize
PULONG MinorVersion OPTIONAL