Вы должны поддерживать список привязанных адаптеров..
typedef struct _ADAPT
{
PADAPT Next;
NDIS_HANDLE BindingHandle; // Для нижнего минипорта
NDIS_HANDLE MiniportHandle; // NDIS хэндл для вызова минипорта
PDEVICE_OBJECT PDO; // Physical Device Object
NDIS_HANDLE SendPacketPoolHandle;
NDIS_HANDLE RecvPacketPoolHandle;
Новая структура создается в PtBindAdapter и передается как контекстный параметр в
MPInitialize - обработчик инициализации, который вызывается запросом
NdisIMInitializeDeviceInstanceEx( DriverHandle, &Param->ParameterData.StringData, pAdapt)
PtBindAdapter (...) {
...
::NdisAllocateMemoryWithTag( (void**) &(pAdapt->BundleUniString.Buffer), MAX_BUNDLEID_LENGTH, TAG);
...
::NdisIMInitializeDeviceInstanceEx( DriverHandle, &Param->ParameterData.StringData, pAdapt);
MPInitialize (...)
//
// Вставка в наш глобальный pAdapt список (push front)
//
KeAcquireSpinLock (&pAdapt->SpinLock, &OldIrql);
pAdapt->Next = pAdaptList;
pAdaptList = pAdapt;
KeReleaseSpinLock (&pAdapt->SpinLock, OldIrql);
NdisReleaseSpinLock( &GlobalLock);
Далее это всё отслеживается PtUnbindAdapter