OK, I just now discovered something. When I run app as stand-alone it is from the IDE and it never crashes but if I run it from the EXE (I double click on the EXE file) it will crash. So, that now eliminates the Shelling since it crashes when run as an executable instead of from the IDE.
I changed Integer to Long for uMsg
I put error checking in loop, returns success on all counts.
I put blocker switch in waveInProc to disallow entry into proc like this:
Now it will pass through the entire StartRecord sub without crashing. Then from a button on the Form that triggers the blocker switch I click on the button which sets NoEntry = False thus allowing entry into waveInProc the app then crashes. However this just re-confirms a statement I made in my OP...Code:Private Sub waveInProc(ByVal hwi As Long, _ ByVal uMsg As Integer, _ ByVal dwInstance As Long, _ ByVal dwParam1 As Long, _ ByVal dwParam2 As Long) Dim udtHdr As WAVEHDR If NoEntry = True Then Exit Sub Select Case uMsg Case MM_WIM_OPEN Case MM_WIM_DATA If IsBadReadPtr(ByVal dwParam1, Len(udtHdr)) = 0 Then CpyMem udtHdr, ByVal dwParam1, Len(udtHdr) GotData udtBuffers(udtHdr.dwUser).intBuffer, udtHdr.dwBytesRecorded ' place the buffer in the waveIn queue again waveInAddBuffer hWaveIn, udtBuffers(udtHdr.dwUser), Len(udtHdr) Else End If Case MM_WIM_CLOSE End Select End Sub
"I'd like to also point out that if I do not comment out the failing statement above but I disallow the callback proc from being entered the app will not crash."




Reply With Quote