/*++ Copyright (c) Microsoft Corporation Module Name: corepriv.hpp Abstract: This is the main driver framework. Author: Environment: Both kernel and user mode Revision History: --*/ #pragma once #if ((FX_CORE_MODE)==(FX_CORE_USER_MODE)) #define FX_IS_USER_MODE (TRUE) #define FX_IS_KERNEL_MODE (FALSE) #elif ((FX_CORE_MODE)==(FX_CORE_KERNEL_MODE)) #define FX_IS_USER_MODE (FALSE) #define FX_IS_KERNEL_MODE (TRUE) #endif extern "C" { #include "mx.h" } #include "fxmin.hpp" #include "wdfmemory.h" #include "wdfrequest.h" #include "wdfdevice.h" #include "wdfwmi.h" #include "wdfchildlist.h" #include "wdfpdo.h" #include "wdffdo.h" #include "wdfiotarget.h" #include "wdfcontrol.h" #include "wdfcx.h" #include "wdfio.h" #include "wdfqueryinterface.h" #include "fxirpqueue.hpp" #include "fxcallback.hpp" #if (FX_CORE_MODE == FX_CORE_USER_MODE) #include "fxirpum.hpp" #elif ((FX_CORE_MODE)==(FX_CORE_KERNEL_MODE)) #include "fxirpkm.hpp" #endif #include "fxtransactionedlist.hpp" #include "fxcollection.hpp" #include "fxdeviceinitshared.hpp" #include "fxdevicetomxinterface.hpp" #include "fxrequestcontext.hpp" #include "fxrequestcontexttypes.h" #include "fxrequestbase.hpp" #include "fxrequestbuffer.hpp" #include "ifxmemory.hpp" #include "fxiotarget.hpp" #include "fxiotargetremote.hpp" #include "fxiotargetself.hpp" // // Versioning of structures for wdfIoTarget.h // typedef struct _WDF_IO_TARGET_OPEN_PARAMS_V1_11 { // // Size of this structure in bytes // ULONG Size; // // Indicates which fields of this structure are going to be used in // creating the WDFIOTARGET. // WDF_IO_TARGET_OPEN_TYPE Type; // // Notification when the target is being queried for removal. // If !NT_SUCCESS is returned, the query will fail and the target will // remain opened. // PFN_WDF_IO_TARGET_QUERY_REMOVE EvtIoTargetQueryRemove; // // The previous query remove has been canceled and the target can now be // reopened. // PFN_WDF_IO_TARGET_REMOVE_CANCELED EvtIoTargetRemoveCanceled; // // The query remove has succeeded and the target is now removed from the // system. // PFN_WDF_IO_TARGET_REMOVE_COMPLETE EvtIoTargetRemoveComplete; // ========== WdfIoTargetOpenUseExistingDevice begin ========== // // The device object to send requests to // PDEVICE_OBJECT TargetDeviceObject; // // File object representing the TargetDeviceObject. The PFILE_OBJECT will // be passed as a parameter in all requests sent to the resulting // WDFIOTARGET. // PFILE_OBJECT TargetFileObject; // ========== WdfIoTargetOpenUseExistingDevice end ========== // // ========== WdfIoTargetOpenByName begin ========== // // Name of the device to open. // UNICODE_STRING TargetDeviceName; // // The access desired on the device being opened up, ie WDM FILE_XXX_ACCESS // such as FILE_ANY_ACCESS, FILE_SPECIAL_ACCESS, FILE_READ_ACCESS, or // FILE_WRITE_ACCESS or you can use values such as GENERIC_READ, // GENERIC_WRITE, or GENERIC_ALL. // ACCESS_MASK DesiredAccess; // // Share access desired on the target being opened, ie WDM FILE_SHARE_XXX // values such as FILE_SHARE_READ, FILE_SHARE_WRITE, FILE_SHARE_DELETE. // // A zero value means exclusive access to the target. // ULONG ShareAccess; // // File attributes, see ZwCreateFile in the DDK for a list of valid // values and their meaning. // ULONG FileAttributes; // // Create disposition, see ZwCreateFile in the DDK for a list of valid // values and their meaning. // ULONG CreateDisposition; // // Options for opening the device, see CreateOptions for ZwCreateFile in the // DDK for a list of valid values and their meaning. // ULONG CreateOptions; PVOID EaBuffer; ULONG EaBufferLength; PLONGLONG AllocationSize; // ========== WdfIoTargetOpenByName end ========== // // // On return for a create by name, this will contain one of the following // values: FILE_CREATED, FILE_OPENED, FILE_OVERWRITTEN, FILE_SUPERSEDED, // FILE_EXISTS, FILE_DOES_NOT_EXIST // ULONG FileInformation; } WDF_IO_TARGET_OPEN_PARAMS_V1_11, *PWDF_IO_TARGET_OPEN_PARAMS_V1_11;