mirror of
https://github.com/reactos/reactos.git
synced 2024-09-12 05:43:24 +00:00
895 lines
20 KiB
C
895 lines
20 KiB
C
/*++
|
|
|
|
Copyright (c) Microsoft Corporation. All rights reserved.
|
|
|
|
_WdfVersionBuild_
|
|
|
|
Module Name:
|
|
|
|
WdfDmaTransaction.h
|
|
|
|
Abstract:
|
|
|
|
WDF DMA Transaction support
|
|
|
|
Environment:
|
|
|
|
Kernel mode only.
|
|
|
|
Notes:
|
|
|
|
Revision History:
|
|
|
|
--*/
|
|
|
|
//
|
|
// NOTE: This header is generated by stubwork. Please make any
|
|
// modifications to the corresponding template files
|
|
// (.x or .y) and use stubwork to regenerate the header
|
|
//
|
|
|
|
#ifndef _WDFDMATRANSACTION_H_
|
|
#define _WDFDMATRANSACTION_H_
|
|
|
|
#ifndef WDF_EXTERN_C
|
|
#ifdef __cplusplus
|
|
#define WDF_EXTERN_C extern "C"
|
|
#define WDF_EXTERN_C_START extern "C" {
|
|
#define WDF_EXTERN_C_END }
|
|
#else
|
|
#define WDF_EXTERN_C
|
|
#define WDF_EXTERN_C_START
|
|
#define WDF_EXTERN_C_END
|
|
#endif
|
|
#endif
|
|
|
|
WDF_EXTERN_C_START
|
|
|
|
|
|
|
|
#if (NTDDI_VERSION >= NTDDI_WIN2K)
|
|
|
|
|
|
|
|
typedef
|
|
_Function_class_(EVT_WDF_PROGRAM_DMA)
|
|
_IRQL_requires_same_
|
|
_IRQL_requires_(DISPATCH_LEVEL)
|
|
BOOLEAN
|
|
STDCALL
|
|
EVT_WDF_PROGRAM_DMA(
|
|
_In_
|
|
WDFDMATRANSACTION Transaction,
|
|
_In_
|
|
WDFDEVICE Device,
|
|
_In_
|
|
WDFCONTEXT Context,
|
|
_In_
|
|
WDF_DMA_DIRECTION Direction,
|
|
_In_
|
|
PSCATTER_GATHER_LIST SgList
|
|
);
|
|
|
|
typedef EVT_WDF_PROGRAM_DMA *PFN_WDF_PROGRAM_DMA;
|
|
|
|
typedef
|
|
_Function_class_(EVT_WDF_DMA_TRANSACTION_CONFIGURE_DMA_CHANNEL)
|
|
_IRQL_requires_same_
|
|
_IRQL_requires_(DISPATCH_LEVEL)
|
|
BOOLEAN
|
|
STDCALL
|
|
EVT_WDF_DMA_TRANSACTION_CONFIGURE_DMA_CHANNEL(
|
|
_In_
|
|
WDFDMATRANSACTION DmaTransaction,
|
|
_In_
|
|
WDFDEVICE Device,
|
|
_In_
|
|
PVOID Context,
|
|
_In_opt_
|
|
PMDL Mdl,
|
|
_In_
|
|
size_t Offset,
|
|
_In_
|
|
size_t Length
|
|
);
|
|
|
|
typedef EVT_WDF_DMA_TRANSACTION_CONFIGURE_DMA_CHANNEL *PFN_WDF_DMA_TRANSACTION_CONFIGURE_DMA_CHANNEL;
|
|
|
|
typedef
|
|
_Function_class_(EVT_WDF_DMA_TRANSACTION_DMA_TRANSFER_COMPLETE)
|
|
_IRQL_requires_same_
|
|
_IRQL_requires_(DISPATCH_LEVEL)
|
|
VOID
|
|
STDCALL
|
|
EVT_WDF_DMA_TRANSACTION_DMA_TRANSFER_COMPLETE(
|
|
_In_
|
|
WDFDMATRANSACTION Transaction,
|
|
_In_
|
|
WDFDEVICE Device,
|
|
_In_
|
|
WDFCONTEXT Context,
|
|
_In_
|
|
WDF_DMA_DIRECTION Direction,
|
|
_In_
|
|
DMA_COMPLETION_STATUS Status
|
|
);
|
|
|
|
typedef EVT_WDF_DMA_TRANSACTION_DMA_TRANSFER_COMPLETE *PFN_WDF_DMA_TRANSACTION_DMA_TRANSFER_COMPLETE;
|
|
|
|
typedef
|
|
_Function_class_(EVT_WDF_RESERVE_DMA)
|
|
_IRQL_requires_same_
|
|
_IRQL_requires_(DISPATCH_LEVEL)
|
|
VOID
|
|
STDCALL
|
|
EVT_WDF_RESERVE_DMA(
|
|
_In_
|
|
WDFDMATRANSACTION DmaTransaction,
|
|
_In_
|
|
PVOID Context
|
|
);
|
|
|
|
typedef EVT_WDF_RESERVE_DMA *PFN_WDF_RESERVE_DMA;
|
|
|
|
//
|
|
// WDF Function: WdfDmaTransactionCreate
|
|
//
|
|
typedef
|
|
_Must_inspect_result_
|
|
_IRQL_requires_max_(DISPATCH_LEVEL)
|
|
WDFAPI
|
|
NTSTATUS
|
|
(STDCALL *PFN_WDFDMATRANSACTIONCREATE)(
|
|
_In_
|
|
PWDF_DRIVER_GLOBALS DriverGlobals,
|
|
_In_
|
|
WDFDMAENABLER DmaEnabler,
|
|
_In_opt_
|
|
PWDF_OBJECT_ATTRIBUTES Attributes,
|
|
_Out_
|
|
WDFDMATRANSACTION* DmaTransaction
|
|
);
|
|
|
|
_Must_inspect_result_
|
|
_IRQL_requires_max_(DISPATCH_LEVEL)
|
|
FORCEINLINE
|
|
NTSTATUS
|
|
WdfDmaTransactionCreate(
|
|
_In_
|
|
WDFDMAENABLER DmaEnabler,
|
|
_In_opt_
|
|
PWDF_OBJECT_ATTRIBUTES Attributes,
|
|
_Out_
|
|
WDFDMATRANSACTION* DmaTransaction
|
|
)
|
|
{
|
|
return ((PFN_WDFDMATRANSACTIONCREATE) WdfFunctions[WdfDmaTransactionCreateTableIndex])(WdfDriverGlobals, DmaEnabler, Attributes, DmaTransaction);
|
|
}
|
|
|
|
//
|
|
// WDF Function: WdfDmaTransactionInitialize
|
|
//
|
|
typedef
|
|
_Must_inspect_result_
|
|
_IRQL_requires_max_(DISPATCH_LEVEL)
|
|
WDFAPI
|
|
NTSTATUS
|
|
(STDCALL *PFN_WDFDMATRANSACTIONINITIALIZE)(
|
|
_In_
|
|
PWDF_DRIVER_GLOBALS DriverGlobals,
|
|
_In_
|
|
WDFDMATRANSACTION DmaTransaction,
|
|
_In_
|
|
PFN_WDF_PROGRAM_DMA EvtProgramDmaFunction,
|
|
_In_
|
|
WDF_DMA_DIRECTION DmaDirection,
|
|
_In_
|
|
PMDL Mdl,
|
|
_In_
|
|
PVOID VirtualAddress,
|
|
_In_
|
|
_When_(Length == 0, __drv_reportError(Length cannot be zero))
|
|
size_t Length
|
|
);
|
|
|
|
_Must_inspect_result_
|
|
_IRQL_requires_max_(DISPATCH_LEVEL)
|
|
FORCEINLINE
|
|
NTSTATUS
|
|
WdfDmaTransactionInitialize(
|
|
_In_
|
|
WDFDMATRANSACTION DmaTransaction,
|
|
_In_
|
|
PFN_WDF_PROGRAM_DMA EvtProgramDmaFunction,
|
|
_In_
|
|
WDF_DMA_DIRECTION DmaDirection,
|
|
_In_
|
|
PMDL Mdl,
|
|
_In_
|
|
PVOID VirtualAddress,
|
|
_In_
|
|
_When_(Length == 0, __drv_reportError(Length cannot be zero))
|
|
size_t Length
|
|
)
|
|
{
|
|
return ((PFN_WDFDMATRANSACTIONINITIALIZE) WdfFunctions[WdfDmaTransactionInitializeTableIndex])(WdfDriverGlobals, DmaTransaction, EvtProgramDmaFunction, DmaDirection, Mdl, VirtualAddress, Length);
|
|
}
|
|
|
|
//
|
|
// WDF Function: WdfDmaTransactionInitializeUsingOffset
|
|
//
|
|
typedef
|
|
_Must_inspect_result_
|
|
_IRQL_requires_max_(DISPATCH_LEVEL)
|
|
WDFAPI
|
|
NTSTATUS
|
|
(STDCALL *PFN_WDFDMATRANSACTIONINITIALIZEUSINGOFFSET)(
|
|
_In_
|
|
PWDF_DRIVER_GLOBALS DriverGlobals,
|
|
_In_
|
|
WDFDMATRANSACTION DmaTransaction,
|
|
_In_
|
|
PFN_WDF_PROGRAM_DMA EvtProgramDmaFunction,
|
|
_In_
|
|
WDF_DMA_DIRECTION DmaDirection,
|
|
_In_
|
|
PMDL Mdl,
|
|
_In_
|
|
size_t Offset,
|
|
_In_
|
|
_When_(Length == 0, __drv_reportError(Length cannot be zero))
|
|
size_t Length
|
|
);
|
|
|
|
_Must_inspect_result_
|
|
_IRQL_requires_max_(DISPATCH_LEVEL)
|
|
FORCEINLINE
|
|
NTSTATUS
|
|
WdfDmaTransactionInitializeUsingOffset(
|
|
_In_
|
|
WDFDMATRANSACTION DmaTransaction,
|
|
_In_
|
|
PFN_WDF_PROGRAM_DMA EvtProgramDmaFunction,
|
|
_In_
|
|
WDF_DMA_DIRECTION DmaDirection,
|
|
_In_
|
|
PMDL Mdl,
|
|
_In_
|
|
size_t Offset,
|
|
_In_
|
|
_When_(Length == 0, __drv_reportError(Length cannot be zero))
|
|
size_t Length
|
|
)
|
|
{
|
|
return ((PFN_WDFDMATRANSACTIONINITIALIZEUSINGOFFSET) WdfFunctions[WdfDmaTransactionInitializeUsingOffsetTableIndex])(WdfDriverGlobals, DmaTransaction, EvtProgramDmaFunction, DmaDirection, Mdl, Offset, Length);
|
|
}
|
|
|
|
//
|
|
// WDF Function: WdfDmaTransactionInitializeUsingRequest
|
|
//
|
|
typedef
|
|
_Must_inspect_result_
|
|
_IRQL_requires_max_(DISPATCH_LEVEL)
|
|
WDFAPI
|
|
NTSTATUS
|
|
(STDCALL *PFN_WDFDMATRANSACTIONINITIALIZEUSINGREQUEST)(
|
|
_In_
|
|
PWDF_DRIVER_GLOBALS DriverGlobals,
|
|
_In_
|
|
WDFDMATRANSACTION DmaTransaction,
|
|
_In_
|
|
WDFREQUEST Request,
|
|
_In_
|
|
PFN_WDF_PROGRAM_DMA EvtProgramDmaFunction,
|
|
_In_
|
|
WDF_DMA_DIRECTION DmaDirection
|
|
);
|
|
|
|
_Must_inspect_result_
|
|
_IRQL_requires_max_(DISPATCH_LEVEL)
|
|
FORCEINLINE
|
|
NTSTATUS
|
|
WdfDmaTransactionInitializeUsingRequest(
|
|
_In_
|
|
WDFDMATRANSACTION DmaTransaction,
|
|
_In_
|
|
WDFREQUEST Request,
|
|
_In_
|
|
PFN_WDF_PROGRAM_DMA EvtProgramDmaFunction,
|
|
_In_
|
|
WDF_DMA_DIRECTION DmaDirection
|
|
)
|
|
{
|
|
return ((PFN_WDFDMATRANSACTIONINITIALIZEUSINGREQUEST) WdfFunctions[WdfDmaTransactionInitializeUsingRequestTableIndex])(WdfDriverGlobals, DmaTransaction, Request, EvtProgramDmaFunction, DmaDirection);
|
|
}
|
|
|
|
//
|
|
// WDF Function: WdfDmaTransactionExecute
|
|
//
|
|
typedef
|
|
_Must_inspect_result_
|
|
_IRQL_requires_max_(DISPATCH_LEVEL)
|
|
WDFAPI
|
|
NTSTATUS
|
|
(STDCALL *PFN_WDFDMATRANSACTIONEXECUTE)(
|
|
_In_
|
|
PWDF_DRIVER_GLOBALS DriverGlobals,
|
|
_In_
|
|
WDFDMATRANSACTION DmaTransaction,
|
|
_In_opt_
|
|
WDFCONTEXT Context
|
|
);
|
|
|
|
_Must_inspect_result_
|
|
_IRQL_requires_max_(DISPATCH_LEVEL)
|
|
FORCEINLINE
|
|
NTSTATUS
|
|
WdfDmaTransactionExecute(
|
|
_In_
|
|
WDFDMATRANSACTION DmaTransaction,
|
|
_In_opt_
|
|
WDFCONTEXT Context
|
|
)
|
|
{
|
|
return ((PFN_WDFDMATRANSACTIONEXECUTE) WdfFunctions[WdfDmaTransactionExecuteTableIndex])(WdfDriverGlobals, DmaTransaction, Context);
|
|
}
|
|
|
|
//
|
|
// WDF Function: WdfDmaTransactionRelease
|
|
//
|
|
typedef
|
|
_Success_(TRUE)
|
|
_IRQL_requires_max_(DISPATCH_LEVEL)
|
|
WDFAPI
|
|
NTSTATUS
|
|
(STDCALL *PFN_WDFDMATRANSACTIONRELEASE)(
|
|
_In_
|
|
PWDF_DRIVER_GLOBALS DriverGlobals,
|
|
_In_
|
|
WDFDMATRANSACTION DmaTransaction
|
|
);
|
|
|
|
_Success_(TRUE)
|
|
_IRQL_requires_max_(DISPATCH_LEVEL)
|
|
FORCEINLINE
|
|
NTSTATUS
|
|
WdfDmaTransactionRelease(
|
|
_In_
|
|
WDFDMATRANSACTION DmaTransaction
|
|
)
|
|
{
|
|
return ((PFN_WDFDMATRANSACTIONRELEASE) WdfFunctions[WdfDmaTransactionReleaseTableIndex])(WdfDriverGlobals, DmaTransaction);
|
|
}
|
|
|
|
//
|
|
// WDF Function: WdfDmaTransactionDmaCompleted
|
|
//
|
|
typedef
|
|
_IRQL_requires_max_(DISPATCH_LEVEL)
|
|
WDFAPI
|
|
BOOLEAN
|
|
(STDCALL *PFN_WDFDMATRANSACTIONDMACOMPLETED)(
|
|
_In_
|
|
PWDF_DRIVER_GLOBALS DriverGlobals,
|
|
_In_
|
|
WDFDMATRANSACTION DmaTransaction,
|
|
_Out_
|
|
NTSTATUS* Status
|
|
);
|
|
|
|
_IRQL_requires_max_(DISPATCH_LEVEL)
|
|
FORCEINLINE
|
|
BOOLEAN
|
|
WdfDmaTransactionDmaCompleted(
|
|
_In_
|
|
WDFDMATRANSACTION DmaTransaction,
|
|
_Out_
|
|
NTSTATUS* Status
|
|
)
|
|
{
|
|
return ((PFN_WDFDMATRANSACTIONDMACOMPLETED) WdfFunctions[WdfDmaTransactionDmaCompletedTableIndex])(WdfDriverGlobals, DmaTransaction, Status);
|
|
}
|
|
|
|
//
|
|
// WDF Function: WdfDmaTransactionDmaCompletedWithLength
|
|
//
|
|
typedef
|
|
_IRQL_requires_max_(DISPATCH_LEVEL)
|
|
WDFAPI
|
|
BOOLEAN
|
|
(STDCALL *PFN_WDFDMATRANSACTIONDMACOMPLETEDWITHLENGTH)(
|
|
_In_
|
|
PWDF_DRIVER_GLOBALS DriverGlobals,
|
|
_In_
|
|
WDFDMATRANSACTION DmaTransaction,
|
|
_In_
|
|
size_t TransferredLength,
|
|
_Out_
|
|
NTSTATUS* Status
|
|
);
|
|
|
|
_IRQL_requires_max_(DISPATCH_LEVEL)
|
|
FORCEINLINE
|
|
BOOLEAN
|
|
WdfDmaTransactionDmaCompletedWithLength(
|
|
_In_
|
|
WDFDMATRANSACTION DmaTransaction,
|
|
_In_
|
|
size_t TransferredLength,
|
|
_Out_
|
|
NTSTATUS* Status
|
|
)
|
|
{
|
|
return ((PFN_WDFDMATRANSACTIONDMACOMPLETEDWITHLENGTH) WdfFunctions[WdfDmaTransactionDmaCompletedWithLengthTableIndex])(WdfDriverGlobals, DmaTransaction, TransferredLength, Status);
|
|
}
|
|
|
|
//
|
|
// WDF Function: WdfDmaTransactionDmaCompletedFinal
|
|
//
|
|
typedef
|
|
_IRQL_requires_max_(DISPATCH_LEVEL)
|
|
WDFAPI
|
|
BOOLEAN
|
|
(STDCALL *PFN_WDFDMATRANSACTIONDMACOMPLETEDFINAL)(
|
|
_In_
|
|
PWDF_DRIVER_GLOBALS DriverGlobals,
|
|
_In_
|
|
WDFDMATRANSACTION DmaTransaction,
|
|
_In_
|
|
size_t FinalTransferredLength,
|
|
_Out_
|
|
NTSTATUS* Status
|
|
);
|
|
|
|
_IRQL_requires_max_(DISPATCH_LEVEL)
|
|
FORCEINLINE
|
|
BOOLEAN
|
|
WdfDmaTransactionDmaCompletedFinal(
|
|
_In_
|
|
WDFDMATRANSACTION DmaTransaction,
|
|
_In_
|
|
size_t FinalTransferredLength,
|
|
_Out_
|
|
NTSTATUS* Status
|
|
)
|
|
{
|
|
return ((PFN_WDFDMATRANSACTIONDMACOMPLETEDFINAL) WdfFunctions[WdfDmaTransactionDmaCompletedFinalTableIndex])(WdfDriverGlobals, DmaTransaction, FinalTransferredLength, Status);
|
|
}
|
|
|
|
//
|
|
// WDF Function: WdfDmaTransactionGetBytesTransferred
|
|
//
|
|
typedef
|
|
_IRQL_requires_max_(DISPATCH_LEVEL)
|
|
WDFAPI
|
|
size_t
|
|
(STDCALL *PFN_WDFDMATRANSACTIONGETBYTESTRANSFERRED)(
|
|
_In_
|
|
PWDF_DRIVER_GLOBALS DriverGlobals,
|
|
_In_
|
|
WDFDMATRANSACTION DmaTransaction
|
|
);
|
|
|
|
_IRQL_requires_max_(DISPATCH_LEVEL)
|
|
FORCEINLINE
|
|
size_t
|
|
WdfDmaTransactionGetBytesTransferred(
|
|
_In_
|
|
WDFDMATRANSACTION DmaTransaction
|
|
)
|
|
{
|
|
return ((PFN_WDFDMATRANSACTIONGETBYTESTRANSFERRED) WdfFunctions[WdfDmaTransactionGetBytesTransferredTableIndex])(WdfDriverGlobals, DmaTransaction);
|
|
}
|
|
|
|
//
|
|
// WDF Function: WdfDmaTransactionSetMaximumLength
|
|
//
|
|
typedef
|
|
_IRQL_requires_max_(DISPATCH_LEVEL)
|
|
WDFAPI
|
|
VOID
|
|
(STDCALL *PFN_WDFDMATRANSACTIONSETMAXIMUMLENGTH)(
|
|
_In_
|
|
PWDF_DRIVER_GLOBALS DriverGlobals,
|
|
_In_
|
|
WDFDMATRANSACTION DmaTransaction,
|
|
_In_
|
|
size_t MaximumLength
|
|
);
|
|
|
|
_IRQL_requires_max_(DISPATCH_LEVEL)
|
|
FORCEINLINE
|
|
VOID
|
|
WdfDmaTransactionSetMaximumLength(
|
|
_In_
|
|
WDFDMATRANSACTION DmaTransaction,
|
|
_In_
|
|
size_t MaximumLength
|
|
)
|
|
{
|
|
((PFN_WDFDMATRANSACTIONSETMAXIMUMLENGTH) WdfFunctions[WdfDmaTransactionSetMaximumLengthTableIndex])(WdfDriverGlobals, DmaTransaction, MaximumLength);
|
|
}
|
|
|
|
//
|
|
// WDF Function: WdfDmaTransactionGetRequest
|
|
//
|
|
typedef
|
|
_IRQL_requires_max_(DISPATCH_LEVEL)
|
|
WDFAPI
|
|
WDFREQUEST
|
|
(STDCALL *PFN_WDFDMATRANSACTIONGETREQUEST)(
|
|
_In_
|
|
PWDF_DRIVER_GLOBALS DriverGlobals,
|
|
_In_
|
|
WDFDMATRANSACTION DmaTransaction
|
|
);
|
|
|
|
_IRQL_requires_max_(DISPATCH_LEVEL)
|
|
FORCEINLINE
|
|
WDFREQUEST
|
|
WdfDmaTransactionGetRequest(
|
|
_In_
|
|
WDFDMATRANSACTION DmaTransaction
|
|
)
|
|
{
|
|
return ((PFN_WDFDMATRANSACTIONGETREQUEST) WdfFunctions[WdfDmaTransactionGetRequestTableIndex])(WdfDriverGlobals, DmaTransaction);
|
|
}
|
|
|
|
//
|
|
// WDF Function: WdfDmaTransactionGetCurrentDmaTransferLength
|
|
//
|
|
typedef
|
|
_IRQL_requires_max_(DISPATCH_LEVEL)
|
|
WDFAPI
|
|
size_t
|
|
(STDCALL *PFN_WDFDMATRANSACTIONGETCURRENTDMATRANSFERLENGTH)(
|
|
_In_
|
|
PWDF_DRIVER_GLOBALS DriverGlobals,
|
|
_In_
|
|
WDFDMATRANSACTION DmaTransaction
|
|
);
|
|
|
|
_IRQL_requires_max_(DISPATCH_LEVEL)
|
|
FORCEINLINE
|
|
size_t
|
|
WdfDmaTransactionGetCurrentDmaTransferLength(
|
|
_In_
|
|
WDFDMATRANSACTION DmaTransaction
|
|
)
|
|
{
|
|
return ((PFN_WDFDMATRANSACTIONGETCURRENTDMATRANSFERLENGTH) WdfFunctions[WdfDmaTransactionGetCurrentDmaTransferLengthTableIndex])(WdfDriverGlobals, DmaTransaction);
|
|
}
|
|
|
|
//
|
|
// WDF Function: WdfDmaTransactionGetDevice
|
|
//
|
|
typedef
|
|
_IRQL_requires_max_(DISPATCH_LEVEL)
|
|
WDFAPI
|
|
WDFDEVICE
|
|
(STDCALL *PFN_WDFDMATRANSACTIONGETDEVICE)(
|
|
_In_
|
|
PWDF_DRIVER_GLOBALS DriverGlobals,
|
|
_In_
|
|
WDFDMATRANSACTION DmaTransaction
|
|
);
|
|
|
|
_IRQL_requires_max_(DISPATCH_LEVEL)
|
|
FORCEINLINE
|
|
WDFDEVICE
|
|
WdfDmaTransactionGetDevice(
|
|
_In_
|
|
WDFDMATRANSACTION DmaTransaction
|
|
)
|
|
{
|
|
return ((PFN_WDFDMATRANSACTIONGETDEVICE) WdfFunctions[WdfDmaTransactionGetDeviceTableIndex])(WdfDriverGlobals, DmaTransaction);
|
|
}
|
|
|
|
//
|
|
// WDF Function: WdfDmaTransactionGetTransferInfo
|
|
//
|
|
typedef
|
|
_IRQL_requires_max_(DISPATCH_LEVEL)
|
|
WDFAPI
|
|
VOID
|
|
(STDCALL *PFN_WDFDMATRANSACTIONGETTRANSFERINFO)(
|
|
_In_
|
|
PWDF_DRIVER_GLOBALS DriverGlobals,
|
|
_In_
|
|
WDFDMATRANSACTION DmaTransaction,
|
|
_Out_opt_
|
|
ULONG* MapRegisterCount,
|
|
_Out_opt_
|
|
ULONG* ScatterGatherElementCount
|
|
);
|
|
|
|
_IRQL_requires_max_(DISPATCH_LEVEL)
|
|
FORCEINLINE
|
|
VOID
|
|
WdfDmaTransactionGetTransferInfo(
|
|
_In_
|
|
WDFDMATRANSACTION DmaTransaction,
|
|
_Out_opt_
|
|
ULONG* MapRegisterCount,
|
|
_Out_opt_
|
|
ULONG* ScatterGatherElementCount
|
|
)
|
|
{
|
|
((PFN_WDFDMATRANSACTIONGETTRANSFERINFO) WdfFunctions[WdfDmaTransactionGetTransferInfoTableIndex])(WdfDriverGlobals, DmaTransaction, MapRegisterCount, ScatterGatherElementCount);
|
|
}
|
|
|
|
//
|
|
// WDF Function: WdfDmaTransactionSetChannelConfigurationCallback
|
|
//
|
|
typedef
|
|
_IRQL_requires_max_(DISPATCH_LEVEL)
|
|
WDFAPI
|
|
VOID
|
|
(STDCALL *PFN_WDFDMATRANSACTIONSETCHANNELCONFIGURATIONCALLBACK)(
|
|
_In_
|
|
PWDF_DRIVER_GLOBALS DriverGlobals,
|
|
_In_
|
|
WDFDMATRANSACTION DmaTransaction,
|
|
_In_opt_
|
|
PFN_WDF_DMA_TRANSACTION_CONFIGURE_DMA_CHANNEL ConfigureRoutine,
|
|
_In_opt_
|
|
PVOID ConfigureContext
|
|
);
|
|
|
|
_IRQL_requires_max_(DISPATCH_LEVEL)
|
|
FORCEINLINE
|
|
VOID
|
|
WdfDmaTransactionSetChannelConfigurationCallback(
|
|
_In_
|
|
WDFDMATRANSACTION DmaTransaction,
|
|
_In_opt_
|
|
PFN_WDF_DMA_TRANSACTION_CONFIGURE_DMA_CHANNEL ConfigureRoutine,
|
|
_In_opt_
|
|
PVOID ConfigureContext
|
|
)
|
|
{
|
|
((PFN_WDFDMATRANSACTIONSETCHANNELCONFIGURATIONCALLBACK) WdfFunctions[WdfDmaTransactionSetChannelConfigurationCallbackTableIndex])(WdfDriverGlobals, DmaTransaction, ConfigureRoutine, ConfigureContext);
|
|
}
|
|
|
|
//
|
|
// WDF Function: WdfDmaTransactionSetTransferCompleteCallback
|
|
//
|
|
typedef
|
|
_IRQL_requires_max_(DISPATCH_LEVEL)
|
|
WDFAPI
|
|
VOID
|
|
(STDCALL *PFN_WDFDMATRANSACTIONSETTRANSFERCOMPLETECALLBACK)(
|
|
_In_
|
|
PWDF_DRIVER_GLOBALS DriverGlobals,
|
|
_In_
|
|
WDFDMATRANSACTION DmaTransaction,
|
|
_In_opt_
|
|
PFN_WDF_DMA_TRANSACTION_DMA_TRANSFER_COMPLETE DmaCompletionRoutine,
|
|
_In_opt_
|
|
PVOID DmaCompletionContext
|
|
);
|
|
|
|
_IRQL_requires_max_(DISPATCH_LEVEL)
|
|
FORCEINLINE
|
|
VOID
|
|
WdfDmaTransactionSetTransferCompleteCallback(
|
|
_In_
|
|
WDFDMATRANSACTION DmaTransaction,
|
|
_In_opt_
|
|
PFN_WDF_DMA_TRANSACTION_DMA_TRANSFER_COMPLETE DmaCompletionRoutine,
|
|
_In_opt_
|
|
PVOID DmaCompletionContext
|
|
)
|
|
{
|
|
((PFN_WDFDMATRANSACTIONSETTRANSFERCOMPLETECALLBACK) WdfFunctions[WdfDmaTransactionSetTransferCompleteCallbackTableIndex])(WdfDriverGlobals, DmaTransaction, DmaCompletionRoutine, DmaCompletionContext);
|
|
}
|
|
|
|
//
|
|
// WDF Function: WdfDmaTransactionSetImmediateExecution
|
|
//
|
|
typedef
|
|
_IRQL_requires_max_(DISPATCH_LEVEL)
|
|
WDFAPI
|
|
VOID
|
|
(STDCALL *PFN_WDFDMATRANSACTIONSETIMMEDIATEEXECUTION)(
|
|
_In_
|
|
PWDF_DRIVER_GLOBALS DriverGlobals,
|
|
_In_
|
|
WDFDMATRANSACTION DmaTransaction,
|
|
_In_
|
|
BOOLEAN UseImmediateExecution
|
|
);
|
|
|
|
_IRQL_requires_max_(DISPATCH_LEVEL)
|
|
FORCEINLINE
|
|
VOID
|
|
WdfDmaTransactionSetImmediateExecution(
|
|
_In_
|
|
WDFDMATRANSACTION DmaTransaction,
|
|
_In_
|
|
BOOLEAN UseImmediateExecution
|
|
)
|
|
{
|
|
((PFN_WDFDMATRANSACTIONSETIMMEDIATEEXECUTION) WdfFunctions[WdfDmaTransactionSetImmediateExecutionTableIndex])(WdfDriverGlobals, DmaTransaction, UseImmediateExecution);
|
|
}
|
|
|
|
//
|
|
// WDF Function: WdfDmaTransactionAllocateResources
|
|
//
|
|
typedef
|
|
_IRQL_requires_max_(DISPATCH_LEVEL)
|
|
WDFAPI
|
|
NTSTATUS
|
|
(STDCALL *PFN_WDFDMATRANSACTIONALLOCATERESOURCES)(
|
|
_In_
|
|
PWDF_DRIVER_GLOBALS DriverGlobals,
|
|
_In_
|
|
WDFDMATRANSACTION DmaTransaction,
|
|
_In_
|
|
WDF_DMA_DIRECTION DmaDirection,
|
|
_In_
|
|
ULONG RequiredMapRegisters,
|
|
_In_
|
|
PFN_WDF_RESERVE_DMA EvtReserveDmaFunction,
|
|
_In_
|
|
PVOID EvtReserveDmaContext
|
|
);
|
|
|
|
_IRQL_requires_max_(DISPATCH_LEVEL)
|
|
FORCEINLINE
|
|
NTSTATUS
|
|
WdfDmaTransactionAllocateResources(
|
|
_In_
|
|
WDFDMATRANSACTION DmaTransaction,
|
|
_In_
|
|
WDF_DMA_DIRECTION DmaDirection,
|
|
_In_
|
|
ULONG RequiredMapRegisters,
|
|
_In_
|
|
PFN_WDF_RESERVE_DMA EvtReserveDmaFunction,
|
|
_In_
|
|
PVOID EvtReserveDmaContext
|
|
)
|
|
{
|
|
return ((PFN_WDFDMATRANSACTIONALLOCATERESOURCES) WdfFunctions[WdfDmaTransactionAllocateResourcesTableIndex])(WdfDriverGlobals, DmaTransaction, DmaDirection, RequiredMapRegisters, EvtReserveDmaFunction, EvtReserveDmaContext);
|
|
}
|
|
|
|
//
|
|
// WDF Function: WdfDmaTransactionSetDeviceAddressOffset
|
|
//
|
|
typedef
|
|
_IRQL_requires_max_(DISPATCH_LEVEL)
|
|
WDFAPI
|
|
VOID
|
|
(STDCALL *PFN_WDFDMATRANSACTIONSETDEVICEADDRESSOFFSET)(
|
|
_In_
|
|
PWDF_DRIVER_GLOBALS DriverGlobals,
|
|
_In_
|
|
WDFDMATRANSACTION DmaTransaction,
|
|
_In_
|
|
ULONG Offset
|
|
);
|
|
|
|
_IRQL_requires_max_(DISPATCH_LEVEL)
|
|
FORCEINLINE
|
|
VOID
|
|
WdfDmaTransactionSetDeviceAddressOffset(
|
|
_In_
|
|
WDFDMATRANSACTION DmaTransaction,
|
|
_In_
|
|
ULONG Offset
|
|
)
|
|
{
|
|
((PFN_WDFDMATRANSACTIONSETDEVICEADDRESSOFFSET) WdfFunctions[WdfDmaTransactionSetDeviceAddressOffsetTableIndex])(WdfDriverGlobals, DmaTransaction, Offset);
|
|
}
|
|
|
|
//
|
|
// WDF Function: WdfDmaTransactionFreeResources
|
|
//
|
|
typedef
|
|
_IRQL_requires_max_(DISPATCH_LEVEL)
|
|
WDFAPI
|
|
VOID
|
|
(STDCALL *PFN_WDFDMATRANSACTIONFREERESOURCES)(
|
|
_In_
|
|
PWDF_DRIVER_GLOBALS DriverGlobals,
|
|
_In_
|
|
WDFDMATRANSACTION DmaTransaction
|
|
);
|
|
|
|
_IRQL_requires_max_(DISPATCH_LEVEL)
|
|
FORCEINLINE
|
|
VOID
|
|
WdfDmaTransactionFreeResources(
|
|
_In_
|
|
WDFDMATRANSACTION DmaTransaction
|
|
)
|
|
{
|
|
((PFN_WDFDMATRANSACTIONFREERESOURCES) WdfFunctions[WdfDmaTransactionFreeResourcesTableIndex])(WdfDriverGlobals, DmaTransaction);
|
|
}
|
|
|
|
//
|
|
// WDF Function: WdfDmaTransactionCancel
|
|
//
|
|
typedef
|
|
_IRQL_requires_max_(DISPATCH_LEVEL)
|
|
WDFAPI
|
|
BOOLEAN
|
|
(STDCALL *PFN_WDFDMATRANSACTIONCANCEL)(
|
|
_In_
|
|
PWDF_DRIVER_GLOBALS DriverGlobals,
|
|
_In_
|
|
WDFDMATRANSACTION DmaTransaction
|
|
);
|
|
|
|
_IRQL_requires_max_(DISPATCH_LEVEL)
|
|
FORCEINLINE
|
|
BOOLEAN
|
|
WdfDmaTransactionCancel(
|
|
_In_
|
|
WDFDMATRANSACTION DmaTransaction
|
|
)
|
|
{
|
|
return ((PFN_WDFDMATRANSACTIONCANCEL) WdfFunctions[WdfDmaTransactionCancelTableIndex])(WdfDriverGlobals, DmaTransaction);
|
|
}
|
|
|
|
//
|
|
// WDF Function: WdfDmaTransactionWdmGetTransferContext
|
|
//
|
|
typedef
|
|
_IRQL_requires_max_(DISPATCH_LEVEL)
|
|
WDFAPI
|
|
PVOID
|
|
(STDCALL *PFN_WDFDMATRANSACTIONWDMGETTRANSFERCONTEXT)(
|
|
_In_
|
|
PWDF_DRIVER_GLOBALS DriverGlobals,
|
|
_In_
|
|
WDFDMATRANSACTION DmaTransaction
|
|
);
|
|
|
|
_IRQL_requires_max_(DISPATCH_LEVEL)
|
|
FORCEINLINE
|
|
PVOID
|
|
WdfDmaTransactionWdmGetTransferContext(
|
|
_In_
|
|
WDFDMATRANSACTION DmaTransaction
|
|
)
|
|
{
|
|
return ((PFN_WDFDMATRANSACTIONWDMGETTRANSFERCONTEXT) WdfFunctions[WdfDmaTransactionWdmGetTransferContextTableIndex])(WdfDriverGlobals, DmaTransaction);
|
|
}
|
|
|
|
//
|
|
// WDF Function: WdfDmaTransactionStopSystemTransfer
|
|
//
|
|
typedef
|
|
_IRQL_requires_max_(DISPATCH_LEVEL)
|
|
WDFAPI
|
|
VOID
|
|
(STDCALL *PFN_WDFDMATRANSACTIONSTOPSYSTEMTRANSFER)(
|
|
_In_
|
|
PWDF_DRIVER_GLOBALS DriverGlobals,
|
|
_In_
|
|
WDFDMATRANSACTION DmaTransaction
|
|
);
|
|
|
|
_IRQL_requires_max_(DISPATCH_LEVEL)
|
|
FORCEINLINE
|
|
VOID
|
|
WdfDmaTransactionStopSystemTransfer(
|
|
_In_
|
|
WDFDMATRANSACTION DmaTransaction
|
|
)
|
|
{
|
|
((PFN_WDFDMATRANSACTIONSTOPSYSTEMTRANSFER) WdfFunctions[WdfDmaTransactionStopSystemTransferTableIndex])(WdfDriverGlobals, DmaTransaction);
|
|
}
|
|
|
|
|
|
|
|
#endif // (NTDDI_VERSION >= NTDDI_WIN2K)
|
|
|
|
|
|
WDF_EXTERN_C_END
|
|
|
|
#endif // _WDFDMATRANSACTION_H_
|
|
|