<div>선언부</div> <div> </div> <div> Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef Destination As Byte, ByRef Source As Byte, ByVal Length As Long)</div> <div> </div> <div> </div> <div> </div> <div>메인폼</div> <div> </div> <div> Dim pCount As Integer<br> Dim nReadSize As Integer<br> Dim btReadbuffer() As Byte = New Byte(10024) {}<br> Dim btReadData() As Byte</div> <div> </div> <div> pCount = CInt(_pCount)</div> <div> </div> <div> MainSocketServer.creat_NetworkStream(pCount)</div> <div><br> nReadSize = MainSocketServer.pNetworkStream(pCount).Read(btReadbuffer, 0, 10024)<br> btReadData = New Byte(nReadSize - 1) {}<br><strong> CopyMemory(btReadData(0), btReadbuffer(0), nReadSize) </strong></div> <div><strong></strong> </div> <div><strong></strong> </div> <div>kernel32.dll의 RtlMoveMemory API를 사용하여 해당 함수를 실행하였는데 어플리케이션 예외 오류(디버깅도 안되고 뻗음)가 납니다.</div> <div>try catch도 안되고 그냥 죽네요. 32비트 시스템에선 잘 돌아가는 프로그램인데 64비트에서만...</div> <div> </div> <div>nReadSize를 고정상수로 100이하 정도로 주었을떈 오류가 나고 함수가 작동하지만</div> <div>메모리 전체를 복사하지 못하고 앞의 1바이트만 복사됩니다.</div> <div> </div> <div>ex> btreadbuffer를 스트링으로 변환시 "ABCDEFG"라면, btReadData에는 "A"만 복사됩니다.</div> <div> 원랜 nReadSize만큼 복사되어야 하는데...</div> <div> </div> <div>nReadSize가 크면 왜 어플리케이션 오류가 나는지,</div> <div>작으면 작동은 되는데 왜 1바이트밖에 복사가 안되는건지 혹시 잘 아시는 분 있을까요?</div> <div> </div> <div> </div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.