18a978a17SVictor Perevertkin /*++
28a978a17SVictor Perevertkin 
38a978a17SVictor Perevertkin Copyright (c) Microsoft Corporation
48a978a17SVictor Perevertkin 
58a978a17SVictor Perevertkin Module Name:
68a978a17SVictor Perevertkin 
78a978a17SVictor Perevertkin     FxCxDeviceInit.hpp
88a978a17SVictor Perevertkin 
98a978a17SVictor Perevertkin Abstract:
108a978a17SVictor Perevertkin 
118a978a17SVictor Perevertkin 
128a978a17SVictor Perevertkin Author:
138a978a17SVictor Perevertkin 
148a978a17SVictor Perevertkin 
158a978a17SVictor Perevertkin Environment:
168a978a17SVictor Perevertkin 
178a978a17SVictor Perevertkin     kernel mode only
188a978a17SVictor Perevertkin 
198a978a17SVictor Perevertkin Revision History:
208a978a17SVictor Perevertkin 
218a978a17SVictor Perevertkin --*/
228a978a17SVictor Perevertkin 
238a978a17SVictor Perevertkin #ifndef __FXCXDEVICEINIT_HPP__
248a978a17SVictor Perevertkin #define __FXCXDEVICEINIT_HPP__
258a978a17SVictor Perevertkin 
268a978a17SVictor Perevertkin //
278a978a17SVictor Perevertkin // Holds class extension file object configuration.
288a978a17SVictor Perevertkin //
298a978a17SVictor Perevertkin struct CxFileObjectInit {
308a978a17SVictor Perevertkin     WDF_FILEOBJECT_CLASS Class;
318a978a17SVictor Perevertkin 
328a978a17SVictor Perevertkin     WDF_OBJECT_ATTRIBUTES Attributes;
338a978a17SVictor Perevertkin 
348a978a17SVictor Perevertkin     WDFCX_FILEOBJECT_CONFIG Callbacks;
358a978a17SVictor Perevertkin 
368a978a17SVictor Perevertkin     WDF_TRI_STATE AutoForwardCleanupClose;
378a978a17SVictor Perevertkin 
388a978a17SVictor Perevertkin     BOOLEAN Set;
398a978a17SVictor Perevertkin };
408a978a17SVictor Perevertkin 
418a978a17SVictor Perevertkin //
428a978a17SVictor Perevertkin // The typedef for a pointer to this structure is exposed in wdfdevice.h
438a978a17SVictor Perevertkin //
448a978a17SVictor Perevertkin struct WDFCXDEVICE_INIT : public FxStump {
458a978a17SVictor Perevertkin public:
468a978a17SVictor Perevertkin     WDFCXDEVICE_INIT();
478a978a17SVictor Perevertkin     ~WDFCXDEVICE_INIT();
488a978a17SVictor Perevertkin 
498a978a17SVictor Perevertkin     static
508a978a17SVictor Perevertkin     _Must_inspect_result_
518a978a17SVictor Perevertkin     PWDFCXDEVICE_INIT
528a978a17SVictor Perevertkin     _AllocateCxDeviceInit(
538a978a17SVictor Perevertkin         __in PWDFDEVICE_INIT DeviceInit
548a978a17SVictor Perevertkin         );
558a978a17SVictor Perevertkin 
568a978a17SVictor Perevertkin public:
578a978a17SVictor Perevertkin     //
588a978a17SVictor Perevertkin     // Class extension init list entry.
598a978a17SVictor Perevertkin     //
608a978a17SVictor Perevertkin     LIST_ENTRY              ListEntry;
618a978a17SVictor Perevertkin 
628a978a17SVictor Perevertkin     //
638a978a17SVictor Perevertkin     // Client and Cx's globals.
648a978a17SVictor Perevertkin     //
658a978a17SVictor Perevertkin     PFX_DRIVER_GLOBALS      ClientDriverGlobals;
668a978a17SVictor Perevertkin     PFX_DRIVER_GLOBALS      CxDriverGlobals;
678a978a17SVictor Perevertkin 
688a978a17SVictor Perevertkin     //
698a978a17SVictor Perevertkin     // Pre-proc info.
708a978a17SVictor Perevertkin     //
718a978a17SVictor Perevertkin     FxIrpPreprocessInfo*    PreprocessInfo;
728a978a17SVictor Perevertkin 
738a978a17SVictor Perevertkin     //
748a978a17SVictor Perevertkin     // In caller context info.
758a978a17SVictor Perevertkin     //
768a978a17SVictor Perevertkin     PFN_WDF_IO_IN_CALLER_CONTEXT IoInCallerContextCallback;
778a978a17SVictor Perevertkin 
788a978a17SVictor Perevertkin     //
798a978a17SVictor Perevertkin     // Request attributes info.
808a978a17SVictor Perevertkin     //
818a978a17SVictor Perevertkin     WDF_OBJECT_ATTRIBUTES   RequestAttributes;
828a978a17SVictor Perevertkin 
838a978a17SVictor Perevertkin     //
848a978a17SVictor Perevertkin     // File object info.
858a978a17SVictor Perevertkin     //
868a978a17SVictor Perevertkin     CxFileObjectInit        FileObject;
878a978a17SVictor Perevertkin 
888a978a17SVictor Perevertkin     //
898a978a17SVictor Perevertkin     // Set during the device create.
908a978a17SVictor Perevertkin     //
918a978a17SVictor Perevertkin     FxCxDeviceInfo*         CxDeviceInfo;
928a978a17SVictor Perevertkin };
938a978a17SVictor Perevertkin 
94*1f377076SVictor Perevertkin #endif // __FXCXDEVICEINIT_HPP__
958a978a17SVictor Perevertkin 
96