технология враппера (обёртки) - ну, гм, смотреть особо негде. Один из способов общей теории систем для ревёрс-инжиниринга, бинарного рефакторинга и прочих умных слов.
В виде книжки не встречал, изустные предания интернета
.
Смысл-то простой: есть чёрный ящик. Мы "оборачиваем" его входы и выходы. И манипуляцией данных на входе/выходе получаем нужный нам результат.
Применительно к виндовс и динамическим библиотекам (директсаунд и прочие иксы лежат в динамических библиотеках): чужая программу загружает целевую длл, как обычно, но на самом деле грузит твою собственную. А твоя собственная длл в манипулирует входными данными и вызывает по своему усмотрению целевую длл. Всё прозрачно. Тыща и один способ реализации:
- подменить целевую длл своей, а оригинал сохранить под другим именем,
- подменять таблицу импорта, перехватывая LoadLibrary
- перерегистрировать СОМ-объекты
- запатчить таблицы ядра
2-й и 3-й самые элегантные, 1-й - самый простой в реализации. А против 4-го нету спасения, но он весьма чувствителен к версии системы (сервис-пакам и пр.)
ну и фильтр-драйвер можно написать, но для данной задачи у меня есть сомнения, что это лёгкий путь. Как минимум, надо хорошо ориентироваться в ХР ДДК и ДиректХ ДДК. Что непросто, да и отлаживаться в кернел-моде значительно сложнее, чем в обёртке на 3-м кольце