Функция NdisMFreePort (ndis.h)
Функция NdisMFreePort освобождает порт NDIS, который ранее был выделен функцией NdisMAllocatePort.
Синтаксис
NDIS_STATUS NdisMFreePort(
NDIS_HANDLE NdisMiniportHandle,
[in] NDIS_PORT_NUMBER PortNumber
);
Параметры
NdisMiniportHandle
Дескриптор минипорта, передаваемый NDIS в параметр MiniportAdapterHandleфункция MiniportInitializeEx.
[in] PortNumber
Число портов NDIS, которые должны быть освобождены NDIS. Значение portNumber является NDIS_PORT_NUMBER значением, которое имеет тип данных ULONG. NDIS предоставил номер порта в элементе PortNumber NDIS_PORT_CHARACTERISTICS структуру, когда драйвер минипорта вызывает функцию NdisMAllocatePort.
Номер порта может быть числом от 1 до 0xffffff. Нельзя задать для номер порта значение нулю, указывающее порт по умолчанию.
Возвращаемое значение
NdisMFreePort может возвращать одно из следующих значений:
Возвращаемый код | Описание |
---|---|
|
NDIS успешно освобождает ресурсы для порта. |
|
NDIS не удалось освободить ресурсы для порта, так как номер порта недопустим. |
|
NDIS не удалось освободить ресурсы для порта, так как порт находится в состоянии, где свободная операция недопустима. Чтобы освободить порт, порт должен находиться в выделенном состоянии. |
|
Номер порта, предоставленный в параметре PortNumber, был недопустимым. |
Замечания
Если мини-драйвер выделил порт, вызвав функцию NdisMAllocatePort, драйвер должен освободить порт, прежде чем он возвращается из функции MiniportHaltEx. Если драйвер минипорта активировал порт путем выдачи события NetEventPortActivation Plug and Play (PnP), драйвер должен выдавать событие NetEventPortDeactivation PnP для порта перед освобождением порта.
Когда драйвер минипорта вызывает NdisMFreePort для освобождения порта, NDIS также освобождает номер порта, назначенный освобожденному порту, чтобы NDIS могли повторно использовать номер порта.
Минипорт-драйвер не должен пытаться освободить порт по умолчанию.