Поделиться через


Функция QOSStartTrackingClient (qos2.h)

Функция QOSStartTrackingClient уведомляет подсистему QOS о существовании нового клиента. Вызов этой функции повышает вероятность того, что подсистема QOS будет собирать достаточные сведения о сетевом пути, чтобы помочь при вызове QOSSetFlow для настройки потока.

Примечание Этот вызов не требуется для добавления потока с помощью функции QOSAddSocketToFlow , хотя он настоятельно рекомендуется. Не вызывая эту функцию, может потребоваться запустить сетевые эксперименты во время вызова QOSSetFlow , что может привести к сбою QOSSetFlow с ERROR_NETWORK_BUSY при первоначальном использовании.

 

Синтаксис

ExternC BOOL QOSStartTrackingClient(
  [in] HANDLE    QOSHandle,
  [in] PSOCKADDR DestAddr,
       DWORD     Flags
);

Параметры

[in] QOSHandle

Дескриптор подсистемы QOS, возвращаемой QOSCreateHandle.

[in] DestAddr

Указатель на структуру sockaddr , содержащую IP-адрес клиентского устройства. Клиенты идентифицируются по их IP-адресу и семейству адресов. Любой номер порта, указанный в структуре sockaddr, будет игнорироваться.

Flags

Зарезервировано для последующего использования. Должен иметь значение 0.

Возвращаемое значение

Если функция выполняется успешно, возвращается ненулевое значение.

Если функция завершается сбоем, возвращаемое значение равно 0. Дополнительные сведения об ошибке можно получить, вызвав GetLastError. Ниже приведены некоторые возможные коды ошибок.

Код возврата Описание
ERROR_INVALID_HANDLE
Недопустимый параметр QOSHandle .
ERROR_INVALID_PARAMETER
Недопустимый параметр DestAddr .
ERROR_NOT_ENOUGH_MEMORY
Указывает, что произошел сбой выделения памяти.
ERROR_NO_SYSTEM_RESOURCES
Недостаточно ресурсов для выполнения операции.
ERROR_IO_DEVICE
Выполнить запрос невозможно из-за ошибки устройства ввода-вывода.
ERROR_DEVICE_REINITIALIZATION_NEEDED
Указанное устройство требует повторной инициализации из-за ошибок оборудования. Приложение должно очистить и снова вызвать QOSCreateHandle .
ERROR_NOT_SUPPORTED
Запрос не поддерживается.
ERROR_ADAP_HDW_ERR
Произошла ошибка оборудования сетевого адаптера.
ERROR_HOST_UNREACHABLE
Не удается связаться с сетевым расположением.

Комментарии

После получения вызова QOSStartTrackingClient подсистема QoS начинает сбор сведений о клиенте, таких как возможности качества обслуживания и доступная пропускная способность по сквозной схеме.

Приложение должно вызывать эту функцию, как только ему становится известно о клиентском устройстве, которому может потребоваться поток качества обслуживания. Например, эта функция должна вызываться при первом подключении устройства проигрывателя мультимедиа к приложению сервера мультимедиа.

Сетевые эксперименты, выполняемые QOSStartTrackingClient , не представляют заметной нагрузки на сеть, даже если поток не запускается в течение длительного периода времени. Служба qWAVE динамически настраивает трафик эксперимента на основе активности подсистемы QoS.

Чтобы эта функция работала, необходимо реализовать обнаружение топологии на уровне каналов (LLTD) на компьютере-приемнике или устройстве.

Примеры

В следующем коде показано использование функций, обработка распространенных исключений и обязательные инициализации параметров. Фактические значения параметров могут отличаться в зависимости от версии QoS. Файл заголовка Winsock2.h должен быть включен для использования определенных Winsock идентификаторов или функций.

QOS_VERSION    Version;
HANDLE         QoSHandle = NULL;
BOOL        QoSResult = FALSE;

Version.MajorVersion = 1;
Version.MinorVersion = 0;

// Get a handle to the QoS subsystem (required for tracking).
QoSResult = QOSCreateHandle(
    &Version, 
    &QoSHandle );

if(!QOSStartTrackingClient(QoSHandle, (sockaddr*)ptr->ai_addr, 0))
{
    std::cerr << std::endl;
    std::cerr << __FILE__ <<" Line: " << __LINE__ ;
    std::cerr << " - QOSStartTrackingClient failed. Exception code: "; 
    std::cerr << GetLastError();

    if (GetLastError() == ERROR_NOT_SUPPORTED)
    {
        std::cerr << std::endl;
        std::cerr << " ERROR_NOT_SUPPORTED" << std::endl;
        std::cerr << "This operation requires information";
        std::cerr << "that the QoS subsystem does not have. " << std::endl;
    }
}
else
    std::cout << "QoS client tracking started." << std::endl;



Требования

Требование Значение
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2008 [только классические приложения]
Целевая платформа Windows
Header qos2.h (включая Qos2.h)
Библиотека Qwave.lib
DLL Qwave.dll

См. также раздел

QOSCreateHandle

Качество звука и видео Windows (qWAVE)