啟用 NDIS 埠
在迷你埠驅動程式成功配置 NDIS 埠之後,以及在 NDIS 函式中使用埠號碼之前,驅動程式必須啟用埠。 若要啟用埠,迷你埠驅動程式會將埠啟用即插即用 (PnP) 事件傳送至 NDIS。 若要傳送埠啟用 PnP 事件,迷你埠驅動程式會在呼叫 NdisMNetPnPEvent 函式時,使用 NetEventPortActivation PnP 事件碼。
若要啟用埠,迷你埠驅動程式必須將 NdisMNetPnPEvent 的 NetPnPEvent 參數指向的 NET_PNP_EVENT_NOTIFICATION 結構的成員設定如下所示:
PortNumber
事件通知的原始來源埠。 將此成員設定為零,因為埠號碼是在 Buffer 中提供,NetPnPEvent 成員所指定的結構成員。
NetPnPEvent
描述埠啟用事件的 NET_PNP_EVENT 結構。 設定此結構的成員,如下所示:
NetEvent
描述事件的事件程序代碼。 將此成員設定為 NetEventPortActivation。
緩衝區
指向 NDIS_PORT 結構之連結清單的指標。 NDIS_PORT 結構的 Next 成員會指向清單中的下一個 NDIS_PORT 結構。
緩衝區長度
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 會使用 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 會將預設埠的驗證狀態傳遞至 MiniportInitializeEx 函式,DefaultPortAuthStatesNDIS_MINIPORT_INIT_PARAMETERS 結構的成員。 如果迷你埠驅動程式控制預設埠,當迷你埠驅動程序啟動預設埠時,可以使用預設驗證設定來啟用預設埠。 若要使用預設驗證設定,請在 NDIS_PORT_CHARACTERISTICS 結構的 Flags 成員中設定NDIS_PORT_CHAR_USE_DEFAULT_AUTH_SETTINGS旗標。 迷你埠驅動程式可以對它們配置和啟用的埠使用NDIS_PORT_CHAR_USE_DEFAULT_AUTH_SETTINGS旗標。 針對啟用案例,NDIS 會將預設的驗證狀態指派給新啟動的埠,並忽略傳遞至 NetEventPortActivation 事件的 NdisMNetPnPEvent 的驗證狀態。
如需控制預設埠和設定埠的詳細資訊,請參閱 設定 NDIS 埠。