Bug description: The documentation for SIMCONNECT_RECV_EXCEPTION states that the dwIndex field is set to 0 if the index is unknown. There is no indicated similar special value for the dwSendID field. However, in SimConnect.h we can find:
SIMCONNECT_REFSTRUCT SIMCONNECT_RECV_EXCEPTION : public SIMCONNECT_RECV // when dwID == SIMCONNECT_RECV_ID_EXCEPTION
{
DWORD dwException; // see SIMCONNECT_EXCEPTION
static const DWORD UNKNOWN_SENDID = 0;
DWORD dwSendID; // see SimConnect_GetLastSentPacketID
static const DWORD UNKNOWN_INDEX = DWORD_MAX;
DWORD dwIndex; // index of parameter that was source of error
};
A developer depending on the documentation rather than the special value, will check for the wrong value. Note also that there is no indication that the two special values need to be referred to using qualified names, as in “SIMCONNECT_RECV_EXCEPTION::UNKNOWN_SENDID” and “SIMCONNECT_RECV_EXCEPTION::UNKNOWN_INDEX”.
Hey Boris,
What SDK version will this be in? Maybe even better; where can I find a mapping between SUs and SDK versions?
In SIMCONNECT_RECV_OPEN we get versions (major, minor, and build) for the “application” (I presume the simulator) and “SimConnect”, but it is unclear to me how this corresponds to Simulator versions, Service Updates, and SDK versions.
You should have the fix in the lastest SU3 sdk documentation version.
About the version number, MSFS24 is version 12x.x.x and MSFS2020 11.x.x.x
For minor and build number, it changes when we update the SimConnect API.
For SDK versions, SU3 is 1.4.5
SU4 will be 1.5.x and so on..
Ok, I downloaded that, but is still states the values are both zero.
Went to the file on disk to make doubly sure:
<tr>
<td><code class="inline">dwSendID</code></td>
<td>
<p>The ID of the packet that contained the error, see Remarks below.</p>
<p>Special case: <code class="inline">UNKNOWN_SENDID = 0</code>.</p>
<p>Note that if this special case is returned, there has been an <em>internal</em> problem.</p>
</td>
</tr>
<tr>
<td><code class="inline">dwIndex</code></td>
<td>
<p>The index number (starting at 1) of the first parameter that caused an error.</p>
<p>Special case: <code class="inline">UNKNOWN_INDEX = 0</code>.</p>
</td>
</tr>