GetProcAddress()
- единственный способ сделать то, что вы просите. Определенно НЕ полагайтесь на определение версии ОС (в последних версиях Windows это становится все труднее делать надежно), НЕ полагайтесь на то, существуют ли на самом деле нужные функции.
Даже функция задержки загрузки компоновщика использует GetProcAddress()
внутри. В этом случае вы можете использовать хук уведомления о задержке загрузки , чтобы определить результат загрузки, чтобы вы могли соответствующим образом пометить свой код для последующих проверок или даже при необходимости указать указатель на альтернативную резервную функцию.
Эта последняя часть важна, потому что загруженная с задержкой функция не загружается до тех пор, пока она не будет вызвана в первый раз, поэтому, если вы вызываете загруженную с задержкой функцию, которая не существует во время выполнения, и ловушка уведомления не обеспечивает альтернативная функция, ваш код, скорее всего, потерпит крах при попытке выполнить функцию через указатель NULL. Чтобы избежать этого, вы можете просто явно вызвать GetProcAddress()
, прежде чем делать какие-либо вызовы функции.