Я работаю над кодом OLE DB, который выполняет запросы на MS SQL Server через ICommand::Execute
. Я преобразовываю этот код для асинхронной работы, установив свойство DBPROPVAL_ASYNCH_INITIALIZE
в команде перед выполнением.
Я бы предпочел зарегистрировать приемник IDBAsynchNotify
, чтобы мой код мог получать уведомления о событиях, а не опрашивать или блокировать через ISSAsynchStatus
.
Документация для ICommand::Execute
не показывает IConnectionPointContainer
в качестве приемлемого параметра riid
, но тот же документ при обсуждении кода возврата DB_S_ASYNCHRONOUS
предполагает, что можно запросить IConnectionPointContainer
интерфейс, который я мог бы использовать для регистрации моего приемника событий.
Когда я вызываю ICommand::Execute
, передавая IID_IConnectionPointContainer
в качестве параметра riid
, я получаю ошибку E_NOINTERFACE
. Я также пытался установить свойство DBPROP_IConnectionPointContainer
до Execute
, но получил те же результаты.
Если мне нужно, я буду использовать ISSAsynchStatus
, но я бы предпочел использовать IDBAsynchNotify
. Возможно ли это?