本文整理汇总了C++中WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE函数的典型用法代码示例。如果您正苦于以下问题:C++ WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE函数的具体用法?C++ WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE怎么用?C++ WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE使用的例子?那么, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: bareflankCreateDevice
NTSTATUS
bareflankCreateDevice(
_Inout_ PWDFDEVICE_INIT DeviceInit
)
{
NTSTATUS status;
WDFDEVICE device;
WDF_OBJECT_ATTRIBUTES deviceAttributes;
WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&deviceAttributes, DEVICE_CONTEXT);
status = WdfDeviceCreate(&DeviceInit, &deviceAttributes, &device);
if (!NT_SUCCESS(status))
return status;
status = WdfDeviceCreateDeviceInterface(device, &GUID_DEVINTERFACE_bareflank, NULL);
if (!NT_SUCCESS(status))
return status;
status = bareflankQueueInitialize(device);
if (!NT_SUCCESS(status))
return status;
DEBUG("bareflankCreateDevice: success\n");
return status;
}
示例2: EvtDriverDeviceAdd
NTSTATUS EvtDriverDeviceAdd(IN WDFDRIVER Driver, IN PWDFDEVICE_INIT DeviceInit)
{
WDFDEVICE Device = NULL;
WDF_OBJECT_ATTRIBUTES ObjectAttributes;
NTSTATUS Status = STATUS_SUCCESS;
UNREFERENCED_PARAMETER(Driver);
__try {
SetDeviceInit(DeviceInit);
WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&ObjectAttributes,
DEVICE_DATA);
Status = WdfDeviceCreate(&DeviceInit, &ObjectAttributes,
&Device);
if (!NT_SUCCESS(Status)) {
TRACE_ERR("WdfDeviceCreate", Status);
__leave;
}
Status = PciDtfDeviceInit(Device);
if (!NT_SUCCESS(Status)) {
TRACE_ERR("DeviceInit", Status);
__leave;
}
}
__finally {
if (!NT_SUCCESS(Status) && Device != NULL)
WdfObjectDelete(Device);
}
return Status;
}
示例3: EvtDeviceAdd
NTSTATUS
EvtDeviceAdd(
IN WDFDRIVER Driver,
IN PWDFDEVICE_INIT DeviceInit
)
{
WDF_OBJECT_ATTRIBUTES attributes;
NTSTATUS status;
WDFDEVICE device;
WDF_PNPPOWER_EVENT_CALLBACKS pnpPowerCallbacks;
UNREFERENCED_PARAMETER(Driver);
WDF_PNPPOWER_EVENT_CALLBACKS_INIT(&pnpPowerCallbacks);
pnpPowerCallbacks.EvtDevicePrepareHardware = EvtDevicePrepareHardware;
WdfDeviceInitSetPnpPowerEventCallbacks(DeviceInit, &pnpPowerCallbacks);
WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&attributes, DEVICE_CONTEXT);
status = WdfDeviceCreate(&DeviceInit, &attributes, &device);
if (!NT_SUCCESS(status)) {
KdPrint(("WdfDeviceCreate failed 0x%x\n", status));
return status;
}
status = WdfDeviceCreateDeviceInterface(device,
(LPGUID) &GUID_DEVINTERFACE_OSRUSBFX2,
NULL);// Reference String
if (!NT_SUCCESS(status)) {
KdPrint(("WdfDeviceCreateDeviceInterface failed 0x%x\n", status));
return status;
}
return status;
}
示例4: GFilterAddDevice
// Add device
NTSTATUS GFilterAddDevice( IN WDFDRIVER Driver,
IN PWDFDEVICE_INIT DeviceInit)
{
NTSTATUS status;
WDF_OBJECT_ATTRIBUTES deviceAttributes;
WDFDEVICE device;
PFILTER_EXTENSION filtExt;
WDF_IO_QUEUE_CONFIG ioQueueConfig;
WDFQUEUE ioDefaultQueue;
DEBUG("Adding Device");
// Indicate we are a filter driver, This forwards all IRPs on to the lower filters
WdfFdoInitSetFilter(DeviceInit);
// Setup the actual filter for the IRPs
#ifdef USE_SETIOINCALLERCONTEXTCALLBACK
// Use built in KMDF filter
WdfDeviceInitSetIoInCallerContextCallback( DeviceInit,
GFilterIOCallback);
#endif
// Create a new device
WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE( &deviceAttributes,
FILTER_EXTENSION);
// no cleanup callback needed -- deviceAttributes.EvtCleanupCallback = GFilterDeviceCleanUp; // Set device unload callback
status = WdfDeviceCreate( &DeviceInit, // Create the device
&deviceAttributes,
&device);
CHECKSTATUS(status, return(status));
// Create the filter extension -- We don't really care about this really
filtExt = FilterGetData(device);
filtExt->Instance = 0x00;
#ifndef USE_SETIOINCALLERCONTEXTCALLBACK
// Create IO queue and set callbacks to be filtered.
//!todo, we created a parrallel que here but some drivers may need multiple parallel queues which is not done
WDF_IO_QUEUE_CONFIG_INIT_DEFAULT_QUEUE( &ioQueueConfig, // Create parallel IO queue in case the device we filter does not like sequential
WdfIoQueueDispatchParallel );
ioQueueConfig.EvtIoRead = GFilterRead; // Read
ioQueueConfig.EvtIoWrite = GFilterWrite; // Write
status = WdfIoQueueCreate( device,
&ioQueueConfig,
WDF_NO_OBJECT_ATTRIBUTES,
&ioDefaultQueue);
CHECKSTATUS(status, ERROR("Failed to create queues. status=0x%0.4x",status); goto GFilterAddDeviceCleanup);
#endif
// Create sideband communications to userspace
#ifdef USE_CONTROL_DEVICE
GFilterCreateControlDevice( device,
++DeviceInstances); //!todo, should we lock instance ??
#else
GFilterCreateRawPDO( device,
++DeviceInstances); //!todo, should we lock instance ??
#endif
GFilterAddDeviceCleanup:
return(status);
}
示例5: DeviceInit
NTSTATUS CUsbDkFilterDevice::Create(PWDFDEVICE_INIT DevInit)
{
CUsbDkFilterDeviceInit DeviceInit(DevInit);
TraceEvents(TRACE_LEVEL_INFORMATION, TRACE_FILTERDEVICE, "%!FUNC! Entry");
auto status = DeviceInit.Configure(GetInstanceNumber());
if (!NT_SUCCESS(status))
{
TraceEvents(TRACE_LEVEL_INFORMATION, TRACE_FILTERDEVICE, "%!FUNC! Failed to create device init");
return status;
}
WDF_OBJECT_ATTRIBUTES attr;
WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&attr, USBDK_FILTER_DEVICE_EXTENSION);
attr.EvtCleanupCallback = CUsbDkFilterDevice::ContextCleanup;
status = CWdfDevice::Create(DeviceInit, attr);
if (!NT_SUCCESS(status))
{
TraceEvents(TRACE_LEVEL_INFORMATION, TRACE_FILTERDEVICE, "%!FUNC! Failed to create device");
return status;
}
auto deviceContext = UsbDkFilterGetContext(m_Device);
deviceContext->UsbDkFilter = this;
return STATUS_SUCCESS;
}
示例6: SENSOR_FunctionEnter
// This routine is called by the framework when the PnP manager sends an
// IRP_MN_START_DEVICE request to the driver stack. This routine is
// responsible for performing operations that are necessary to make the
// driver's device operational (for e.g. mapping the hardware resources
// into memory).
NTSTATUS ActivityDevice::OnPrepareHardware(
_In_ WDFDEVICE device, // Supplies a handle to the framework device object
_In_ WDFCMRESLIST /*ResourcesRaw*/, // Supplies a handle to a collection of framework resource
// objects. This collection identifies the raw (bus-relative) hardware
// resources that have been assigned to the device.
_In_ WDFCMRESLIST /*ResourcesTranslated*/) // Supplies a handle to a collection of framework
// resource objects. This collection identifies the translated
// (system-physical) hardware resources that have been assigned to the
// device. The resources appear from the CPU's point of view.
{
NTSTATUS status = STATUS_SUCCESS;
SENSOR_FunctionEnter();
// Create WDFOBJECT for the sensor
WDF_OBJECT_ATTRIBUTES sensorAttributes = {};
WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&sensorAttributes, ActivityDevice);
// Register sensor instance with clx
SENSOROBJECT sensorInstance = NULL;
status = SensorsCxSensorCreate(device, &sensorAttributes, &sensorInstance);
if (!NT_SUCCESS(status))
{
TraceError("ACT %!FUNC! SensorsCxSensorCreate failed %!STATUS!", status);
}
else
{
PActivityDevice pDevice = GetActivityContextFromSensorInstance(sensorInstance);
if (nullptr == pDevice)
{
status = STATUS_INSUFFICIENT_RESOURCES;
TraceError("ACT %!FUNC! GetActivityContextFromSensorInstance failed %!STATUS!", status);
}
else
{
// Fill out properties
status = pDevice->Initialize(device, sensorInstance);
if (!NT_SUCCESS(status))
{
TraceError("ACT %!FUNC! Initialize device object failed %!STATUS!", status);
}
else
{
SENSOR_CONFIG sensorConfig = {};
SENSOR_CONFIG_INIT(&sensorConfig);
sensorConfig.pEnumerationList = pDevice->m_pEnumerationProperties;
status = SensorsCxSensorInitialize(sensorInstance, &sensorConfig);
if (!NT_SUCCESS(status))
{
TraceError("ACT %!FUNC! SensorsCxSensorInitialize failed %!STATUS!", status);
}
}
}
}
SENSOR_FunctionExit(status);
return status;
}
示例7: DriverEntry
NTSTATUS DriverEntry(IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPath)
{
NTSTATUS status = STATUS_SUCCESS;
WDF_DRIVER_CONFIG config;
WDF_OBJECT_ATTRIBUTES attributes;
WDFDRIVER Driver;
PDRIVER_CONTEXT Context;
#if (NTDDI_VERSION > NTDDI_WIN7)
ExInitializeDriverRuntime(DrvRtPoolNxOptIn);
#endif
WPP_INIT_TRACING(DriverObject, RegistryPath);
TraceEvents(TRACE_LEVEL_INFORMATION, DBG_INIT,
"Virtio-Serial driver started...built on %s %s\n", __DATE__, __TIME__);
WDF_DRIVER_CONFIG_INIT(&config,VIOSerialEvtDeviceAdd);
config.DriverPoolTag = VIOSERIAL_DRIVER_MEMORY_TAG;
WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&attributes, DRIVER_CONTEXT);
attributes.EvtCleanupCallback = VIOSerialEvtDriverContextCleanup;
status = WdfDriverCreate(DriverObject,
RegistryPath,
&attributes,
&config,
&Driver);
if (!NT_SUCCESS(status)) {
TraceEvents(TRACE_LEVEL_ERROR, DBG_INIT,
"WdfDriverCreate failed - 0x%x\n", status);
WPP_CLEANUP(DriverObject);
return status;
}
Context = GetDriverContext(Driver);
// create a lookaside list used for allocating WRITE_BUFFER_ENTRY
// structures by all devices
status = WdfLookasideListCreate(WDF_NO_OBJECT_ATTRIBUTES,
sizeof(WRITE_BUFFER_ENTRY),
NonPagedPool,
WDF_NO_OBJECT_ATTRIBUTES,
VIOSERIAL_DRIVER_MEMORY_TAG,
&Context->WriteBufferLookaside);
if (!NT_SUCCESS(status))
{
TraceEvents(TRACE_LEVEL_ERROR, DBG_INIT,
"WdfLookasideListCreate failed - 0x%x\n", status);
return status;
}
TraceEvents(TRACE_LEVEL_INFORMATION, DBG_PNP, "<-- %s\n", __FUNCTION__);
return status;
}
示例8: main
/*****************************************************************************
Harness.
*****************************************************************************/
int main (int argc, char* argv[])
{
NTSTATUS status = STATUS_SUCCESS;
//PDEVICE_EXTENSION deviceExtension;
WDF_OBJECT_ATTRIBUTES fdoAttributes;
WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&fdoAttributes, DEVICE_EXTENSION);
return STATUS_SUCCESS;
}
示例9: DeviceCreate
NTSTATUS
DeviceCreate(
_In_ WDFDRIVER Driver,
_In_ PWDFDEVICE_INIT DeviceInit,
_Out_ PDEVICE_CONTEXT *DeviceContext
)
/*++
Routine Description:
This method creates and initializs an instance of the VirtualSerial driver's
device callback object.
Arguments:
FxDeviceInit - the settings for the device.
Device - a location to store the referenced pointer to the device object.
Return Value:
Status
--*/
{
NTSTATUS status;
WDF_OBJECT_ATTRIBUTES deviceAttributes;
WDFDEVICE device;
PDEVICE_CONTEXT deviceContext;
UNREFERENCED_PARAMETER (Driver);
WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(
&deviceAttributes,
DEVICE_CONTEXT);
deviceAttributes.SynchronizationScope = WdfSynchronizationScopeDevice;
deviceAttributes.EvtCleanupCallback = EvtDeviceCleanup;
status = WdfDeviceCreate(&DeviceInit,
&deviceAttributes,
&device);
if (!NT_SUCCESS(status)) {
Trace(TRACE_LEVEL_ERROR,
"Error: WdfDeviceCreate failed 0x%x", status);
return status;
}
deviceContext = GetDeviceContext(device);
deviceContext->Device = device;
*DeviceContext = deviceContext;
return status;
}
示例10: VIOSerialInitInterruptHandling
static
NTSTATUS
VIOSerialInitInterruptHandling(
IN WDFDEVICE hDevice)
{
WDF_OBJECT_ATTRIBUTES attributes;
WDF_INTERRUPT_CONFIG interruptConfig;
PPORTS_DEVICE pContext = GetPortsDevice(hDevice);
NTSTATUS status = STATUS_SUCCESS;
TraceEvents(TRACE_LEVEL_VERBOSE, DBG_HW_ACCESS, "--> %s\n", __FUNCTION__);
WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&attributes, PORTS_DEVICE);
WDF_INTERRUPT_CONFIG_INIT(
&interruptConfig,
VIOSerialInterruptIsr,
VIOSerialInterruptDpc
);
interruptConfig.EvtInterruptEnable = VIOSerialInterruptEnable;
interruptConfig.EvtInterruptDisable = VIOSerialInterruptDisable;
status = WdfInterruptCreate(
hDevice,
&interruptConfig,
&attributes,
&pContext->WdfInterrupt
);
if (!NT_SUCCESS (status))
{
TraceEvents(TRACE_LEVEL_ERROR, DBG_HW_ACCESS,
"Failed to create control queue interrupt: %x\n", status);
return status;
}
WDF_OBJECT_ATTRIBUTES_INIT(&attributes);
WDF_INTERRUPT_CONFIG_INIT(&interruptConfig,
VIOSerialInterruptIsr, VIOSerialQueuesInterruptDpc);
status = WdfInterruptCreate(hDevice, &interruptConfig, &attributes,
&pContext->QueuesInterrupt);
if (!NT_SUCCESS (status))
{
TraceEvents(TRACE_LEVEL_ERROR, DBG_HW_ACCESS,
"Failed to create general queue interrupt: %x\n", status);
return status;
}
TraceEvents(TRACE_LEVEL_INFORMATION, DBG_HW_ACCESS, "<-- %s\n", __FUNCTION__);
return status;
}
示例11: TreeSampleCreateSecureDeviceContext
_Use_decl_annotations_
NTSTATUS
TreeSampleCreateSecureDeviceContext(
WDFDEVICE MasterDevice
)
/*++
Routine Description:
This routine is called when the secure environment is first started.
Arguments:
MasterDevice - Supplies a handle to the master device object.
DeviceContext - Supplies a pointer to store any context information
required for future calls.
Return Value:
NTSTATUS code.
--*/
{
WDF_OBJECT_ATTRIBUTES ContextAttributes;
PTREE_SAMPLE_DEVICE_CONTEXT MasterContext;
NTSTATUS Status;
DECLARE_CONST_UNICODE_STRING(SymbolicLink, L"\\DosDevices\\SampleTrEEDriver");
WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&ContextAttributes,
TREE_SAMPLE_DEVICE_CONTEXT);
Status = WdfObjectAllocateContext(MasterDevice, &ContextAttributes, &MasterContext);
if (!NT_SUCCESS(Status)) {
goto TreeSampleCreateSecureDeviceContextEnd;
}
MasterContext->MasterDevice = MasterDevice;
//
// Create a symbolic link so that usermode program can access master device.
//
Status = WdfDeviceCreateSymbolicLink(MasterDevice, &SymbolicLink);
if (!NT_SUCCESS(Status)) {
goto TreeSampleCreateSecureDeviceContextEnd;
}
TreeSampleCreateSecureDeviceContextEnd:
return Status;
}
示例12: SLAyer_harness_init
NTSTATUS SLAyer_harness_init()
{
PWDFDEVICE_INIT DInit;
WDF_OBJECT_ATTRIBUTES DAttrib;
WDFDEVICE Device;
NTSTATUS status;
// malloc SL_Device
WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&DAttrib,DEVICE_EXTENSION);
status = WdfDeviceCreate(&DInit,&DAttrib,&Device);
return status;
}
示例13: WmiInitialize
//
// Register our GUID and Datablock generated from the Firefly.mof file.
//
NTSTATUS
WmiInitialize(
WDFDEVICE Device,
PDEVICE_CONTEXT DeviceContext
)
{
WDF_WMI_PROVIDER_CONFIG providerConfig;
WDF_WMI_INSTANCE_CONFIG instanceConfig;
WDF_OBJECT_ATTRIBUTES woa;
WDFWMIINSTANCE instance;
NTSTATUS status;
DECLARE_CONST_UNICODE_STRING(mofRsrcName, MOFRESOURCENAME);
UNREFERENCED_PARAMETER(DeviceContext);
PAGED_CODE();
status = WdfDeviceAssignMofResourceName(Device, &mofRsrcName);
if (!NT_SUCCESS(status)) {
KdPrint(("FireFly: Error in WdfDeviceAssignMofResourceName %x\n", status));
return status;
}
WDF_WMI_PROVIDER_CONFIG_INIT(&providerConfig, &FireflyDeviceInformation_GUID);
providerConfig.MinInstanceBufferSize = sizeof(FireflyDeviceInformation);
WDF_WMI_INSTANCE_CONFIG_INIT_PROVIDER_CONFIG(&instanceConfig, &providerConfig);
instanceConfig.Register = TRUE;
instanceConfig.EvtWmiInstanceQueryInstance = EvtWmiInstanceQueryInstance;
instanceConfig.EvtWmiInstanceSetInstance = EvtWmiInstanceSetInstance;
instanceConfig.EvtWmiInstanceSetItem = EvtWmiInstanceSetItem;
WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&woa, FireflyDeviceInformation);
//
// No need to store the WDFWMIINSTANCE in the device context because it is
// passed back in the WMI instance callbacks and is not referenced outside
// of those callbacks.
//
status = WdfWmiInstanceCreate(Device, &instanceConfig, &woa, &instance);
if (NT_SUCCESS(status)) {
FireflyDeviceInformation* info;
info = InstanceGetInfo(instance);
info->TailLit = TRUE;
}
return status;
}
示例14: HwSimInitialize
NTSTATUS
HwSimInitialize(
_In_ WDFDEVICE Device
)
/*++
Routine Description:
This routine initializes the hardware simulator
Arguments:
Device - Handle to the framework device object
Return Value:
An NTSTATUS value representing success or failure of the function.
--*/
{
NTSTATUS status;
WDF_OBJECT_ATTRIBUTES objectAttributes;
PHWSIM_CONTEXT devCtx;
Trace(TRACE_LEVEL_INFORMATION, "%!FUNC! Entry\n");
//
// Allocate our context for this device
//
WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&objectAttributes,
HWSIM_CONTEXT);
status = WdfObjectAllocateContext((WDFOBJECT) Device,
&objectAttributes,
(PVOID*) &devCtx);
if (FALSE == NT_SUCCESS(status)) {
Trace(TRACE_LEVEL_ERROR,
"%!FUNC! - WdfObjectAllocateContext failed with %!status!",
status);
goto exit;
}
devCtx->FirstD0Entry = TRUE;
status = STATUS_SUCCESS;
Trace(TRACE_LEVEL_INFORMATION, "%!FUNC! Exit\n");
exit:
return status;
}
示例15: PAGED_CODE
NTSTATUS CUsbDkFilterDeviceInit::Configure(ULONG InstanceNumber)
{
PAGED_CODE();
WDF_OBJECT_ATTRIBUTES requestAttributes;
WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(&requestAttributes, WDF_REQUEST_CONTEXT);
requestAttributes.ContextSizeOverride = CUsbDkFilterDevice::CStrategist::GetRequestContextSize();
SetRequestAttributes(requestAttributes);
SetFilter();
CString DeviceName;
auto status = DeviceName.Create(TEXT("\\Device\\UsbDkFilter"), InstanceNumber);
if (!NT_SUCCESS(status))
{
TraceEvents(TRACE_LEVEL_ERROR, TRACE_FILTERDEVICE, "%!FUNC! Failed to allocate filter device name (%!STATUS!)", status);
return status;
}
status = SetName(*DeviceName);
if (!NT_SUCCESS(status))
{
TraceEvents(TRACE_LEVEL_ERROR, TRACE_FILTERDEVICE, "%!FUNC! SetName failed %!STATUS!", status);
return status;
}
SetPowerCallbacks([](_In_ WDFDEVICE Device)
{ return Strategy(Device)->MakeAvailable(); });
SetIoInCallerContextCallback([](_In_ WDFDEVICE Device, WDFREQUEST Request)
{ return Strategy(Device)->IoInCallerContext(Device, Request); });
SetFileEventCallbacks(WDF_NO_EVENT_CALLBACK,
[](_In_ WDFFILEOBJECT FileObject)
{
WDFDEVICE Device = WdfFileObjectGetDevice(FileObject);
Strategy(Device)->OnClose();
},
WDF_NO_EVENT_CALLBACK);
status = SetPreprocessCallback([](_In_ WDFDEVICE Device, _Inout_ PIRP Irp)
{ return Strategy(Device)->PNPPreProcess(Irp); },
IRP_MJ_PNP);
return status;
}