Funzione WdfDeviceMiniportCreate (wdfminiport.h)
[Si applica solo a KMDF]
Il metodo WdfDeviceMiniportCreate crea un oggetto dispositivo framework che un driver miniport può usare.
Sintassi
NTSTATUS WdfDeviceMiniportCreate(
[in] WDFDRIVER Driver,
[in, optional] PWDF_OBJECT_ATTRIBUTES Attributes,
[in] PDEVICE_OBJECT DeviceObject,
[in, optional] PDEVICE_OBJECT AttachedDeviceObject,
[in, optional] PDEVICE_OBJECT Pdo,
[out] WDFDEVICE *Device
);
Parametri
[in] Driver
Handle per l'oggetto driver framework del driver del driver ottenuto da una chiamata precedente a WdfDriverCreare.
[in, optional] Attributes
Puntatore a una struttura WDF_OBJECT_ATTRIBUTES allocata dal chiamante che contiene gli attributi per il nuovo oggetto. Questo parametro è facoltativo e può essere WDF_NO_OBJECT_ATTRIBUTES.
[in] DeviceObject
Puntatore a una struttura di DEVICE_OBJECT WDM che rappresenta l'oggetto dispositivo funzionale (FDO) per il driver miniport.
[in, optional] AttachedDeviceObject
Puntatore a una struttura di DEVICE_OBJECT WDM che rappresenta l'oggetto dispositivo inferiore successivo nello stack di dispositivi.
[in, optional] Pdo
Puntatore a una struttura di DEVICE_OBJECT WDM che rappresenta l'oggetto dispositivo fisico (PDO) per il dispositivo.
[out] Device
Puntatore a una posizione che riceve un handle per il nuovo oggetto dispositivo framework.
Valore restituito
Se il metodo WdfDeviceMiniportCreate non rileva errori, restituisce STATUS_SUCCESS. I valori restituiti aggiuntivi includono:
Codice restituito | Descrizione |
---|---|
|
Impossibile allocare un oggetto dispositivo. |
Per un elenco di altri valori restituiti che WdfDeviceMiniportCreate possono restituire, vedere Framework Object Creation Errors.
Il metodo potrebbe restituire altri valori NTSTATUS .
Se il driver fornisce un handle di oggetto non valido, si verifica un controllo di bug.
Osservazioni:
Se il driver miniport usa il framework, il driver miniport deve chiamare WdfDeviceMiniportCreate quando il driver di porta informa che un dispositivo è disponibile. I driver Miniport non chiamano WdfDeviceCreate.
Il driver miniport potrebbe ricevere i relativi puntatori DeviceObject, AttachedDeviceObjecte PDO dal driver di porta. Ad esempio, un driver miniport NDIS può ottenere questi puntatori chiamando NdisMGetDeviceProperty.
Le restrizioni seguenti si applicano agli oggetti dispositivo framework ottenuti da un driver miniport chiamando WdfDeviceMiniportCreare:
- Il dispositivo rappresentato dall'oggetto dispositivo deve supportare Plug and Play.
- L'oggetto dispositivo non supporta alcuna delle funzioni di callback degli eventi dell'oggetto dispositivo. Pertanto, il driver della porta deve gestire tutte le operazioni plug and play (PnP) e risparmio energia.
- L'handle dell'oggetto dispositivo non può essere passato a WdfWmiProviderCreate, quindi il driver della porta deve fornire qualsiasi supporto necessario per Strumentazione gestione Windows (WMI).
- L'handle dell'oggetto dispositivo non può essere passato a WdfIoQueueCreate, quindi il framework non supporta le code di I/O per i driver miniport.
- L'handle dell'oggetto dispositivo non può essere passato a WdfInterruptCreate, pertanto il framework non supporta gli oggetti interrupt per i driver miniport.
- L'handle dell'oggetto dispositivo non può essere passato ad alcun metodo oggetto del framework generale, ad eccezione di WdfDeviceGetIoTarget, WdfDeviceWdmGetDeviceObject, WdfDeviceWdmGetAttachedDevicee WdfDeviceWdmGetPhysicalDevice.
- L'handle dell'oggetto dispositivo non può essere passato a metodi FDO framework tranne WdfFdoQueryForInterface.
- L'handle dell'oggetto dispositivo non può essere passato a qualsiasi metodo PDO del framework o a WdfChildListCreate, quindi il driver miniport non può essere un autista di autobus.
- Il driver deve infine chiamare WdfObjectDelete per eliminare l'oggetto dispositivo che WdfDeviceMiniportCreate crea.
Per inviare richieste di I/O alle destinazioni di I/O, il driver miniport potrebbe passare l'handle dell'oggetto dispositivo a WdfDeviceGetIoTarget, WdfIoTargetCreateo WdfUsbTargetDeviceCreateWithParameters.
Il driver miniport può passare l'handle dell'oggetto dispositivo a WdfDmaEnablerCreate se il dispositivo supporta le operazioni DMA.
Per altre informazioni sui driver miniport, vedere Using Kernel-Mode Driver Framework with Miniport Drivers.
Esempi
L'esempio di codice seguente chiama NdisMGetDeviceProperty per ottenere DeviceObject, AttachedDeviceObjecte puntatori PDO; inizializza lo spazio di contesto dell'oggetto dispositivo e crea un oggetto dispositivo miniport.
WDF_OBJECT_ATTRIBUTES ObjectAttributes;
NdisMGetDeviceProperty(
MiniportAdapterHandle,
&Adapter->Pdo,
&Adapter->Fdo,
&Adapter->NextDeviceObject,
NULL,
NULL
);
WDF_OBJECT_ATTRIBUTES_INIT_CONTEXT_TYPE(
&ObjectAttributes,
WDF_DEVICE_INFO
);
ntStatus = WdfDeviceMiniportCreate(
WdfGetDriver(),
&ObjectAttributes,
Adapter->Fdo,
Adapter->NextDeviceObject,
Adapter->Pdo,
&Adapter->WdfDevice
);
if (!NT_SUCCESS (ntStatus)) {
Status = NDIS_STATUS_FAILURE;
break;
}
Requisiti
Requisito | Valore |
---|---|
Piattaforma di destinazione | Universale |
versione minima di KMDF | 1.0 |
intestazione | wdfminiport.h (include Wdfminiport.h) |
Biblioteca | Wdf01000.sys (vedere Controllo delle versioni della libreria framework). |
IRQL | PASSIVE_LEVEL |
regole di conformità DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |