33 #define WDF_EXTERN_C extern "C"
34 #define WDF_EXTERN_C_START extern "C" {
35 #define WDF_EXTERN_C_END }
38 #define WDF_EXTERN_C_START
39 #define WDF_EXTERN_C_END
51#if (NTDDI_VERSION >= NTDDI_WIN2K)
485#ifndef WDF_DEVICE_NO_WDMSEC_H
490#define WDF_S0_IDLE_ENABLED_VALUE_NAME L"IdleInWorkingState"
491#define WDF_SX_WAKE_ENABLED_VALUE_NAME L"WakeFromSleepState"
492#define WDF_S0_IDLE_DEFAULT_VALUE_NAME L"WdfDefaultIdleInWorkingState"
493#define WDF_SX_WAKE_DEFAULT_VALUE_NAME L"WdfDefaultWakeFromSleepState"
543EVT_WDF_DEVICE_FILE_CREATE(
634 FileEventCallbacks->EvtDeviceFileCreate = EvtDeviceFileCreate;
635 FileEventCallbacks->EvtFileClose = EvtFileClose;
636 FileEventCallbacks->EvtFileCleanup = EvtFileCleanup;
777EVT_WDF_DEVICE_PNP_STATE_CHANGE_NOTIFICATION(
792EVT_WDF_DEVICE_POWER_STATE_CHANGE_NOTIFICATION(
807EVT_WDF_DEVICE_POWER_POLICY_STATE_CHANGE_NOTIFICATION(
816#define IdleTimeoutDefaultValue ((ULONG) IdleTimeoutDefaultConstant)
824EVT_WDF_DEVICE_D0_ENTRY(
839EVT_WDF_DEVICE_D0_ENTRY_POST_INTERRUPTS_ENABLED(
854EVT_WDF_DEVICE_D0_EXIT(
869EVT_WDF_DEVICE_D0_EXIT_PRE_INTERRUPTS_DISABLED(
884EVT_WDF_DEVICE_PREPARE_HARDWARE(
901EVT_WDF_DEVICE_RELEASE_HARDWARE(
916EVT_WDF_DEVICE_SELF_MANAGED_IO_CLEANUP(
929EVT_WDF_DEVICE_SELF_MANAGED_IO_FLUSH(
942EVT_WDF_DEVICE_SELF_MANAGED_IO_INIT(
955EVT_WDF_DEVICE_SELF_MANAGED_IO_SUSPEND(
968EVT_WDF_DEVICE_SELF_MANAGED_IO_RESTART(
981EVT_WDF_DEVICE_QUERY_STOP(
994EVT_WDF_DEVICE_QUERY_REMOVE(
1007EVT_WDF_DEVICE_SURPRISE_REMOVAL(
1020EVT_WDF_DEVICE_USAGE_NOTIFICATION(
1037EVT_WDF_DEVICE_USAGE_NOTIFICATION_EX(
1054EVT_WDF_DEVICE_RELATIONS_QUERY(
1069EVT_WDF_DEVICE_ARM_WAKE_FROM_S0(
1082EVT_WDF_DEVICE_ARM_WAKE_FROM_SX(
1095EVT_WDF_DEVICE_ARM_WAKE_FROM_SX_WITH_REASON(
1112EVT_WDF_DEVICE_DISARM_WAKE_FROM_S0(
1125EVT_WDF_DEVICE_DISARM_WAKE_FROM_SX(
1138EVT_WDF_DEVICE_WAKE_FROM_S0_TRIGGERED(
1151EVT_WDF_DEVICE_WAKE_FROM_SX_TRIGGERED(
1229 return State & ~WdfDevStateNP;
1557 Caps->Address = (
ULONG) -1;
1558 Caps->UINumber = (
ULONG) -1;
1624 for (
i = 0;
i <
sizeof(Caps->DeviceState)/
sizeof(Caps->DeviceState[1]);
i++) {
1631 Caps->D1Latency = (
ULONG) -1;
1632 Caps->D2Latency = (
ULONG) -1;
1633 Caps->D3Latency = (
ULONG) -1;
1678EVT_WDFDEVICE_WDM_IRP_PREPROCESS(
1693EVT_WDFDEVICE_WDM_IRP_DISPATCH(
1721EVT_WDF_IO_IN_CALLER_CONTEXT(
1736EVT_WDFDEVICE_WDM_POST_PO_FX_REGISTER_DEVICE(
1751EVT_WDFDEVICE_WDM_PRE_PO_FX_UNREGISTER_DEVICE(
1971#define WdfDeviceStopIdle(Device, WaitForD0) \
1972 WdfDeviceStopIdleWithTag(Device, WaitForD0, NULL)
1974#define WdfDeviceStopIdleWithTag(Device, WaitForD0, Tag) \
1975 WdfDeviceStopIdleActual(Device, WaitForD0, Tag, __LINE__, __FILE__)
1977#define WdfDeviceResumeIdle(Device) \
1978 WdfDeviceResumeIdleWithTag(Device, NULL)
1980#define WdfDeviceResumeIdleWithTag(Device, Tag) \
1981 WdfDeviceResumeIdleActual(Device, Tag, __LINE__, __FILE__)
1992(
STDCALL *PFN_WDFDEVICEGETDEVICESTATE)(
2004WdfDeviceGetDeviceState(
2021(
STDCALL *PFN_WDFDEVICESETDEVICESTATE)(
2033WdfDeviceSetDeviceState(
2050(
STDCALL *PFN_WDFWDMDEVICEGETWDFDEVICEHANDLE)(
2060WdfWdmDeviceGetWdfDeviceHandle(
2075(
STDCALL *PFN_WDFDEVICEWDMGETDEVICEOBJECT)(
2085WdfDeviceWdmGetDeviceObject(
2100(
STDCALL *PFN_WDFDEVICEWDMGETATTACHEDDEVICE)(
2110WdfDeviceWdmGetAttachedDevice(
2125(
STDCALL *PFN_WDFDEVICEWDMGETPHYSICALDEVICE)(
2135WdfDeviceWdmGetPhysicalDevice(
2151(
STDCALL *PFN_WDFDEVICEWDMDISPATCHPREPROCESSEDIRP)(
2164WdfDeviceWdmDispatchPreprocessedIrp(
2182(
STDCALL *PFN_WDFDEVICEWDMDISPATCHIRP)(
2197WdfDeviceWdmDispatchIrp(
2217(
STDCALL *PFN_WDFDEVICEWDMDISPATCHIRPTOIOQUEUE)(
2234WdfDeviceWdmDispatchIrpToIoQueue(
2256(
STDCALL *PFN_WDFDEVICEADDDEPENDENTUSAGEDEVICEOBJECT)(
2269WdfDeviceAddDependentUsageDeviceObject(
2286(
STDCALL *PFN_WDFDEVICEREMOVEDEPENDENTUSAGEDEVICEOBJECT)(
2298WdfDeviceRemoveDependentUsageDeviceObject(
2316(
STDCALL *PFN_WDFDEVICEADDREMOVALRELATIONSPHYSICALDEVICE)(
2329WdfDeviceAddRemovalRelationsPhysicalDevice(
2346(
STDCALL *PFN_WDFDEVICEREMOVEREMOVALRELATIONSPHYSICALDEVICE)(
2358WdfDeviceRemoveRemovalRelationsPhysicalDevice(
2375(
STDCALL *PFN_WDFDEVICECLEARREMOVALRELATIONSDEVICES)(
2385WdfDeviceClearRemovalRelationsDevices(
2400(
STDCALL *PFN_WDFDEVICEGETDRIVER)(
2426(
STDCALL *PFN_WDFDEVICERETRIEVEDEVICENAME)(
2439WdfDeviceRetrieveDeviceName(
2457(
STDCALL *PFN_WDFDEVICEASSIGNMOFRESOURCENAME)(
2470WdfDeviceAssignMofResourceName(
2487(
STDCALL *PFN_WDFDEVICEGETIOTARGET)(
2497WdfDeviceGetIoTarget(
2512(
STDCALL *PFN_WDFDEVICEGETDEVICEPNPSTATE)(
2522WdfDeviceGetDevicePnpState(
2537(
STDCALL *PFN_WDFDEVICEGETDEVICEPOWERSTATE)(
2547WdfDeviceGetDevicePowerState(
2562(
STDCALL *PFN_WDFDEVICEGETDEVICEPOWERPOLICYSTATE)(
2572WdfDeviceGetDevicePowerPolicyState(
2588(
STDCALL *PFN_WDFDEVICEASSIGNS0IDLESETTINGS)(
2601WdfDeviceAssignS0IdleSettings(
2619(
STDCALL *PFN_WDFDEVICEASSIGNSXWAKESETTINGS)(
2632WdfDeviceAssignSxWakeSettings(
2650(
STDCALL *PFN_WDFDEVICEOPENREGISTRYKEY)(
2669WdfDeviceOpenRegistryKey(
2693(
STDCALL *PFN_WDFDEVICEOPENDEVICEMAPKEY)(
2712WdfDeviceOpenDevicemapKey(
2735(
STDCALL *PFN_WDFDEVICESETSPECIALFILESUPPORT)(
2749WdfDeviceSetSpecialFileSupport(
2768(
STDCALL *PFN_WDFDEVICESETCHARACTERISTICS)(
2780WdfDeviceSetCharacteristics(
2797(
STDCALL *PFN_WDFDEVICEGETCHARACTERISTICS)(
2807WdfDeviceGetCharacteristics(
2822(
STDCALL *PFN_WDFDEVICEGETALIGNMENTREQUIREMENT)(
2832WdfDeviceGetAlignmentRequirement(
2847(
STDCALL *PFN_WDFDEVICESETALIGNMENTREQUIREMENT)(
2859WdfDeviceSetAlignmentRequirement(
2876(
STDCALL *PFN_WDFDEVICEINITFREE)(
2901(
STDCALL *PFN_WDFDEVICEINITSETPNPPOWEREVENTCALLBACKS)(
2913WdfDeviceInitSetPnpPowerEventCallbacks(
2930(
STDCALL *PFN_WDFDEVICEINITSETPOWERPOLICYEVENTCALLBACKS)(
2942WdfDeviceInitSetPowerPolicyEventCallbacks(
2959(
STDCALL *PFN_WDFDEVICEINITSETPOWERPOLICYOWNERSHIP)(
2971WdfDeviceInitSetPowerPolicyOwnership(
2989(
STDCALL *PFN_WDFDEVICEINITREGISTERPNPSTATECHANGECALLBACK)(
3006WdfDeviceInitRegisterPnpStateChangeCallback(
3028(
STDCALL *PFN_WDFDEVICEINITREGISTERPOWERSTATECHANGECALLBACK)(
3045WdfDeviceInitRegisterPowerStateChangeCallback(
3067(
STDCALL *PFN_WDFDEVICEINITREGISTERPOWERPOLICYSTATECHANGECALLBACK)(
3084WdfDeviceInitRegisterPowerPolicyStateChangeCallback(
3105(
STDCALL *PFN_WDFDEVICEINITSETEXCLUSIVE)(
3117WdfDeviceInitSetExclusive(
3134(
STDCALL *PFN_WDFDEVICEINITSETIOTYPE)(
3146WdfDeviceInitSetIoType(
3163(
STDCALL *PFN_WDFDEVICEINITSETPOWERNOTPAGEABLE)(
3173WdfDeviceInitSetPowerNotPageable(
3188(
STDCALL *PFN_WDFDEVICEINITSETPOWERPAGEABLE)(
3198WdfDeviceInitSetPowerPageable(
3213(
STDCALL *PFN_WDFDEVICEINITSETPOWERINRUSH)(
3223WdfDeviceInitSetPowerInrush(
3238(
STDCALL *PFN_WDFDEVICEINITSETDEVICETYPE)(
3250WdfDeviceInitSetDeviceType(
3268(
STDCALL *PFN_WDFDEVICEINITASSIGNNAME)(
3281WdfDeviceInitAssignName(
3299(
STDCALL *PFN_WDFDEVICEINITASSIGNSDDLSTRING)(
3312WdfDeviceInitAssignSDDLString(
3329(
STDCALL *PFN_WDFDEVICEINITSETDEVICECLASS)(
3341WdfDeviceInitSetDeviceClass(
3358(
STDCALL *PFN_WDFDEVICEINITSETCHARACTERISTICS)(
3372WdfDeviceInitSetCharacteristics(
3391(
STDCALL *PFN_WDFDEVICEINITSETFILEOBJECTCONFIG)(
3405WdfDeviceInitSetFileObjectConfig(
3424(
STDCALL *PFN_WDFDEVICEINITSETREQUESTATTRIBUTES)(
3436WdfDeviceInitSetRequestAttributes(
3454(
STDCALL *PFN_WDFDEVICEINITASSIGNWDMIRPPREPROCESSCALLBACK)(
3474WdfDeviceInitAssignWdmIrpPreprocessCallback(
3498(
STDCALL *PFN_WDFDEVICEINITSETIOINCALLERCONTEXTCALLBACK)(
3510WdfDeviceInitSetIoInCallerContextCallback(
3527(
STDCALL *PFN_WDFDEVICEINITSETREMOVELOCKOPTIONS)(
3539WdfDeviceInitSetRemoveLockOptions(
3557(
STDCALL *PFN_WDFDEVICECREATE)(
3591(
STDCALL *PFN_WDFDEVICESETSTATICSTOPREMOVE)(
3603WdfDeviceSetStaticStopRemove(
3621(
STDCALL *PFN_WDFDEVICECREATEDEVICEINTERFACE)(
3636WdfDeviceCreateDeviceInterface(
3655(
STDCALL *PFN_WDFDEVICESETDEVICEINTERFACESTATE)(
3671WdfDeviceSetDeviceInterfaceState(
3693(
STDCALL *PFN_WDFDEVICERETRIEVEDEVICEINTERFACESTRING)(
3710WdfDeviceRetrieveDeviceInterfaceString(
3732(
STDCALL *PFN_WDFDEVICECREATESYMBOLICLINK)(
3745WdfDeviceCreateSymbolicLink(
3763(
STDCALL *PFN_WDFDEVICEQUERYPROPERTY)(
3782WdfDeviceQueryProperty(
3806(
STDCALL *PFN_WDFDEVICEALLOCANDQUERYPROPERTY)(
3826WdfDeviceAllocAndQueryProperty(
3850(
STDCALL *PFN_WDFDEVICESETPNPCAPABILITIES)(
3862WdfDeviceSetPnpCapabilities(
3879(
STDCALL *PFN_WDFDEVICESETPOWERCAPABILITIES)(
3891WdfDeviceSetPowerCapabilities(
3908(
STDCALL *PFN_WDFDEVICESETBUSINFORMATIONFORCHILDREN)(
3920WdfDeviceSetBusInformationForChildren(
3938(
STDCALL *PFN_WDFDEVICEINDICATEWAKESTATUS)(
3951WdfDeviceIndicateWakeStatus(
3968(
STDCALL *PFN_WDFDEVICESETFAILED)(
3999(
STDCALL *PFN_WDFDEVICESTOPIDLENOTRACK)(
4013WdfDeviceStopIdleNoTrack(
4030(
STDCALL *PFN_WDFDEVICERESUMEIDLENOTRACK)(
4040WdfDeviceResumeIdleNoTrack(
4057(
STDCALL *PFN_WDFDEVICESTOPIDLEACTUAL)(
4077WdfDeviceStopIdleActual(
4100(
STDCALL *PFN_WDFDEVICERESUMEIDLEACTUAL)(
4116WdfDeviceResumeIdleActual(
4137(
STDCALL *PFN_WDFDEVICEGETFILEOBJECT)(
4149WdfDeviceGetFileObject(
4167(
STDCALL *PFN_WDFDEVICEENQUEUEREQUEST)(
4180WdfDeviceEnqueueRequest(
4197(
STDCALL *PFN_WDFDEVICEGETDEFAULTQUEUE)(
4207WdfDeviceGetDefaultQueue(
4223(
STDCALL *PFN_WDFDEVICECONFIGUREREQUESTDISPATCHING)(
4239WdfDeviceConfigureRequestDispatching(
4260(
STDCALL *PFN_WDFDEVICECONFIGUREWDMIRPDISPATCHCALLBACK)(
4279WdfDeviceConfigureWdmIrpDispatchCallback(
4302(
STDCALL *PFN_WDFDEVICEGETSYSTEMPOWERACTION)(
4312WdfDeviceGetSystemPowerAction(
4328(
STDCALL *PFN_WDFDEVICEWDMASSIGNPOWERFRAMEWORKSETTINGS)(
4341WdfDeviceWdmAssignPowerFrameworkSettings(
4358(
STDCALL *PFN_WDFDEVICEINITSETRELEASEHARDWAREORDERONFAILURE)(
4370WdfDeviceInitSetReleaseHardwareOrderOnFailure(
4387(
STDCALL *PFN_WDFDEVICEINITSETIOTYPEEX)(
4399WdfDeviceInitSetIoTypeEx(
4427(
STDCALL *PFN_WDFDEVICEQUERYPROPERTYEX)(