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 del framework del driver, ottenuto da una chiamata precedente a WdfDriverCreate.
[in, optional] Attributes
Puntatore a una struttura WDF_OBJECT_ATTRIBUTES allocata dal chiamante che contiene 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 possono essere restituiti da WdfDeviceMiniportCreate , vedere Errori di creazione di oggetti framework.
Il metodo potrebbe restituire altri valori NTSTATUS.
Se il driver fornisce un handle di oggetto non valido, si verifica un controllo di bug.
Commenti
Se il driver miniport usa il framework, il driver miniport deve chiamare WdfDeviceMiniportCreate quando il driver della porta informa che un dispositivo è disponibile. I driver Miniport non chiamano WdfDeviceCreate.
Il driver miniport potrebbe ricevere i puntatori DeviceObject, AttachedDeviceObject e 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 WdfDeviceMiniportCreate:
- Il dispositivo rappresentato dall'oggetto dispositivo deve supportare Plug and Play.
- L'oggetto dispositivo non supporta alcuna funzione di callback di evento dell'oggetto dispositivo. Di conseguenza, il driver della porta deve gestire tutte le operazioni di 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, quindi il framework non supporta gli oggetti interrupt per i driver miniport.
- L'handle dell'oggetto dispositivo non può essere passato a qualsiasi metodo oggetto dispositivo framework generale, ad eccezione di WdfDeviceGetIoTarget, WdfDeviceWdmGetDeviceObject, WdfDeviceWdmGetAttachedDevice e WdfDeviceWdmGetPhysicalDevice.
- L'handle dell'oggetto dispositivo non può essere passato ad alcun metodo FDO del framework , ad eccezione di WdfFdoQueryForInterface.
- L'handle dell'oggetto dispositivo non può essere passato a alcun metodo PDO del framework o a WdfChildListCreate, quindi il driver miniport non può essere un driver dell'autobus.
- Il driver deve infine chiamare WdfObjectDelete per eliminare l'oggetto dispositivo creato da WdfDeviceMiniportCreate .
Per inviare richieste di I/O alle destinazioni di I/O, il driver miniport potrebbe passare l'handle dell'oggetto dispositivo a WdfDeviceGetIoTarget, WdfIoTargetCreate o 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 Uso di Kernel-Mode Driver Framework con driver Miniport.
Esempio
L'esempio di codice seguente chiama NdisMGetDeviceProperty per ottenere puntatori DeviceObject, AttachedDeviceObject e 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 KMDF minima | 1,0 |
Intestazione | wdfminiport.h (include Wdfminiport.h) |
Libreria | Wdf01000.sys (vedere Controllo delle versioni della libreria framework). |
IRQL | PASSIVE_LEVEL |
Regole di conformità DDI | DriverCreate(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf) |