Компьютерные книги
Главное меню
Главная Поиск по сайту Добавить материал О нас Карта книг Карта сайта
Реклама
computersbooks.net -> Добавить материал -> Графика -> Гончаров Д. -> "DirectX 7.0 Для программистов" -> 158

DirectX 7.0 Для программистов - Гончаров Д.

Гончаров Д., Салихо Т. DirectX 7.0 Для программистов — Спб.: Питер, 2001. — 528 c.
ISBN 5-318-00173-4
Скачать (прямая ссылка): dirext7dlyaprogrammistov2001.djvu
Предыдущая << 1 .. 152 153 154 155 156 157 < 158 > 159 160 161 162 163 164 .. 229 >> Следующая

При создании или перечислении сеансов вызывается диалоговое окно для выбора конфигурации серийного порта. Серийные порты обязательно должны быть сконфигурированы на обоих компьютерах, участвующих в соединении.
Протокол DirectPlay
Протокол DirectPlay используется для гарантированной доставки сообщений при использовании протоколов, не имеющих такой возможности. Например, системный провайдер IPX не предоставляет пересылку пакетов с гарантией доставки. В этом случае протокол DirectPlay самостоятельно проверяет точность доставки пакетов.
Для увеличения производительности сети протокол DirectPlay использует асинхронный способ передачи сообщений, при котором пакеты имеют различный размер. Так же, для того чтобы сообщение не было отправлено прежде, чем оно будет получено следующим сетевым уровнем, протокол DirectPlay намеренно уменьшает их количество.
Все системные сообщения всегда отсылаются с гарантией доставки независимо от того, поддерживает эту возможность выбранный протокол или нет, и вне зависимости от использования протокола DirectPlay, поскольку при отсылке системных сообщений протокол DirectPlay применяется автоматически.
Приложение будет использовать протокол DirectPlay для гарантированной доставки сообщений, если при открытии сеанса был установлен флаг DPSESSION_ DIRECTPLAYPROT0С0L.
Инициализация DirectPlay
365
Чтобы при отсылке несистемных сообщений также иметь гарантию доставки, необходимо установить флаг DPSEND GUARANTEED при вызове функции IDirectPlay4:: SendExO. Если использование протокола DirectPlay не указано, гарантированная рассылка сообщений будет произведена только в том случае, если ее поддерживает текущий системный провайдер, вне зависимости от того, установлен флаг DPSEND_ GUARANTEED или нет.
В табл. 12.1 и 12.2 показано, как будут рассылаться несистемные сообщения в зависимости от наличия флага DPSESSIONDIRECTPLAYPROTOCOL.
Таблица 12.1. Использование протоколов без флага DPSESSION_DIRECTPLAYPROTOCOL
Системный провайдер Сообщения с гарантированной доставкой Сообщения без гарантированной доставки
IPX TCP/IP Модем Протокол IPX не предоставляет гарантированную доставку Протокол TCP Модем не предоставляет гарантированную доставку Протокол IPX Протокол UDP Модем
Таблица 12.2. Использование протоколов с флагом DPSESSION_DIRECTPLAYPROTOCOL
Системный провайдер Сообщения с гарантированной доставкой Сообщения без гарантированной доставки
IPX TPC/IP Модем Протокол DirectPlay через IPX Протокол DirectPlay через UDP Протокол DirectPlay через модем Протокол DirectPlay через IPX Протокол DirectPlay через UDP Протокол DirectPlay через модем
Инициализация DirectPlay
Начальный шаг при создании любого приложения — инициализация. Есть два способа создания интерфейса IDirectPlay4.
Первый способ заключается в использовании функции Di rectPl ayCreate, которая создает интерфейс IDirectPlay. Неудобство ее состоит в том, что для получения интерфейса IDi rectPl ау4 необходимо использовать функцию QuerylnterfaceO, а затем удалить старый интерфейс функцией ReleaseO.
Второй метод заключается в использовании функции CoCreatelnstanceO. При этом вы непосредственно создаете интерфейс IDi rectPl ау4 без привлечения промежуточных интерфейсов.
Мы рассмотрим оба метода создания интерфейса IDi rectPl ау4.
Функция DirectPlayCreate создает интерфейс IDirectPlay. Ее прототип представлен ниже.
HRESULT WINAPI DirectPlayCreate(
LPGUID lpGUIDSP,
LPDIRECTPLAY FAR *lplpDP,
IUnknown *lpUnk
);
366
Урок 12 • Сетевые подключения
Первым параметром является указатель на уникальный идентификатор системного провайдера, который будет использоваться для передачи сообщении. Если вы по какой-либо причине не желаете его указывать, можете передать нулевой идентификатор — GUID_NULL.
Следующий параметр — указатель на интерфейс DirectPlay, который будет создан. При использовании данной функции возможно создание только интерфейса IDirectPlay. Для получения более высоких версий необходимо воспользоваться функцией QuerylnterfaceO.
Последний параметр в данной версии библиотеки не используется и должен быть равным нулю, иначе функция возвратит код ошибки — DPERRINVALIDPARAMS.
Если интерфейс по какой-либо причине не может быть создан, функция возвратит ошибку DPERR UNAVAILABLE. В случае успешного завершения функция возвратит DP0K.
Как уже говорилось, для получения интерфейса версии выше, чем IDirectPlay, необходимо использовать функцию QuerylnterfaceO. Следующий код демонстрирует пример создания интерфейса IDirectPlay и последующее получение интерфейса IDirectPlay4.
//Создание интерфейса IDirectPlay
hRet - DirectPlayCreate(GUID_NULL, lpdp, NULL);
//Получение интерфейса необходимой версии
hr* lpdp->QueryInterface(IID_IDirectPlay4f (V0ID**)&lpdp4);
//Уничтожение ненужного интерфейса lpdp->Release();
Следующий метод мы не будем подробно описывать, рассмотрим лишь пример его использования.
CoCreatelnstanceCCLSID DirectPlay, NULL. CLSCTX_ALL, IID_IDirectPlay4A. (V0ID**)&g_pDP)
В параметрах функции CoCreatelnstance указываются идентификатор класса DirectPlay и идентификатор интерфейса IDi rectPl ау4. Последний параметр — указатель на интерфейс, который будет создан.
Предыдущая << 1 .. 152 153 154 155 156 157 < 158 > 159 160 161 162 163 164 .. 229 >> Следующая
Книги
Web-программирован-
ие
Аппаратное обеспечение Графика Руководство по П.О. Самоучитель Теория программирования Фотошоп Языки программирования
Новые книги
Вирт Н. "Систематическое программирование " (Теория программирования)

Эком "Microsoft Excel 2000 шаг за шагом Русская версия самоучитель " (Самоучитель)

Поляков А.Ю. "Методы и алгоритмы компьютерной графики в примерах Vizual C++" (Графика)

Баяковский Ю.М. "Графическая библиотека Open GL " (Графика)

Валиков А. "Технология " (Языки программирования)
Авторские права © 2013 ComputersBooks. Все права защищены.