12#define TraceEvents(a,b,c,d,e) UNREFERENCED_PARAMETER(d);
30 m_Irp->CompleteRequest();
92 "UMDF completion routine can't be invoked selectively on Success/Error/Cancel",
97 m_Irp->SetCompletionRoutine(
169#pragma prefast(suppress:__WARNING_MUST_USE, "we convert all Win32 errors into a generic failure currently")
181 "Failed to create event, error: %!WINERROR!, "
182 "returning %!STATUS!",
213 m_Irp->CopyCurrentIrpStackLocationToNext();
222 IWudfIoIrp * pIoIrp =
NULL;
223 IWudfPnpIrp * pPnpIrp =
NULL;
234 UMINT::WDF_REQUEST_TYPE
type;
239 type = (UMINT::WDF_REQUEST_TYPE) pIoIrp->GetType();
241 case UMINT::WdfRequestCreate:
244 case UMINT::WdfRequestCleanup:
247 case UMINT::WdfRequestRead:
250 case UMINT::WdfRequestWrite:
253 case UMINT::WdfRequestDeviceIoControl:
256 case UMINT::WdfRequestClose:
259 case UMINT::WdfRequestInternalIoctl:
262 case UMINT::WdfRequestFlushBuffers:
265 case UMINT::WdfRequestQueryInformation:
268 case UMINT::WdfRequestSetInformation:
271 case UMINT::WdfRequestUsb:
272 case UMINT::WdfRequestOther:
275 FX_VERIFY(INTERNAL, TRAPMSG(
"The request type is not expected"));
302 IWudfPnpIrp * pPnpIrp =
NULL;
303 IWudfIoIrp * pIoIrp =
NULL;
307 minorFunction = pPnpIrp->GetMinorFunction();
325 return minorFunction;
333 IWudfIoIrp * pIoIrp =
NULL;
340 requestorMode = pIoIrp->GetRequestorMode();
343 return requestorMode;
395 FX_VERIFY(INTERNAL, TRAPMSG(
"Common code using io stack location directly"));
411 m_Irp->SkipCurrentIrpStackLocation();
424 m_Irp->MarkIrpPending();
438 return m_Irp->PendingReturned();
452 m_Irp->PropagatePendingReturned();
470 return m_Irp->GetStatus();
516 return m_Irp->GetInformation();
528 FX_VERIFY(INTERNAL, TRAPMSG(
"Not implemented"));
538 return m_Irp->GetListEntry();
546 IWudfIoIrp * ioIrp =
NULL;
557 hr = ioIrp->RetrieveBuffers(
NULL,
567 hr = ioIrp->RetrieveBuffers(
NULL,
574 hr = ioIrp->RetrieveBuffers(
NULL,
581 FX_VERIFY(INTERNAL, TRAPMSG(
"Not implemented"));
597 IWudfIoIrp * ioIrp =
NULL;
605 hr = ioIrp->RetrieveBuffers(
NULL,
612 FX_VERIFY(INTERNAL, TRAPMSG(
"Not implemented"));
646 hr = ioIrp->RetrieveBuffers(
NULL,
678 return systemPwrStateContext;
700 devicePowerState =
GetPnpIrp()->GetPowerStateDeviceState();
702 return devicePowerState;
712 systemPowerState =
GetPnpIrp()->GetPowerStateSystemState();
714 return systemPowerState;
724 powerAction =
GetPnpIrp()->GetPowerAction();
734 FX_VERIFY(INTERNAL, TRAPMSG(
"To be implemented"));
749 FX_VERIFY(INTERNAL, TRAPMSG(
"To be implemented"));
758 FX_VERIFY(INTERNAL, TRAPMSG(
"To be implemented"));
768 FX_VERIFY(INTERNAL, TRAPMSG(
"To be implemented"));
778 FX_VERIFY(INTERNAL, TRAPMSG(
"To be implemented"));
788 FX_VERIFY(INTERNAL, TRAPMSG(
"To be implemented"));
804 FX_VERIFY(INTERNAL, TRAPMSG(
"To be implemented"));
814 FX_VERIFY(INTERNAL, TRAPMSG(
"To be implemented"));
825 FX_VERIFY(INTERNAL, TRAPMSG(
"To be implemented"));
833 FX_VERIFY(INTERNAL, TRAPMSG(
"To be implemented"));
846 IWudfPnpIrp * pnpIrp =
NULL;
854 pnpIrp =
static_cast<IWudfPnpIrp *
>(
m_Irp);
856 res = pnpIrp->GetParameterAllocatedResources();
873 FX_VERIFY(INTERNAL, TRAPMSG(
"Not implemented"));
880 IWudfPnpIrp * pnpIrp =
NULL;
888 pnpIrp =
static_cast<IWudfPnpIrp *
>(
m_Irp);
890 res = pnpIrp->GetParameterAllocatedResourcesTranslated();
901 FX_VERIFY(INTERNAL, TRAPMSG(
"Not implemented"));
909 IWudfIoIrp * pIoIrp =
NULL;
917 UMINT::WDF_REQUEST_TYPE
type;
924 type = UMINT::WdfRequestCreate;
927 type = UMINT::WdfRequestCleanup;
930 type = UMINT::WdfRequestRead;
933 type = UMINT::WdfRequestWrite;
936 type = UMINT::WdfRequestDeviceIoControl;
939 type = UMINT::WdfRequestClose;
942 type = UMINT::WdfRequestInternalIoctl;
945 type = UMINT::WdfRequestFlushBuffers;
948 type = UMINT::WdfRequestQueryInformation;
951 type = UMINT::WdfRequestSetInformation;
954 FX_VERIFY(INTERNAL, TRAPMSG(
"The request type is not expected"));
955 type = UMINT::WdfRequestUndefined;
958 pIoIrp->SetTypeForNextStackLocation(
type);
962 FX_VERIFY(INTERNAL, TRAPMSG(
"Not expected"));
971 FX_VERIFY(INTERNAL, TRAPMSG(
"Not supported"));
978 FX_VERIFY(INTERNAL, TRAPMSG(
"Not implemented"));
987 FX_VERIFY(INTERNAL, TRAPMSG(
"Not implemented"));
996 FX_VERIFY(INTERNAL, TRAPMSG(
"Not implemented"));
1009 FX_VERIFY(INTERNAL, TRAPMSG(
"Not implemented"));
1018 IWudfPnpIrp * pnpIrp =
NULL;
1026 pnpIrp =
static_cast<IWudfPnpIrp *
>(
m_Irp);
1028 powerState = pnpIrp->GetPowerState();
1039 FX_VERIFY(INTERNAL, TRAPMSG(
"Not implemented"));
1073 PUMDF_VERSION_DATA driverVersion =
deviceStack->GetMinDriverVersion();
1075 BOOL preserveCompat =
1076 deviceStack->ShouldPreserveIrpCompletionStatusCompatibility();
1078 return CHostFxUtil::NtStatusFromHr(
1080 driverVersion->MajorNumber,
1081 driverVersion->MinorNumber,
1105 hr =
Device->GetDeviceStack()->AllocateIoIrp(
Device->GetDeviceObject(),
1113 "WDFDEVICE 0x%p Failed to allocate I/O request %!STATUS!",
1117 Device->GetDriverGlobals()->Public.DriverName);
1121 Device->GetDriverGlobals()->Public.DriverName);
1135 IWudfPnpIrp * pQueryCapsIrp =
GetPnpIrp();
1138 deviceCapabilities = pQueryCapsIrp->GetDeviceCapabilities();
1140 return deviceCapabilities;
1149 FX_VERIFY(INTERNAL, TRAPMSG(
"Not implemented"));
1161 FX_VERIFY(INTERNAL, TRAPMSG(
"To be implemented"));
1170 FX_VERIFY(INTERNAL, TRAPMSG(
"To be implemented"));
1179 FX_VERIFY(INTERNAL, TRAPMSG(
"To be implemented"));
1186 m_Irp->ClearNextStackLocation();
1211 FX_VERIFY(INTERNAL, TRAPMSG(
"To be implemented"));
1230 FX_VERIFY(INTERNAL, TRAPMSG(
"To be implemented"));
1239 m_Irp->SetNextIrpStackLocation();
1300 FX_VERIFY(INTERNAL, TRAPMSG(
"To be implemented"));
1308 FX_VERIFY(INTERNAL, TRAPMSG(
"To be implemented"));
1319 FX_VERIFY(INTERNAL, TRAPMSG(
"To be implemented"));
1348 FX_VERIFY(INTERNAL, TRAPMSG(
"To be implemented"));
1357 FX_VERIFY(INTERNAL, TRAPMSG(
"To be implemented"));
1369 FX_VERIFY(INTERNAL, TRAPMSG(
"To be implemented"));
1380 FX_VERIFY(INTERNAL, TRAPMSG(
"To be implemented"));
1394 FX_VERIFY(INTERNAL, TRAPMSG(
"To be implemented"));
1407 FX_VERIFY(INTERNAL, TRAPMSG(
"To be implemented"));
1417 FX_VERIFY(INTERNAL, TRAPMSG(
"To be implemented"));
1429 FX_VERIFY(INTERNAL, TRAPMSG(
"To be implemented"));
1442 FX_VERIFY(INTERNAL, TRAPMSG(
"To be implemented"));
1455 FX_VERIFY(INTERNAL, TRAPMSG(
"To be implemented"));
1464 IWudfIoIrp * pIoIrp =
NULL;
1470 return pIoIrp->GetFile();
1478 IWudfIoIrp * ioIrp =
NULL;
1479 ULONG ioControlCode = 0;
1483 ioIrp->GetDeviceIoControlParameters(&ioControlCode,
NULL,
NULL);
1486 return ioControlCode;
1508 IWudfIoIrp * ioIrp =
NULL;
1509 ULONG outputBufferLength;
1512 ioIrp->GetDeviceIoControlParameters(
NULL,
NULL, &outputBufferLength);
1514 return outputBufferLength;
1522 IWudfIoIrp * ioIrp =
NULL;
1523 ULONG inputBufferLength;
1526 ioIrp->GetDeviceIoControlParameters(
NULL, &inputBufferLength,
NULL);
1528 return inputBufferLength;
1538 FX_VERIFY(INTERNAL, TRAPMSG(
"To be implemented"));
1551 FX_VERIFY(INTERNAL, TRAPMSG(
"To be implemented"));
1585 m_Irp->ClearNextStackLocation();
1617 FX_VERIFY(INTERNAL, TRAPMSG(
"To be implemented"));
1626 FX_VERIFY(INTERNAL, TRAPMSG(
"To be implemented"));
1635 FX_VERIFY(INTERNAL, TRAPMSG(
"To be implemented"));
1668 FX_VERIFY(INTERNAL, TRAPMSG(
"To be implemented"));
1677 FX_VERIFY(INTERNAL, TRAPMSG(
"To be implemented"));
1686 FX_VERIFY(INTERNAL, TRAPMSG(
"To be implemented"));
1703 ioIrp->GetCreateParameters(
1705 &
Parameters->Parameters.Create.FileAttributes,
1716 ioIrp->GetWriteParameters((
ULONG*)&
Parameters->Parameters.Write.Length,
1721 ioIrp->GetDeviceIoControlParameters(
1722 &
Parameters->Parameters.DeviceIoControl.IoControlCode,
1728 FX_VERIFY(INTERNAL, TRAPMSG(
"Not expected"));
1792 return static_cast<IWudfIoIrp*
>(
m_Irp);
1801 IWudfPnpIrp* pPnpIrp;
1812 return static_cast<IWudfPnpIrp*
>(
m_Irp);
UCHAR GetMajorFunction(VOID)
ULONG GetParameterWriteLength(VOID)
MdEThread GetThread(VOID)
POWER_ACTION GetParameterPowerShutdownType()
PDEVICE_CAPABILITIES GetParameterDeviceCapabilities()
DEVICE_RELATION_TYPE GetParameterQDRType()
SYSTEM_POWER_STATE_CONTEXT GetParameterPowerSystemPowerStateContext()
VOID CompleteRequest(__in_opt CCHAR PriorityBoost=IO_NO_INCREMENT)
MdDeviceObject GetDeviceObject(VOID)
VOID InitNextStackUsingStack(__in FxIrp *Irp)
VOID SetParameterUsageNotificationInPath(__in BOOLEAN InPath)
MdCancelRoutine SetCancelRoutine(__in_opt MdCancelRoutine CancelRoutine)
IWudfIoIrp * GetIoIrp(VOID)
PCM_RESOURCE_LIST GetParameterAllocatedResources()
LCID GetParameterQueryDeviceTextLocaleId()
UCHAR GetCurrentStackFlags(VOID)
DEVICE_TEXT_TYPE GetParameterQueryDeviceTextType()
BOOLEAN GetParameterUsageNotificationInPath()
PVOID * GetNextStackParameterOthersArgument2Pointer()
CHECK_RETURN_IF_USER_MODE NTSTATUS SendIrpSynchronously(__in MdDeviceObject DeviceObject)
ULONG GetParameterIoctlCodeBufferMethod(VOID)
VOID SetMinorFunction(__in UCHAR MinorFunction)
PVOID * GetNextStackParameterOthersArgument4Pointer()
PMDL * GetMdlAddressPointer()
ULONG GetParameterIoctlCode(VOID)
VOID SetSystemBuffer(__in PVOID Value)
static _Must_inspect_result_ MdIrp AllocateIrp(_In_ CCHAR StackSize, _In_opt_ FxDevice *Device=NULL)
VOID ClearNextStack(VOID)
VOID SetCompletionRoutineEx(__in MdDeviceObject DeviceObject, __in MdCompletionRoutine CompletionRoutine, __in PVOID Context, __in BOOLEAN InvokeOnSuccess=TRUE, __in BOOLEAN InvokeOnError=TRUE, __in BOOLEAN InvokeOnCancel=TRUE)
KPROCESSOR_MODE GetRequestorMode(VOID)
BOOLEAN PendingReturned()
CCHAR GetCurrentIrpStackLocationIndex()
VOID SetCancel(__in BOOLEAN Cancel)
MdCompletionRoutine GetNextCompletionRoutine(VOID)
VOID SetMajorFunction(__in UCHAR MajorFunction)
VOID SetParameterIoctlCode(__in ULONG DeviceIoControlCode)
ULONG GetParameterIoctlOutputBufferLength(VOID)
POWER_STATE_TYPE GetParameterPowerType()
BOOLEAN HasStack(_In_ UCHAR StackCount)
MdFileObject GetCurrentStackFileObject(VOID)
BUS_QUERY_ID_TYPE GetParameterQueryIdType()
POWER_STATE GetParameterPowerState()
static NTSTATUS STDCALL _IrpSynchronousCompletion(__in MdDeviceObject DeviceObject, __in MdIrp OriginalIrp, __in PVOID Context)
VOID SetNextIrpStackLocation(VOID)
USHORT GetParameterQueryInterfaceSize()
MdFileObject GetFileObject(VOID)
USHORT GetParameterQueryInterfaceVersion()
PCM_RESOURCE_LIST GetParameterAllocatedResourcesTranslated()
VOID SkipCurrentIrpStackLocation(VOID)
VOID SetNextStackFlags(__in UCHAR Flags)
PVOID GetParameterQueryInterfaceInterfaceSpecificData()
VOID PropagatePendingReturned(VOID)
VOID SetStatus(__in NTSTATUS Status)
IWudfPnpIrp * GetPnpIrp(VOID)
SYSTEM_POWER_STATE GetParameterPowerStateSystemState()
VOID CopyToNextIrpStackLocation(__in PIO_STACK_LOCATION Stack)
const GUID * GetParameterQueryInterfaceType()
VOID SetNextParameterWriteLength(__in ULONG IoLength)
PVOID * GetNextStackParameterOthersArgument1Pointer()
VOID SetParameterAllocatedResourcesTranslated(__in PCM_RESOURCE_LIST AllocatedResourcesTranslated)
VOID SetNextStackFileObject(_In_ MdFileObject FileObject)
VOID SetParameterIoctlInputBufferLength(__in ULONG InputBufferLength)
PINTERFACE GetParameterQueryInterfaceInterface()
DEVICE_POWER_STATE GetParameterPowerStateDeviceState()
VOID SetParameterIoctlType3InputBuffer(__in PVOID Type3InputBuffer)
PIO_STACK_LOCATION GetCurrentIrpStackLocation(VOID)
PVOID GetContext(__in ULONG Index)
ULONG GetDriverContextSize()
static MdIrp GetIrpFromListEntry(__in PLIST_ENTRY Ple)
BOOLEAN GetParameterSetLockLock()
VOID CopyCurrentIrpStackLocationToNext(VOID)
VOID CopyParameters(_Out_ PWDF_REQUEST_PARAMETERS Parameters)
ULONG GetCurrentFlags(VOID)
VOID SetInformation(__in ULONG_PTR Information)
PIO_STATUS_BLOCK GetStatusBlock(VOID)
PIO_STACK_LOCATION GetNextIrpStackLocation(VOID)
BOOLEAN IsCurrentIrpStackLocationValid(VOID)
VOID SetCompletionRoutine(__in MdCompletionRoutine CompletionRoutine, __in PVOID Context, __in BOOLEAN InvokeOnSuccess=TRUE, __in BOOLEAN InvokeOnError=TRUE, __in BOOLEAN InvokeOnCancel=TRUE)
VOID SetUserBuffer(__in PVOID Value)
PVOID GetCurrentParametersPointer(VOID)
NTSTATUS PoCallDriver(__in MdDeviceObject DeviceObject)
VOID SetParameterDeviceCapabilities(__in PDEVICE_CAPABILITIES DeviceCapabilities)
UCHAR GetMinorFunction(VOID)
VOID SetParameterIoctlOutputBufferLength(__in ULONG OutputBufferLength)
VOID SetContext(__in ULONG Index, __in PVOID Value)
ULONG GetParameterIoctlInputBufferLength(VOID)
PVOID GetParameterIoctlType3InputBuffer(VOID)
VOID ClearNextStackLocation(VOID)
VOID SetNextStackParameterOthersArgument1(__in PVOID Argument1)
VOID SetParameterAllocatedResources(__in PCM_RESOURCE_LIST AllocatedResources)
ULONG_PTR GetInformation()
VOID SetFlags(__in ULONG Flags)
NTSTATUS CallDriver(__in MdDeviceObject DeviceObject)
VOID SetCurrentDeviceObject(__in MdDeviceObject DeviceObject)
VOID CopyStatus(_Out_ PIO_STATUS_BLOCK StatusBlock)
VOID SetNextParameterWriteByteOffsetQuadPart(__in LONGLONG DeviceOffset)
ULONG GetParameterReadLength(VOID)
static _Must_inspect_result_ NTSTATUS RequestPowerIrp(__in MdDeviceObject DeviceObject, __in UCHAR MinorFunction, __in POWER_STATE PowerState, __in MdRequestPowerComplete CompletionFunction, __in PVOID Context)
LONGLONG GetParameterWriteByteOffsetQuadPart()
VOID Reuse(__in NTSTATUS Status=STATUS_SUCCESS)
BOOLEAN GetNextStackParameterUsageNotificationInPath()
DEVICE_USAGE_NOTIFICATION_TYPE GetParameterUsageNotificationType()
BOOLEAN Is32bitProcess(VOID)
VOID SetMdlAddress(__in PMDL Value)
#define NT_SUCCESS(StatCode)
FX_VERIFY(INTERNAL, CHECK_NOT_NULL(LoaderInterface->pIWudfHost))
DoTraceLevelMessage(pFxDriverGlobals, TRACE_LEVEL_VERBOSE, TRACINGPNP, "Enter, WDFDEVICE %p", Device)
MxDeviceObject deviceObject
IWudfDeviceStack * deviceStack
FX_VERIFY_WITH_NAME(DRIVER(BadArgument, TODO), CHECK(ERROR_STRING_HW_ACCESS_NOT_ALLOWED,(pDevice->IsDirectHardwareAccessAllowed()==TRUE)), DriverGlobals->DriverName)
#define TraceEvents(a, b, c, d, e)
IWudfHost2 * g_IWudfHost2
GLuint GLuint GLsizei GLenum type
GLuint GLsizei GLsizei * length
PFILE_OBJECT MdFileObject
WUDF_DRIVER_CANCEL * MdCancelRoutine
WUDF_IO_COMPLETION_ROUTINE * MdCompletionRoutine
#define _Must_inspect_result_
#define UNREFERENCED_PARAMETER(P)
enum _POWER_STATE_TYPE POWER_STATE_TYPE
enum _DEVICE_POWER_STATE DEVICE_POWER_STATE
enum _SYSTEM_POWER_STATE SYSTEM_POWER_STATE
#define IRP_MJ_DEVICE_CONTROL
#define IRP_MJ_SET_INFORMATION
#define IRP_MJ_QUERY_INFORMATION
#define STATUS_MORE_PROCESSING_REQUIRED
#define TRACE_LEVEL_ERROR
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
BOOL WINAPI DECLSPEC_HOTPATCH SetEvent(IN HANDLE hEvent)
#define STATUS_INSUFFICIENT_RESOURCES
_Must_inspect_result_ _In_ WDFDEVICE Device
_In_ WDFCOLLECTION _In_ ULONG Index
_In_ PDEVICE_OBJECT DeviceObject
_In_ WDFREQUEST _In_ WDFFILEOBJECT FileObject
_Must_inspect_result_ _In_ PWDFDEVICE_INIT _In_ WDF_DEVICE_POWER_STATE PowerState
_In_ UCHAR _In_ UCHAR MinorFunction
_Must_inspect_result_ _In_ WDFQUEUE _In_opt_ WDFREQUEST _In_opt_ WDFFILEOBJECT _Inout_opt_ PWDF_REQUEST_PARAMETERS Parameters
_In_ WDFREQUEST _In_ size_t OutputBufferLength
_Must_inspect_result_ _In_ WDFIOTARGET _In_opt_ WDFREQUEST _In_opt_ PWDF_MEMORY_DESCRIPTOR _In_opt_ PLONGLONG DeviceOffset
_Must_inspect_result_ _In_ WDFKEY _In_ PCUNICODE_STRING _Out_opt_ PUSHORT _Inout_opt_ PUNICODE_STRING Value
_In_ WDFREQUEST _In_ NTSTATUS _In_ CCHAR PriorityBoost
_In_ WDFREQUEST _In_ PIO_STACK_LOCATION Stack
_In_ WDFREQUEST _In_ NTSTATUS _In_ ULONG_PTR Information
_In_ WDFREQUEST _In_opt_ PFN_WDF_REQUEST_COMPLETION_ROUTINE CompletionRoutine
DWORD WINAPI GetLastError(void)
_Must_inspect_result_ _In_ ULONG Flags
_IRQL_requires_same_ _In_opt_ PVOID Argument1
_In_opt_ PDRIVER_CANCEL CancelRoutine
_In_ PIRP _In_ PIO_COMPLETION_ROUTINE _In_opt_ PVOID _In_ BOOLEAN _In_ BOOLEAN InvokeOnError
_In_ PIRP _In_ PIO_COMPLETION_ROUTINE _In_opt_ PVOID _In_ BOOLEAN _In_ BOOLEAN _In_ BOOLEAN InvokeOnCancel
_In_ PIRP _In_ PIO_COMPLETION_ROUTINE _In_opt_ PVOID _In_ BOOLEAN InvokeOnSuccess
enum _BUS_QUERY_ID_TYPE BUS_QUERY_ID_TYPE
#define IRP_MJ_FLUSH_BUFFERS
#define IRP_MJ_INTERNAL_DEVICE_CONTROL
enum _DEVICE_TEXT_TYPE DEVICE_TEXT_TYPE
enum _DEVICE_RELATION_TYPE DEVICE_RELATION_TYPE
enum _DEVICE_USAGE_NOTIFICATION_TYPE DEVICE_USAGE_NOTIFICATION_TYPE
#define IRP_MJ_MAXIMUM_FUNCTION
@ DeviceUsageTypeUndefined
_In_ UCHAR _In_ POWER_STATE _In_opt_ PREQUEST_POWER_COMPLETE CompletionFunction
REQUEST_POWER_COMPLETE * PREQUEST_POWER_COMPLETE