Client-Initiated Anforderung zum Ändern von Anrufparametern
Ein Client fordert eine Änderung der Dienstqualität (Quality of Service, QoS) für eine aktive virtuelle Verbindung (VC) mit NdisClModifyCallQoS an.
Die folgende Abbildung zeigt den Client eines Anruf-Managers, der eine Änderung der Dienstqualität anfordert.
Die folgende Abbildung zeigt den Client eines MCM-Treibers, der eine Änderung der Dienstqualität anfordert.
Im Aufruf von NdisClModifyCallQoS stellt der Client Folgendes bereit:
Ein NdisVcHandle-Parameter , der die VC identifiziert.
Ein Zeiger auf eine CO_CALL_PARAMETERS-Struktur , die die Aufrufparameter enthält, die der Client anfordert.
Die Umstände, unter denen ein Client eine Änderung in QoS anfordern kann, werden durch das Signalisierungsprotokoll bestimmt.
Der Aufruf von NdisClModifyCallQoS bewirkt, dass NDIS die ProtocolCmModifyCallQoS-Funktion des Anruf-Managers oder MCM-Treibers aufruft, die die NdisVcHandle - und gepufferte CO_CALL_PARAMETERS Struktur eingibt, die der Client an NdisClModifyCallQoS übergibt. ProtocolCmModifyQoS kommuniziert mit Netzwerksteuerungsgeräten oder anderen medienspezifischen Agents, wie es für die Medien erforderlich ist, um die medienspezifischen Aufrufparameter für eine etablierte virtuelle Verbindung zu ändern.
Nach der Kommunikation mit dem Netzwerk und der Feststellung, dass die Änderungen erfolgreich waren, muss ein Anruf-Manager NdisCmActivateVc (und ein MCM-Treiber muss NdisMCmActivateVc aufrufen), um die angegebene VC mit den neuen Aufrufparametern zu aktivieren.
Wenn das Netzwerk die neuen Aufrufparameter nicht akzeptiert oder wenn der zugrunde liegende Miniporttreiber die Parameter nicht akzeptieren kann, muss der Aufruf-Manager oder MCM-Treiber die VC in den Zustand wiederherstellen, der vor dem Versuch von Änderungen vorhanden war, und NDIS_STATUS_FAILURE zurückgeben.
Um die status der Anforderung des Clients zur Änderung der QoS anzugeben, ruft ein Anruf-Manager NdisCmModifyCallQoSComplete auf, und ein MCM-Treiber ruft NdisMCmModifyCallQoSComplete auf. In diesem Aufruf übergibt der Anruf-Manager oder MCM-Treiber Folgendes:
Ein NDIS_STATUS, der die status der Anforderung angibt.
Ein NdisVcHandle , das die VC identifiziert.
Ein Zeiger auf eine CO_CALL_PARAMETERS-Struktur, die die Aufrufparameter für die VC enthält.
Wenn das Signalisierungsprotokoll dies zulässt, kann der Anruf-Manager oder MCM-Treiber geänderte Anrufparameter an den Client zurückgeben. Diese Änderungen können das Produkt der Aushandlung mit dem Netzwerk sein, oder sie können vom Anrufmanager oder MCM-Treiber selbst bereitgestellt werden. Ein Anruf-Manager oder MCM-Treiber sollte angeben, dass die Aufrufparameter geändert wurden, indem das CALL_PARAMETERS_CHANGED-Flag in der CO_CALL_PARAMETERS-Struktur festgelegt wurde.
Der Aufruf von Ndis(M)CmModifyCallQoSComplete bewirkt, dass NDIS die ProtocolClModifyCallQoSComplete-Funktion des Clients aufruft . NDIS übergibt Folgendes an ProtocolClModifyCallQoSComplete:
Ein NDIS_STATUS, der die status der Anforderung des Clients angibt, die QoS zu ändern.
Ein ProtocolVcContext-Handle , das die VC identifiziert.
Ein Zeiger auf eine CO_CALL_PARAMETERS-Struktur, die die Aufrufparameter enthält, die vom Anruf-Manager oder MCM-Treiber an Ndis(M)CmModifyCallQoSComplete übergeben werden.
Wenn das CALL_PARAMETERS_CHANGED-Flag in der CO_CALL_PARAMETERS-Struktur festgelegt ist, muss der Client die zurückgegebenen Aufrufparameter untersuchen und ermitteln, ob die Änderungen akzeptabel sind. Wenn der Aufruf von NdisClModifyCallQoS durch den Client erfolgreich ist, kann ProtocolClModifyCallQoSComplete die QoS-Änderung akzeptieren, indem einfach die Steuerung zurückgegeben wird. Andernfalls kann ProtocolClModifyCallQoSComplete weitere Verhandlungen mit dem Anruf-Manager durchführen, sofern dies vom Signalisierungsprotokoll zulässig ist und solange der Entwickler des Clients die Anzahl möglicher Neuverhandlungen begrenzt. Alternativ kann ProtocolClModifyCallQoSComplete den Anruf mit NdisClCloseCall einfach abreißen (siehe clientinitiierte Anforderung zum Schließen eines Anrufs), wenn der Anruf-Manager eine Anforderung zum Ändern der QoS ablehnt und die zuvor festgelegte QoS für den Client inakzeptabel geworden ist.