функция обратного вызова MINIPORT_ALLOCATE_SHARED_MEM_COMPLETE (ndis.h)
NDIS вызывает функцию MiniportSharedMemoryAllocateComplete драйвера miniport, чтобы выполнить запрос на выделение общей памяти, запущенный драйвером мини-порта, вызвавФункция NdisMAllocateSharedMemoryAsyncEx.
Синтаксис
MINIPORT_ALLOCATE_SHARED_MEM_COMPLETE MiniportAllocateSharedMemComplete;
void MiniportAllocateSharedMemComplete(
[in] NDIS_HANDLE MiniportAdapterContext,
[in] PVOID VirtualAddress,
[in] PNDIS_PHYSICAL_ADDRESS PhysicalAddress,
[in] ULONG Length,
[in] PVOID Context
)
{...}
Параметры
[in] MiniportAdapterContext
Дескриптор контекстной области, выделенной драйвером мини-порта, в которой драйвер хранит сведения о состоянии сетевой карты. Драйвер выделяет эту область контекста вФункция MiniportInitializeEx.
[in] VirtualAddress
Базовый виртуальный адрес общей памяти, выделенной драйвером мини-порта путем вызова NdisMAllocateSharedMemoryAsyncEx. VirtualAddress имеет значение NULL , если попытка выделения не удалась.
[in] PhysicalAddress
Базовый физический адрес сетевой карты, который сопоставляется с адресом, который указан параметром VirtualAddress .
[in] Length
Количество байтов, выделенных NdisMAllocateSharedMemoryAsyncEx .
[in] Context
Указатель на контекстную область, указанную драйвером мини-порта в предыдущем вызове NdisMAllocateSharedMemoryAsyncEx.
Возвращаемое значение
None
Remarks
MiniportAllocateSharedMemoryComplete — это необязательная функция для драйверов мини-портов. Драйвер мини-порта регистрирует функцию MiniportAllocateSharedMemoryComplete в структуре NDIS_SG_DMA_DESCRIPTION, переданной драйверуФункция NdisMRegisterScatterGatherDma.
Вызов водителей минипорта NdisMAllocateSharedMemoryAsyncEx для выделения общей памяти. Если NdisMAllocateSharedMemoryAsyncEx возвращает NDIS_STATUS_PENDING, NDIS вызывает MiniportAllocateSharedMemoryComplete , чтобы передать память драйверу мини-порта.
NDIS вызывает MiniportSharedMemoryAllocateComplete на PASSIVE_LEVEL IRQL.
Примеры
Чтобы определить функцию MiniportSharedMemoryAllocateComplete , необходимо сначала предоставить объявление функции, определяющее тип определяемой функции. Windows предоставляет набор типов функций для драйверов. Объявление функции с помощью типов функций помогает анализу кода для драйверов, средству проверки статических драйверов (SDV) и другим средствам проверки находить ошибки, и это требование для написания драйверов для операционной системы Windows.Например, чтобы определить функцию MiniportSharedMemoryAllocateComplete с именем MySharedMemoryAllocateComplete, используйте тип MINIPORT_ALLOCATE_SHARED_MEM_COMPLETE , как показано в следующем примере кода:
MINIPORT_ALLOCATE_SHARED_MEM_COMPLETE MySharedMemoryAllocateComplete;
Затем реализуйте функцию следующим образом:
_Use_decl_annotations_
VOID
MySharedMemoryAllocateComplete(
NDIS_HANDLE MiniportAdapterContext,
PVOID VirtualAddress,
PNDIS_PHYSICAL_ADDRESS PhysicalAddress,
ULONG Length,
PVOID Context
)
{...}
Тип функции MINIPORT_ALLOCATE_SHARED_MEM_COMPLETE определен в файле заголовка Ndis.h. Чтобы более точно определить ошибки при запуске средств анализа кода, не забудьте добавить заметку Use_decl_annotations в определение функции. Заметка Use_decl_annotations гарантирует использование заметок, которые применяются к типу функции MINIPORT_ALLOCATE_SHARED_MEM_COMPLETE в файле заголовка. Дополнительные сведения о требованиях к объявлениям функций см. в статье Объявление функций с помощью типов ролей функций для драйверов NDIS.
Сведения о Use_decl_annotations см. в статье Поведение функции с заметками.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Поддерживается в NDIS 6.0 и более поздних версиях. |
Целевая платформа | Windows |
Header | ndis.h (включая Ndis.h) |
IRQL | PASSIVE_LEVEL |