Błąd odświeżania okna WPF w .dll od Windowsa 11

Błąd odświeżania okna WPF w .dll od Windowsa 11
WP
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 150
0

Witam.
Mam oprogramowaną dll'ke do zamków hotelowych iTec o nazwie "HNLOCK.dll" w aplikacji WPF.
Oprogramowywałem ją jeszcze na Windowsie 7 i framework'u 4.0.
Potem przeszedłem na Frameworka 4.8 i Windowsa 10. Wszystko było ok.
Po zainstalowaniu gotowej aplikacji na Windows 11 podczas pierwszego odpytania dll'ki dostaję błąd odświeżania z wpf'a. Wygląda to tak jakby odwołanie do tej dll'ki grzebało coś po pamięci. Efekt występuje tylko po pierwszym odpytaniu dll'ki. Sama metoda zwraca poprawne dane.
Czy ktoś z was może miał już podobny przypadek, że API zapisane w dll'ce, która działa bezproblemowo pod Windows 10 pod Win 11 zaczyna stwarzać problemy?
W metodzie wywoływanej z tej dll'ki mam przekazywane parametry w obydwie strony. Może to problem z typami danych? (może jest za mały bufor zadeklarowany?). Tylko co się mogło zmienić w Windows 11 pod tym względem? Przecież pracuje on na tym samym frameworku co Win 10. Czy może nie?

Metody, które wykorzystuję z dll'ki mam zadeklarowane w nastepujący sposób:

Kopiuj
        [System.Runtime.InteropServices.DllImport("HNLOCK.dll", EntryPoint="ReadMessage",
                   CallingConvention = System.Runtime.InteropServices.CallingConvention.Winapi,
                   CharSet = System.Runtime.InteropServices.CharSet.Ansi)]
        public static extern int
            ReadMessage(int Com, int nBlock, int Encrypt, out int DBCardNo, out int DBCardtype, out int DBPassLevel, StringBuilder CardPass,
                        StringBuilder DBSystemcode, StringBuilder DBAddress, StringBuilder SDateTime);

oraz

Kopiuj
        [System.Runtime.InteropServices.DllImport("HNLOCK.dll", EntryPoint="KeyCard",
                   CallingConvention = System.Runtime.InteropServices.CallingConvention.Winapi,
                   CharSet = System.Runtime.InteropServices.CharSet.Ansi)]
        public static extern int
            KeyCard(int Com, int CardNo, int nBlock, int Encrypt,
                    StringBuilder CardPass, StringBuilder SystemCode, StringBuilder HotelCode,
                    StringBuilder RPass, StringBuilder Address,
                    StringBuilder SDln, StringBuilder STln, StringBuilder SDOut,
                    StringBuilder STOut, int LEVEL_Pass, int PassMode, int AddressMode, int AddressQty, int TimeMode,
                    int V8, int V16, int V24, int AlwaysOpen, int OpenBolt, int TerminateOld, int ValidTimes);
abrakadaber
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 6610
1

podaj DOKŁADNĄ treść wyjątku

Azarien
  • Rejestracja: dni
  • Ostatnio: dni
0

A jak wyglądają deklaracje tych funkcji w C, C++, czy w czym tam one są pisane?
I która funkcja kraszy - nie napisałeś.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.