啟用 NDIS 埠

在迷你埠驅動程式成功配置 NDIS 埠之後,以及在 NDIS 函式中使用埠號碼之前,驅動程式必須啟用埠。 若要啟用埠,迷你埠驅動程式會將埠啟用傳送至 NDIS 隨插即用 (PnP) 事件。 若要傳送埠啟用 PnP 事件,迷你埠驅動程式會使用NdisMNetPnPEvent函式呼叫中的NetEventPortActivation PnP 事件程式碼。

若要啟用埠,迷你埠驅動程式必須將NdisMNetPnPEvent參數的 NetPnPEvent參數設定為NET_PNP_EVENT_NOTIFICATION結構的成員,如下所示:

PortNumber
事件通知的來源埠。 將此成員設定為零,因為NetPnPEvent成員所指定結構的Buffer成員中會提供埠號碼。

NetPnPEvent
描述埠啟用事件的 NET_PNP_EVENT 結構。 設定此結構的成員,如下所示:

NetEvent
描述事件的事件程式碼。 將此成員設定為 NetEventPortActivation

緩衝區
NDIS_PORT結構連結清單的指標。 NDIS_PORT 結構的 Next 成員會 指向清單中的下一個NDIS_PORT結構。

BufferLength
Buffer中指定的位元組數目。 將 BufferLength 設定為NDIS_PORT結構的大小。

其他成員
將NET_PNP_EVENT的其餘成員設定為 Null

迷你埠驅動程式會列出已將狀態從非作用中變更為作用中的埠,並列在 NDIS_PORT 結構的連結清單中。 不過,如果迷你埠配接器的預設埠是 NetEventPortActivation PnP 事件的目標,則預設埠必須是清單中唯一的埠。

當迷你埠驅動程式通知 NDIS 啟用埠 (,而且此通知呼叫傳回) 之前,迷你埠驅動程式必須準備好處理與埠相關聯的傳送要求和 OID 要求。 在 呼叫 NdisMNetPnPEvent 傳回之前,迷你埠驅動程式不得使用狀態中新啟用埠的埠號碼或接收指示。

在預設埠作用中之後,NDIS 不會通知過度處理已啟用的埠。 當 NDIS 呼叫通訊協定驅動程式的ProtocolBindAdapterEx函式時,NDIS 會在BindParameters參數所指向之NDIS_BIND_PARAMETERS結構的ActivePorts成員中,提供目前作用中埠的清單。 當迷你埠驅動程式啟動新的埠時,NDIS 會通知所有系結至 Miniport 驅動程式的通訊協定驅動程式與 NetEventPortActivation PnP 事件。 如需在通訊協定驅動程式中處理這些埠啟用事件的詳細資訊,請參閱 處理埠啟用 PnP 事件

在迷你埠驅動程式配置 NDIS 埠之前,驅動程式必須呼叫 NdisMSetMiniportAttributes 函式,才能在 NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES 結構中設定註冊屬性。 迷你埠驅動程式可以藉由在呼叫 NdisMSetMiniportAttributes時,設定NDIS_MINIPORT_CONTROLS_DEFAULT_PORT屬性旗標來控制預設埠的啟用。 如果迷你埠驅動程式負責啟用預設埠,NDIS 不會在迷你埠介面卡與過度配置驅動程式之間起始系結,直到迷你埠驅動程式使用埠啟用 PnP 事件來啟動預設埠為止。

NDIS_PORT結構連結清單所指定的所有埠都必須處於配置狀態。 迷你埠驅動程式不應該嘗試啟用已作用中的埠;如果驅動程式嘗試啟用作用中的埠,NDIS 會將情況視為埠啟用失敗。

如果 NDIS 無法啟用清單中的任何埠,它會失敗呼叫 NdisMNetPnPEvent,且清單上沒有任何埠會將狀態變更為已啟用狀態。 如果 NDIS 因為某些埠不存在而無法啟用埠, NdisMNetPnPEvent 會傳回NDIS_STATUS_INVALID_PORT傳回值。 如果 NDIS 因為某些埠未處於配置狀態而無法啟用埠, NdisMNetPnPEvent 會傳回NDIS_STATUS_INVALID_PORT_STATE傳回值。

成功啟用埠之後,埠會處於啟動狀態。 迷你埠驅動程式可以指出處於啟動狀態的埠已接收資料和狀態。

NDIS 會將預設埠的驗證狀態傳遞至NDIS_MINIPORT_INIT_PARAMETERS結構之 DefaultPortAuthStates成員的MiniportInitializeEx函式。 如果迷你埠驅動程式控制預設埠,當迷你埠驅動程式啟動預設埠時,可以使用預設驗證設定來啟用預設埠。 若要使用預設驗證設定,請在NDIS_PORT_CHARACTERISTICS 結構的Flags成員中設定NDIS_PORT_CHAR_USE_DEFAULT_AUTH_SETTINGS旗標。 迷你埠驅動程式可以使用NDIS_PORT_CHAR_USE_DEFAULT_AUTH_SETTINGS旗標來配置和啟用的埠。 針對啟用案例,NDIS 會將預設驗證狀態指派給新啟動的埠,並忽略傳遞至NetEventPortActivation事件的NdisMNetPnPEvent驗證狀態。

如需控制預設埠和配置埠的詳細資訊,請參閱 配置 NDIS 埠