Zaman Uyumsuz İşlevler

Tamamlayan bir işlem, uygulama tarafından yapılan işlev çağrısında ve tapi 2.x işlev çağrısından döndürdükten sonra bağımsız bir yürütme iş parçacığında işlemin bir kısmını zaman uyumsuz olarak gerçekleştirir. Çağrının işlenmesinin tamamlanmasını sağlamak için hizmet sağlayıcısı isteği sistemdeki LAN sunucusu, eklenti donanımı, anahtar veya ağ gibi başka bir etkin varlığa vektör olarak gönderir ve ardından uygulamaya geri döner. Şu anda uygulamaya negatif bir hata sonucu veya pozitif bir istek tanımlayıcısı döndürülür.

Zaman uyumsuz tamamlama sırasında (hizmet sağlayıcısı donanımdan bir kesinti aldı, yani bir iletinin teslim edilmesi gerekiyor), hizmet sağlayıcısı TAPISRV'yi çağırır ve "Olay X yeni gerçekleşti. İlgili tüm uygulamalara uygun bir ileti gönderin." TAPISRV bu iletiyi aldığında, uygulamanın işleminde, uygulama tarafından lineInitializeEx veya phoneInitializeExiçinde seçilen ileti bildirim düzenine göre bir pencere iletisi gönderip olay tanıtıcısına veya G/Ç tamamlama bağlantı noktasına gönderi göndererek TAPI dinamik bağlantı kitaplığına iletir.

İşlemin zaman uyumsuz bölümü tamamlandığında, uygulamaya bir LINE_REPLY (veya PHONE_REPLY) iletisi gönderilir. Bu ileti, parametrelerinden biri olarak işlev çağrısı tarafından döndürülen istek tanımlayıcısını içerir. Bu istek tanımlayıcısı, uygulamanın hangi özgün isteğin tamamlandığını belirlemesine olanak tanır. (Uygulamalar, yanıt iletilerinin düzgün şekilde işlenebilmesi için devam eden tüm isteklerinin istek tanımlayıcılarını anımsamalıdır.) LINE_REPLY (veya PHONE_REPLY) iletisinin ikinci parametresi zaman uyumsuz dönüş değeridir. İşlem başarıyla tamamlandıysa bu negatif bir değer (hata için) veya sıfırdır. Zaman uyumsuz işlemler için, dönüş değerlerinden herhangi biri işlev dönüşünün bir parçası olarak veya LINE_REPLY veya PHONE_REPLY iletisindeki dwParam2 parametresi olarak döndürülebilir. Başarıyı gösteren 0 değeri yalnızca LINE_REPLY iletisinde döndürülür ve hiçbir zaman işlevin dönüş değeri olarak döndürülemez.

initialize işlevleri (lineInitializeEx ve phoneInitializeEx) TAPI'ye bu iletileri uygulamaya nasıl göndereceklerini söyler.

Not

Bazı durumlarda, çok iş parçacıklı bir uygulama, uygulamanın hattı veya telefon cihazını başlatdığı iş parçacığı dışında bir iş parçacığından zaman uyumsuz bir işlev çağırırsa, uygulama zaman uyumsuz işlev döndürülmeden önce LINE_REPLY veya PHONE_REPLY iletisini alabilir. Böyle durumlarda, uygulama ileti parametrelerini kaydetmeli ve zaman uyumsuz işlev dönene kadar beklemeli ve ileti işlenmeden önce istek tanımlayıcısı bilinmelidir.