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) 80 EVT_WDF_DMA_ENABLER_FILL(
93 EVT_WDF_DMA_ENABLER_FLUSH(
106 EVT_WDF_DMA_ENABLER_ENABLE(
119 EVT_WDF_DMA_ENABLER_DISABLE(
132 EVT_WDF_DMA_ENABLER_SELFMANAGED_IO_START(
145 EVT_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)(
356 WdfDmaEnablerConfigureSystemProfile(
375 (
STDCALL *PFN_WDFDMAENABLERGETMAXIMUMLENGTH)(
385 WdfDmaEnablerGetMaximumLength(
400 (
STDCALL *PFN_WDFDMAENABLERGETMAXIMUMSCATTERGATHERELEMENTS)(
410 WdfDmaEnablerGetMaximumScatterGatherElements(
425 (
STDCALL *PFN_WDFDMAENABLERSETMAXIMUMSCATTERGATHERELEMENTS)(
432 size_t MaximumFragments
438 WdfDmaEnablerSetMaximumScatterGatherElements(
443 size_t MaximumFragments
456 (
STDCALL *PFN_WDFDMAENABLERGETFRAGMENTLENGTH)(
468 WdfDmaEnablerGetFragmentLength(
485 (
STDCALL *PFN_WDFDMAENABLERWDMGETDMAADAPTER)(
497 WdfDmaEnablerWdmGetDmaAdapter(
509 #endif // (NTDDI_VERSION >= NTDDI_WIN2K) 514 #endif // _WDFDMAENABLER_H_ EVT_WDF_DMA_ENABLER_SELFMANAGED_IO_STOP * PFN_WDF_DMA_ENABLER_SELFMANAGED_IO_STOP
#define WDF_EXTERN_C_START
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DMA_ENABLER_CONFIG Config
_Must_inspect_result_ _In_ WDFDMAENABLER _In_ PWDF_DMA_SYSTEM_PROFILE_CONFIG ProfileConfig
#define __drv_reportError(why)
EVT_WDF_DMA_ENABLER_ENABLE * PFN_WDF_DMA_ENABLER_ENABLE
PFN_WDF_DMA_ENABLER_ENABLE EvtDmaEnablerEnable
enum _DMA_WIDTH DMA_WIDTH
ULONG AddressWidthOverride
struct _DMA_ADAPTER * PDMA_ADAPTER
EVT_WDF_DMA_ENABLER_FILL * PFN_WDF_DMA_ENABLER_FILL
struct _WDF_DMA_ENABLER_CONFIG WDF_DMA_ENABLER_CONFIG
struct _WDF_DMA_SYSTEM_PROFILE_CONFIG WDF_DMA_SYSTEM_PROFILE_CONFIG
PFN_WDF_DMA_ENABLER_SELFMANAGED_IO_START EvtDmaEnablerSelfManagedIoStart
_In_ WDFDMAENABLER _In_ _When_(MaximumFragments==0, __drv_reportError(MaximumFragments cannot be zero)) size_t MaximumFragments)
WDF_EXTERN_C_START enum _WDF_DMA_PROFILE WDF_DMA_PROFILE
struct _WDF_DMA_SYSTEM_PROFILE_CONFIG * PWDF_DMA_SYSTEM_PROFILE_CONFIG
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_DMA_ENABLER_CONFIG _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes
typedef _Function_class_(EVT_WDF_DMA_ENABLER_FILL) _IRQL_requires_same_ _IRQL_requires_max_(PASSIVE_LEVEL) NTSTATUS STDCALL EVT_WDF_DMA_ENABLER_FILL(_In_ WDFDMAENABLER DmaEnabler)
_Must_inspect_result_ _IRQL_requires_max_(PASSIVE_LEVEL) WDFAPI NTSTATUS(STDCALL *PFN_WDFDMAENABLERCREATE)(_In_ PWDF_DRIVER_GLOBALS DriverGlobals
#define _IRQL_requires_same_
_Must_inspect_result_ _In_ WDFDMAENABLER DmaEnabler
_In_ WDFDMAENABLER _In_ WDF_DMA_DIRECTION DmaDirection
enum _WDF_DMA_ENABLER_CONFIG_FLAGS WDF_DMA_ENABLER_CONFIG_FLAGS
PWDF_DRIVER_GLOBALS WdfDriverGlobals
PFN_WDF_DMA_ENABLER_FILL EvtDmaEnablerFill
_In_ WDFDMATRANSACTION _In_ size_t MaximumLength
struct _WDF_DMA_ENABLER_CONFIG * PWDF_DMA_ENABLER_CONFIG
PFN_WDF_DMA_ENABLER_FLUSH EvtDmaEnablerFlush
PFN_WDF_DMA_ENABLER_SELFMANAGED_IO_STOP EvtDmaEnablerSelfManagedIoStop
EVT_WDF_DMA_ENABLER_DISABLE * PFN_WDF_DMA_ENABLER_DISABLE
EVT_WDF_DMA_ENABLER_FLUSH * PFN_WDF_DMA_ENABLER_FLUSH
PFN_WDF_DMA_ENABLER_DISABLE EvtDmaEnablerDisable
PHYSICAL_ADDRESS DeviceAddress
#define _Must_inspect_result_
_Must_inspect_result_ _In_ WDFDEVICE Device
_Must_inspect_result_ _In_ WDFDEVICE _In_ PWDF_CHILD_LIST_CONFIG Config
_Must_inspect_result_ _In_ WDFDEVICE Device
_WDF_DMA_ENABLER_CONFIG_FLAGS
_Must_inspect_result_ _In_ WDFDMAENABLER _In_ PWDF_DMA_SYSTEM_PROFILE_CONFIG _In_ WDF_DMA_DIRECTION ConfigDirection
ULONG WdmDmaVersionOverride
_Must_inspect_result_ _In_ WDFDMAENABLER DmaEnabler
PCM_PARTIAL_RESOURCE_DESCRIPTOR DmaDescriptor
enum _WDF_DMA_DIRECTION WDF_DMA_DIRECTION
#define RtlZeroMemory(Destination, Length)
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_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 _Out_ WDFDMAENABLER * DmaEnablerHandle
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)
_Must_inspect_result_ _In_ WDFDMAENABLER _In_ _In_opt_ PWDF_OBJECT_ATTRIBUTES Attributes