No longer crash 64 bit Adobe Acrobat / Reader when rendering a virtualBuffer for PDF content (#13852)
Fixes #12920
# Summary of the issue:
Adobe Acrobat / Reader 64 bit crashes when NVDA renders a virtualBuffer for PDF content.
There are two reasons for this:
1. Adobe's IAccID custom interface has been changed so that specifically on 64 bit builds, the ID argument is now 64 bit wide instead of 32 bit. This meant that NVDA was using the wrong data type and wrong call signature for IAccID::get_accID, and therefore Acrobat / Reader was trying to write a 64 bit value in to the space that could only hold 32 bits, causing a buffer overrun.
2. Adobe Acrobat / Reader's accID values, including the MSAA child IDs used for IAccessible::get_accChild and AccessibleObjectFromEvent were 64 bit wide, though MSAA only supports 32 bit values. This would cause invalid and truncated values to be used for child IDs, in many cases causing a crash.
Adobe has addressed point 2 in Adobe Acrobat / Reader beta versions and will be in a stable build in the near future.
But NVDA needs to address point 1 in its own code.
# Description of user facing changes
Using a version of Adobe Acrobat / Reader with the required fixes on adobe's side, along with this PR in NVDA, the crash is avoided.
# Description of development approach
miscDeps has been updated to contain the newest version of acrobatAccess.idl from the Adobe Acrobat SDK.
The adobeAcrobat vbufBackend getAccID method has been changed to fetch the out param of IAccID::get_accID with a LONG_PRT which will be 64 bit wide on 64 bit Acrobat / Reader, and 32 bit wide on 32 bit Acrobat / Reader. The value is then static casted to long when returned. As Acrobat always uses 32 bit accID vlaues, no information will be lost in the conversion.