summaryrefslogtreecommitdiff
path: root/pofx/WDF/Driver/MultiComp/driver/WdfMultiComp.h
diff options
context:
space:
mode:
authorDave Wilson <[email protected]>2015-03-17 19:50:07 -0700
committerDave Wilson <[email protected]>2015-03-17 19:50:07 -0700
commit97cf5197cf5b882b2c689d8dc2b555f2edf8f418 (patch)
tree46f3701832d70b420eb0fc0eb93261f9da45db3f /pofx/WDF/Driver/MultiComp/driver/WdfMultiComp.h
parentef1905bf1e8825bb31120dfb27e0daf3154d859a (diff)
Initial publish
Diffstat (limited to 'pofx/WDF/Driver/MultiComp/driver/WdfMultiComp.h')
-rw-r--r--pofx/WDF/Driver/MultiComp/driver/WdfMultiComp.h114
1 files changed, 114 insertions, 0 deletions
diff --git a/pofx/WDF/Driver/MultiComp/driver/WdfMultiComp.h b/pofx/WDF/Driver/MultiComp/driver/WdfMultiComp.h
new file mode 100644
index 00000000..0d56edc8
--- /dev/null
+++ b/pofx/WDF/Driver/MultiComp/driver/WdfMultiComp.h
@@ -0,0 +1,114 @@
+/*++
+
+Copyright (c) Microsoft Corporation. All rights reserved.
+
+ THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY
+ KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
+ IMPLIED WARRANTIES OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR
+ PURPOSE.
+
+Module Name:
+
+ WdfMultiComp.h
+
+Abstract:
+ Header file for the KMDF sample driver for a multi-component device.
+
+Environment:
+
+ Kernel mode
+
+--*/
+
+#if !defined(_WDFMULTICOMP_H_)
+#define _WDFMULTICOMP_H_
+
+
+#include <ntddk.h>
+#include <wdf.h>
+#include "AppInterface.h"
+#include "WdfPoFx.h"
+
+//
+// Some dummy values
+//
+#define TRANSITION_LATENCY_F1 WDF_ABS_TIMEOUT_IN_MS(5) // 5 milliseconds
+#define RESIDENCY_REQUIREMENT_F1 WDF_ABS_TIMEOUT_IN_MS(50) // 50 milliseconds
+
+//
+// This structure contains the driver's power framework settings
+//
+typedef struct _PO_FX_DEVICE_MCOMP_EXT {
+ PO_FX_DEVICE PoFxDevice;
+ PO_FX_COMPONENT AdditionalComponents[COMPONENT_COUNT-1];
+} PO_FX_DEVICE_MCOMP_EXT, *PPO_FX_DEVICE_MCOMP_EXT;
+
+//
+// This structure represents the driver's device context space
+//
+typedef struct _DEVICE_EXTENSION {
+ //
+ // Array of component queues
+ //
+ WDFQUEUE Queue[COMPONENT_COUNT];
+
+ //
+ // POHANDLE representing the device's registration with the power framework
+ //
+ POHANDLE PoHandle;
+
+} DEVICE_EXTENSION, *PDEVICE_EXTENSION;
+
+WDF_DECLARE_CONTEXT_TYPE_WITH_NAME(DEVICE_EXTENSION, DeviceGetData)
+
+//
+// Driver's KMDF callbacks
+//
+DRIVER_INITIALIZE DriverEntry;
+EVT_WDF_OBJECT_CONTEXT_CLEANUP MCompEvtDriverCleanup;
+EVT_WDF_DRIVER_DEVICE_ADD MCompEvtDeviceAdd;
+EVT_WDF_IO_QUEUE_IO_DEVICE_CONTROL MCompEvtIoDeviceControlPrimary;
+EVT_WDF_IO_QUEUE_IO_DEVICE_CONTROL MCompEvtIoDeviceControlSecondary;
+EVT_WDF_DEVICE_D0_ENTRY MCompEvtDeviceD0Entry;
+EVT_WDF_DEVICE_D0_EXIT MCompEvtDeviceD0Exit;
+
+//
+// Driver's power framework callbacks
+//
+PO_FX_COMPONENT_IDLE_STATE_CALLBACK MCompComponentIdleStateCallback;
+
+//
+// Driver's power framework helper callbacks
+//
+PFH_CALLBACK_POHANDLE_AVAILABLE MCompPoHandleAvailable;
+PFH_CALLBACK_POHANDLE_UNAVAILABLE MCompPoHandleUnavailable;
+
+//
+// Define the tracing flags.
+//
+// TODO: Use a different trace control GUID below
+//
+#define WPP_CONTROL_GUIDS \
+ WPP_DEFINE_CONTROL_GUID( \
+ WdfMCompTraceControl, (C3061C7C,5719,4700,BD4D,A12B40347632), \
+ WPP_DEFINE_BIT(WDFMCOMP_ALL_INFO) \
+ )
+
+#define WPP_FLAG_LEVEL_LOGGER(flag, level) \
+ WPP_LEVEL_LOGGER(flag)
+
+#define WPP_FLAG_LEVEL_ENABLED(flag, level) \
+ (WPP_LEVEL_ENABLED(flag) && \
+ WPP_CONTROL(WPP_BIT_ ## flag).Level >= level)
+
+//
+// This comment block is scanned by the trace preprocessor to define our
+// Trace function.
+//
+// begin_wpp config
+// FUNC Trace{FLAG=WDFMCOMP_ALL_INFO}(LEVEL, MSG, ...);
+// end_wpp
+//
+
+
+#endif // _WDFMULTICOMP_H_