31#ifndef _WDFDMAENABLER_H_
32#define _WDFDMAENABLER_H_
36 #define WDF_EXTERN_C extern "C"
37 #define WDF_EXTERN_C_START extern "C" {
38 #define WDF_EXTERN_C_END }
41 #define WDF_EXTERN_C_START
42 #define WDF_EXTERN_C_END
50#if (NTDDI_VERSION >= NTDDI_WIN2K)
80EVT_WDF_DMA_ENABLER_FILL(
93EVT_WDF_DMA_ENABLER_FLUSH(
106EVT_WDF_DMA_ENABLER_ENABLE(
119EVT_WDF_DMA_ENABLER_DISABLE(
132EVT_WDF_DMA_ENABLER_SELFMANAGED_IO_START(
145EVT_WDF_DMA_ENABLER_SELFMANAGED_IO_STOP(
153#define WDF_DMA_ENABLER_UNLIMITED_FRAGMENTS ((ULONG) -1)
233 Config->Profile = Profile;
289 DmaConfig->DeviceAddress =
Address;
290 DmaConfig->DmaWidth = DmaWidth;
291 DmaConfig->DmaDescriptor = DmaDescriptor;
302(
STDCALL *PFN_WDFDMAENABLERCREATE)(
341(
STDCALL *PFN_WDFDMAENABLERCONFIGURESYSTEMPROFILE)(
356WdfDmaEnablerConfigureSystemProfile(
375(
STDCALL *PFN_WDFDMAENABLERGETMAXIMUMLENGTH)(
385WdfDmaEnablerGetMaximumLength(
400(
STDCALL *PFN_WDFDMAENABLERGETMAXIMUMSCATTERGATHERELEMENTS)(
410WdfDmaEnablerGetMaximumScatterGatherElements(
425(
STDCALL *PFN_WDFDMAENABLERSETMAXIMUMSCATTERGATHERELEMENTS)(
432 size_t MaximumFragments
438WdfDmaEnablerSetMaximumScatterGatherElements(
443 size_t MaximumFragments
456(
STDCALL *PFN_WDFDMAENABLERGETFRAGMENTLENGTH)(
468WdfDmaEnablerGetFragmentLength(
485(
STDCALL *PFN_WDFDMAENABLERWDMGETDMAADAPTER)(
497WdfDmaEnablerWdmGetDmaAdapter(
#define __drv_reportError(why)
#define _IRQL_requires_same_
#define _Must_inspect_result_
#define _Function_class_(n)
enum _DMA_WIDTH DMA_WIDTH
PFN_WDF_DMA_ENABLER_SELFMANAGED_IO_START EvtDmaEnablerSelfManagedIoStart
PFN_WDF_DMA_ENABLER_ENABLE EvtDmaEnablerEnable
PFN_WDF_DMA_ENABLER_FILL EvtDmaEnablerFill
ULONG WdmDmaVersionOverride
PFN_WDF_DMA_ENABLER_DISABLE EvtDmaEnablerDisable
ULONG AddressWidthOverride
PFN_WDF_DMA_ENABLER_FLUSH EvtDmaEnablerFlush
PFN_WDF_DMA_ENABLER_SELFMANAGED_IO_STOP EvtDmaEnablerSelfManagedIoStop
PHYSICAL_ADDRESS DeviceAddress
PCM_PARTIAL_RESOURCE_DESCRIPTOR DmaDescriptor
#define RtlZeroMemory(Destination, Length)
_Must_inspect_result_ _In_ WDFDEVICE Device
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_CHILD_LIST_CONFIG Config
_Must_inspect_result_ _In_ WDFDMAENABLER _In_ _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes
_Must_inspect_result_ _In_ WDFDMAENABLER DmaEnabler
EVT_WDF_DMA_ENABLER_DISABLE * PFN_WDF_DMA_ENABLER_DISABLE
_WDF_DMA_ENABLER_CONFIG_FLAGS
@ WDF_DMA_ENABLER_CONFIG_NO_SGLIST_PREALLOCATION
@ WdfDmaProfileScatterGather
@ WdfDmaProfileScatterGatherDuplex
@ WdfDmaProfileSystemDuplex
@ WdfDmaProfileScatterGather64Duplex
@ WdfDmaProfileScatterGather64
_In_ WDFDMAENABLER _In_ _When_(MaximumFragments==0, __drv_reportError(MaximumFragments cannot be zero)) size_t MaximumFragments)
_Must_inspect_result_ _IRQL_requires_max_(PASSIVE_LEVEL) WDFAPI NTSTATUS(STDCALL *PFN_WDFDMAENABLERCREATE)(_In_ PWDF_DRIVER_GLOBALS DriverGlobals
_Must_inspect_result_ _In_ WDFDEVICE Device
_Must_inspect_result_ _In_ WDFDMAENABLER DmaEnabler
enum _WDF_DMA_ENABLER_CONFIG_FLAGS WDF_DMA_ENABLER_CONFIG_FLAGS
FORCEINLINE VOID WDF_DMA_ENABLER_CONFIG_INIT(_Out_ PWDF_DMA_ENABLER_CONFIG Config, _In_ WDF_DMA_PROFILE Profile, _In_ size_t MaximumLength)
EVT_WDF_DMA_ENABLER_ENABLE * PFN_WDF_DMA_ENABLER_ENABLE
EVT_WDF_DMA_ENABLER_SELFMANAGED_IO_STOP * PFN_WDF_DMA_ENABLER_SELFMANAGED_IO_STOP
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DMA_ENABLER_CONFIG Config
struct _WDF_DMA_ENABLER_CONFIG * PWDF_DMA_ENABLER_CONFIG
#define WDF_EXTERN_C_START
EVT_WDF_DMA_ENABLER_SELFMANAGED_IO_START * PFN_WDF_DMA_ENABLER_SELFMANAGED_IO_START
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DMA_ENABLER_CONFIG _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DMA_ENABLER_CONFIG _In_opt_ PWDF_OBJECT_ATTRIBUTES _Out_ WDFDMAENABLER * DmaEnablerHandle
struct _WDF_DMA_ENABLER_CONFIG WDF_DMA_ENABLER_CONFIG
EVT_WDF_DMA_ENABLER_FILL * PFN_WDF_DMA_ENABLER_FILL
EVT_WDF_DMA_ENABLER_FLUSH * PFN_WDF_DMA_ENABLER_FLUSH
_In_ WDFDMAENABLER _In_ WDF_DMA_DIRECTION DmaDirection
struct _WDF_DMA_SYSTEM_PROFILE_CONFIG * PWDF_DMA_SYSTEM_PROFILE_CONFIG
_Must_inspect_result_ _In_ WDFDMAENABLER _In_ PWDF_DMA_SYSTEM_PROFILE_CONFIG ProfileConfig
struct _WDF_DMA_SYSTEM_PROFILE_CONFIG WDF_DMA_SYSTEM_PROFILE_CONFIG
enum _WDF_DMA_DIRECTION WDF_DMA_DIRECTION
_Must_inspect_result_ _In_ WDFDMAENABLER _In_ PWDF_DMA_SYSTEM_PROFILE_CONFIG _In_ WDF_DMA_DIRECTION ConfigDirection
WDF_EXTERN_C_START enum _WDF_DMA_PROFILE WDF_DMA_PROFILE
FORCEINLINE VOID WDF_DMA_SYSTEM_PROFILE_CONFIG_INIT(_Out_ PWDF_DMA_SYSTEM_PROFILE_CONFIG DmaConfig, _In_ PHYSICAL_ADDRESS Address, _In_ DMA_WIDTH DmaWidth, _In_ PCM_PARTIAL_RESOURCE_DESCRIPTOR DmaDescriptor)
@ WdfDmaDirectionReadFromDevice
@ WdfDmaDirectionWriteToDevice
_In_ WDFDMATRANSACTION _In_ size_t MaximumLength
PWDF_DRIVER_GLOBALS WdfDriverGlobals
@ WdfDmaEnablerCreateTableIndex
@ WdfDmaEnablerConfigureSystemProfileTableIndex
@ WdfDmaEnablerGetMaximumLengthTableIndex
@ WdfDmaEnablerWdmGetDmaAdapterTableIndex
@ WdfDmaEnablerGetFragmentLengthTableIndex
@ WdfDmaEnablerSetMaximumScatterGatherElementsTableIndex
@ WdfDmaEnablerGetMaximumScatterGatherElementsTableIndex
struct _DMA_ADAPTER * PDMA_ADAPTER