Функция WdfDeviceInitFree (wdfdevice.h)
[Относится только к KMDF]
Метод WdfDeviceInitFree освобождает структуру WDFDEVICE_INIT .
Синтаксис
void WdfDeviceInitFree(
[in] PWDFDEVICE_INIT DeviceInit
);
Параметры
[in] DeviceInit
Указатель на структуру WDFDEVICE_INIT .
Возвращаемое значение
None
Remarks
Если драйвер получает WDFDEVICE_INIT структуру из вызова WdfPdoInitAllocate или WdfControlDeviceInitAllocate и если впоследствии драйвер обнаруживает ошибку при вызове метода инициализации объекта устройства или WdfDeviceCreate, драйвер должен вызвать WdfDeviceInitFree.
Драйвер не должен вызывать WdfDeviceInitFree после успешного вызова WdfDeviceCreate .
Драйверу не нужно вызывать WdfDeviceInitFree , если он получил структуру WDFDEVICE_INIT в качестве входных данных для функции обратного вызова EvtDriverDeviceAdd , так как платформа удаляет структуру после возврата функции обратного вызова.
Дополнительные сведения о вызове WdfDeviceCreate см. в разделе Создание объекта устройства платформы.
Примеры
В следующем примере кода вызывается WdfDeviceInitFree , если вызов WdfPdoInitAssignRawDevice завершается ошибкой.
NTSTATUS status;
status = WdfPdoInitAssignRawDevice(
pDeviceInit,
&GUID_DEVCLASS_KEYBOARD
);
if (!NT_SUCCESS(status)) {
WdfDeviceInitFree(pDeviceInit);
pDeviceInit = NULL;
return STATUS;
}
Требования
Требование | Значение |
---|---|
Целевая платформа | Универсальное |
Минимальная версия KMDF | 1,0 |
Верхняя часть | wdfdevice.h (включая Wdf.h) |
Библиотека | Wdf01000.sys (см. раздел Управление версиями библиотеки Платформы). |
IRQL | <= DISPATCH_LEVEL |
Правила соответствия DDI | DoubleDeviceInitFree(kmdf), DriverCreate(kmdf), InitFreeDeviceCallback(kmdf), InitFreeDeviceCreate(kmdf), InitFreeDeviceCreateType2(kmdf), InitFreeDeviceCreateType4(kmdf), InitFreeNull(kmdf), KmdfIrql(kmdf), KmdfIrql2(kmdf), KmdfIrqlExplicit(kmdf), PdoInitFreeDeviceCallback(kmdf), PdoInitFreeDeviceCreate(kmdf), PdoInitFreeDeviceCreateType2(kmdf), PdoInitFreeDeviceCreateType4(kmdf) |