共用方式為


停用 NDIS 埠

若要停用 NDIS 埠,迷你埠驅動程式會將埠停用隨插即用 (PnP) 事件傳送至 NDIS。 在迷你埠驅動程式成功啟用埠之後,驅動程式必須先停用埠,才能釋放埠。 此外,驅動程式可能會因為應用程式特定原因而停用埠。 埠可以在停用後重新啟用,但如果已釋放埠,則無法重新啟用埠。

若要傳送埠停用 PnP 事件,迷你埠驅動程式會使用NdisMNetPnPEvent函式呼叫中的NetEventPortDeactivation PnP 事件程式碼。 若要停用埠,迷你埠驅動程式必須將NdisMNetPnPEvent參數的 NetPnPEvent參數設定為NET_PNP_EVENT_NOTIFICATION結構的成員,如下所示:

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

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

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

緩衝區
NDIS_PORT_NUMBER型別專案陣列的指標。 陣列包含迷你埠驅動程式正在停用之所有埠的埠號碼。

BufferLength
Buffer中指定的位元組數目。 將 BufferLength 設定為 Buffer 指向的陣列大小。 若要取得陣列中的元素數目,請將 BufferLength 中的值除以NDIS_PORT_NUMBER資料類型的大小。

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

迷你埠驅動程式可以提供陣列,並提供要停用的埠清單。 不過,如果迷你埠配接器的預設埠是 NetEventPortDeactivation PnP 事件的目標,則預設埠必須是陣列中指定的唯一端口。

迷你埠驅動程式可以隨時停用作用中的埠。 不過,在迷你埠驅動程式停用埠之前,它必須確定沒有未完成的狀態指示或接收與該埠相關聯的指示。 在迷你埠驅動程式傳送埠停用 PnP 事件之後,它不得起始任何狀態或接收與停用埠相關聯的指示。

迷你埠驅動程式也可以重新啟用埠。 如需啟用 NDIS 埠的詳細資訊,請參閱 啟用 NDIS 埠

當迷你埠驅動程式停用埠時,NDIS 會使用 NetEventPortDeactivation PnP 事件通知系結至迷你埠驅動程式的所有通訊協定驅動程式。 此 PnP 事件會列出已變更為已配置狀態且不包含任何已停用的埠。 如需在通訊協定驅動程式中處理埠停用事件的詳細資訊,請參閱 處理埠停用 PnP 事件

在迷你埠驅動程式配置 NDIS 埠之前,驅動程式必須呼叫 NdisMSetMiniportAttributes 函式,才能在 NDIS_MINIPORT_ADAPTER_REGISTRATION_ATTRIBUTES 結構中設定註冊屬性。 迷你埠驅動程式可以藉由在呼叫 NdisMSetMiniportAttributes時,設定NDIS_MINIPORT_CONTROLS_DEFAULT_PORT屬性旗標來控制預設埠的啟用。 如果迷你埠驅動程式負責啟用預設埠,而迷你埠驅動程式已啟用預設埠,它必須先停用預設埠,才能從 MiniportHaltEx 函式傳回。

NDIS_PORT_NUMBER 元素陣列所指定的所有埠都必須處於啟動狀態。 迷你埠驅動程式不應該嘗試停用已停用的埠。

如果 NDIS 無法停用埠陣列中的任何埠,則埠陣列中的任何埠都不會變更狀態。 如果停用失敗,因為某些指定的埠不存在, NdisMNetPnPEvent 函式會傳回NDIS_STATUS_INVALID_PORT傳回值。 如果停用失敗,因為某些埠未處於啟動狀態, NdisMNetPnPEvent 會傳回NDIS_STATUS_INVALID_PORT_STATE傳回值。

呼叫 NdisMNetPnPEvent 傳回之前,埠不會停用,而且迷你埠驅動程式必須能夠處理 OID 要求,並傳送與該埠相關聯的要求。

當迷你埠驅動程式停用預設埠時,NDIS 會關閉過度通訊協定驅動程式與迷你埠配接器之間的所有系結。 如果迷你埠驅動程式嘗試停用預設埠,且預設埠已經停用, NdisMNetPnPEvent 就會失敗,並傳回NDIS_STATUS_INVALID_PORT_STATE傳回值。 如果迷你埠驅動程式嘗試停用預設埠,而預設埠不是NDIS_PORT_NUMBER元素陣列中指定的唯一端口, NdisMNetPnPEvent 會失敗,並傳回NDIS_STATUS_INVALID_PORT傳回值。 如果迷你埠驅動程式將 Buffer 成員設定為 NullBufferLength 成員為零, NDIS 會失敗 NdisMNetPnPEvent 呼叫,並傳回NDIS_STATUS_INVALID_PARAMETER傳回值。

成功停用埠之後,埠會處於已配置狀態。 迷你埠驅動程式無法指出已接收的資料或已配置狀態的埠狀態。