Функция WdfDeviceInitFree (wdfdevice.h)
[Применимо только к KMDF]
Метод WdfDeviceInitFree освобождает структуру WDFDEVICE_INIT.
Синтаксис
void WdfDeviceInitFree(
[in] PWDFDEVICE_INIT DeviceInit
);
Параметры
[in] DeviceInit
Указатель на структуру WDFDEVICE_INIT.
Возвращаемое значение
Никакой
Замечания
Если драйвер получает структуру WDFDEVICE_INIT от вызова WdfPdoInitAllocate или WdfControlDeviceInitAllocateи если драйвер впоследствии возникает ошибка при вызове метода инициализации объекта устройства или WdfDeviceCreate, драйвер должен вызывать WdfDeviceInitFree.
Драйвер не должен вызывать WdfDeviceInitFree после успешного вызова WdfDeviceCreate.
Драйверу не нужно вызывать WdfDeviceInitFree, если он получил структуру WDFDEVICE_INIT в качестве входных данных для его Функции обратного вызова EvtDriverDeviceAdd, так как платформа удаляет структуру после возврата функции обратного вызова.
Дополнительные сведения о вызове WdfDeviceCreateсм. в создании объекта устройства Framework.
Примеры
В следующем примере кода вызывается 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 (include 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) |