Функция IoAllocateDriverObjectExtension (wdm.h)

Подпрограмма IoAllocateDriverObjectExtension выделяет область контекста для каждого драйвера, называемую расширением объекта драйвера, и назначает ей уникальный идентификатор.

Синтаксис

NTSTATUS IoAllocateDriverObjectExtension(
  [in]  PDRIVER_OBJECT DriverObject,
  [in]  PVOID          ClientIdentificationAddress,
  [in]  ULONG          DriverObjectExtensionSize,
  [out] PVOID          *DriverObjectExtension
);

Параметры

[in] DriverObject

Указатель на объект драйвера, с которым будет связана область контекста.

[in] ClientIdentificationAddress

Задает уникальный идентификатор выделенной области контекста.

[in] DriverObjectExtensionSize

Указывает длину выделенной области контекста (в байтах).

[out] DriverObjectExtension

Указатель на выделенную область контекста после завершения.

Возвращаемое значение

IoAllocateDriverObjectExtension возвращает один из следующих кодов NTSTATUS:

Код возврата Описание
STATUS_SUCCESS
Указывает, что подпрограмма выделила расширение запрошенного размера.
STATUS_INSUFFICIENT_RESOURCES
Указывает, что память не может быть выделена для расширения объекта драйвера.
STATUS_OBJECT_NAME_COLLISION
Указывает, что расширение объекта драйвера с заданным ClientIdentificationAddress уже существует.

Комментарии

Память, выделенная системой для расширения объекта драйвера, является резидентным хранилищем и доступна из любого IRQL. Выделенное хранилище автоматически освобождается диспетчером ввода-вывода при удалении объекта драйвера.

Вызывающие компоненты этой подпрограммы должны предоставлять уникальный идентификатор clientIdentificationAddress. Чтобы получить указатель на область контекста, вызывающий объект передает ClientIdentificationAddress в IoGetDriverObjectExtension.

Требования

Требование Значение
Минимальная версия клиента Доступно начиная с Windows 2000.
Целевая платформа Универсальное
Верхняя часть wdm.h (включая Wdm.h, Ntddk.h, Ntifs.h)
Библиотека NtosKrnl.lib
DLL NtosKrnl.exe
IRQL <= DISPATCH_LEVEL

См. также раздел

IoGetDriverObjectExtension