У меня есть приложение VB6, в котором есть следующий фрагмент кода, который пытается получить доступ к информации о процессах Windows.
Я думаю, что это может быть причиной прерывистого бесконечного цикла - REDIM-обработка массива и пережевывание всей памяти.
Есть ли кто-нибудь, кто знает, для чего предназначен следующий фрагмент кода, и могут ли они помочь в отлове сценария, в котором он зацикливается в течение длительного времени, а размер bytBuf слишком сильно увеличивается (и можете ли вы порекомендовать максимальный размер массива для bytBuf ?)
Do
ReDim bytBuf(nSize)
ntStatus = NtQuerySystemInformation(SystemHandleInformation, VarPtr(bytBuf(0)), nSize, 0&)
If (Not NT_SUCCESS(ntStatus)) Then
If (ntStatus <> STATUS_INFO_LENGTH_MISMATCH) Then
Erase bytBuf
Exit Function
End If
'If it always ends up here, it will loop endlessly! How do I stop it?!
Else
Exit Do
End If
nSize = nSize * 2
ReDim bytBuf(nSize)
Loop
Большое спасибо Андрей