Я знаю, что SafeArrayAccessData также блокирует/разблокирует, но неважно, что мне интересно только знать, возвращает ли он указатель, отличный от pvData
.Сохраняет ли SafeArrayAccessData указатель, отличный от pvData?
Например, этот код не вызывает Assert (что я мог видеть в моих тестах):
SafeArrayAccessData(sa, (void**) &ptr);
assert(ptr == sa->pvData);
Кто-нибудь знает о сценарии, где SafeArrayAccessData
даст указатель, который не равен pvData
?
Я спрашивал, потому что уже есть SafeArrayLock/SafeArrayUnlock, что делает избыточность SafeArrayAccessData/SafeArrayUnaccessData, поэтому я подумал, что, возможно, я что-то упустил. – sashoalm
Я вижу. Хорошо, обратите внимание на документы для функции Lock: «* Увеличивает количество блокировок массива и помещает указатель на данные массива в pvData дескриптора массива.» «Так что если вы вообще не заблокируете, pvData может не допустимо, я полагаю. Но в случае использования у вас есть, я не думаю, что важно, какую функцию вы используете - это просто вопрос удобства/стиля. –