Выиграть соединения CE устройства обнаружить второй – VB 5.0, VB 6.0 – База кода

Скачать

Название (оригинал): Win CE Device Connection Detect II

Описание:
Англ (оригинал)The code is based on my article “Win CE Device Connection Detect”. But someone may find it will be crashed for new version of ActiveSync. Thank Alber to remind me of this problem.

After a simple test of my code, I have found why the code does not work. Once again VB’s old problem, crash for multi-thread issue. As what we knew, VB is not a thread safety language. In this case, ActiveSync in process-server change the calling context to different context from original. It caused VB’s runtime library crashed. Why does VB always crash for multi-thread? You can compile your VB code and generate a PDB for your debugger like VS or VS.Net.Use debugger to trap the error and you will understand why crash crash everywhere. VB’s runtime always assumes we just live in single thread.

Another solution for this case is creating a COM server and passes the object reference to ActiveSync’s COM Interface. VB supports STA thread model and all of object calls will be protected by STA. But this is not what a good solution for this case “A simple implementation”.

My solution here is more complex but you don’t have to create a COM server for your code. Since VB’s code isn’t thread-safety, we have to find it out and modify it. After observing the PDB behavior, we found following calls are not safe for MT. It’s ‘Any Win32 API code’ and ‘Most COM related VB-call’. Win32 API of VB’s not safe. The problem is not caused by API but caused by VB’s compiler adding some extra code (prolog/epilog) after each API calls (it’s _VBASetSystemError and it’s not safe).

We use ReplaceVTableEntry technique to do a wrapper by VB’s Module. Because function of a module in VB is not belongs to any object and it will be called safely. After our wrap functions are called, we need to do something like synchronization and force original thread to deal our request here. What can we do any synchronization stuff without Win32 API functions and most object calls? Here I design a simple mechanism for VB’s user. I just pass all of parameters to a buffer and deal this buffer by a continual time-loop. You can see the code and know what it’s. The problem is that we just deal the parameters asynchronous and never cares about something like thread-safety for parameters processing.

But who cares!

http://home.kimo.com.tw/kwyshell/
http://kwyshekk.myweb.hinet.net/

Рус (машинный)Кодекс основывается на мою статью \”выиграть се устройства Подключение Обнаружение\”. Но кто-то может найти, он будет разбился на новую версию ActiveSync. Спасибо Альбер, чтобы напомнить мне об этой проблеме. в

после простой тест мой код, я обнаружил, почему код не работает. Опять старая проблема в. Б., сбоев для многопоточных вопрос. Как и то, что мы знали, VB является не какой-нить языковой безопасности. В данном случае, ActiveSync в процесс-сервер изменить контекст вызова, чтобы отличалась от оригинала. Это вызвало библиотека времени выполнения глаг разбился. Почему глаг всегда аварии для Multi-нить? Вы можете скомпилировать ваш код VB и генерировать PDB для вашего отладчика, как против или против.Чистая.Использовать отладчик для перехвата ошибок и вы поймете, почему аварии, аварии везде. Модуль VB всегда предполагает, что мы просто живем в одном потоке.
Еще одним решением для данного случая является создание com-сервера и передает ссылку на объект com-Интерфейс устройства ActiveSync,. ВБ поддерживает потоковой модели STA и все объекты звонки будут защищены ГНАУ. Но это не самое хорошее решение в этом случае \”простая реализация\”.мое решение здесь сложнее, но вам не нужно создавать com-сервер для вашего кода. Поскольку VB кода не потокобезопасности, мы должны найти его и изменить его. После наблюдения за поведением ПДБ, мы нашли следующие вызовы не безопасно для МТ. Это любой API Win32-код \” и \” наиболее распространенные, связанные с VB-называть. С Win32 API из VB и не безопасно. Проблема не вызвана API, но вызвана компилятора VB добавляет некоторый дополнительный код (пролог/эпилог) после каждого вызовов API (это _VBASetSystemError и это не безопасно). в

мы используем технику ReplaceVTableEntry сделать обертку модулем пользователи. Потому что функция модуль в VB не принадлежит к какому-либо объекту и он будет безопасен. После нашей функции обертки называются, мы должны сделать что-то вроде синхронизации и силу-нить Оригинальное для решения нашей просьбе здесь. Что мы можем сделать все вещи синхронизации без функции Win32 API и объект называет? Здесь я разрабатываю простой механизм для пользователей пользователи. Я просто передать все параметры на буфер, и этот буфер сделку по постоянной времени контура. Вы можете увидеть код и знаю, что это. Проблема в том, что мы просто общаемся параметров асинхронных и никогда не заботится о потокобезопасности для обработки параметров. в

но кого это волнует!http://home.kimo.com.tw/kwyshell/
В http://kwyshekk.myweb.hinet.net/
В

база кода