[VB.NET] Unload/Reload DLL

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • corani
  • Registratie: December 2000
  • Laatst online: 05-10-2017

corani

__,,,_(^_^)_,,,__

Topicstarter
Ik ben bezig met het opzetten van een simpele TAPI client, om via een webservice calls op te zetten tussen twee toestellen binnen ons bedrijf. Om de "Caller" aan te passen, moet ik een aantal waarden wegschrijven in de registry. De "Callee" kan ik in de functie aanroep opgeven:

Visual Basic .NET:
1
    Declare Auto Function tapiRequestMakeCall Lib "TAPI32.dll" (ByVal DestAddress As String, ByVal AppName As String, ByVal CalledParty As String, ByVal Comment As String) As Integer


Het probleem is nu dat de applicatie niet merkt dat de caller is aangepast. Ik vermoed omdat de DLL dit met de eerste aanroep cached (o.i.d.) Ik vroeg mij daarom af of het mogelijk is een DLL te reloaden binnen Visual Basic .NET

Weet iemand hoe dit gedaan kan worden? Of zijn er nog andere mogelijkheden?

Laat me nou toch eens met rust man!
Iedereen die in telekinese gelooft, steek a.u.b. mijn hand op


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:57
In .NET is het afaik niet mogelijk om een assembly te unloaden binnen een AppDomain.
Je kan die assembly in een apart AppDomain inladen, en als hij moet herladen worden, het AppDomain unloaden, nieuw maken, DLL inladen.
(Een beetje zoals NUnit ook doet).

Maar, met hetgeen ik uit je TS kan opmaken, snap ik eigenlijk niet goed wat je bedoeld ?
Waarom zou je die DLL moeten opnieuw inladen ? Je hebt toch niets gewijzigd aan de implementatie van je method ofzo ?

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • corani
  • Registratie: December 2000
  • Laatst online: 05-10-2017

corani

__,,,_(^_^)_,,,__

Topicstarter
De TAPI driver haalt bepaalde gegevens uit de registry (o.a. de caller) Als ik deze gegevens in mijn applicatie aanpas, ziet de driver dit niet. Ik vermoed dus dat deze ergens gecached worden, en hoop dit middels het reloaden van de DLL te omzeilen.

Ik moet er overigens bij zeggen dat ik Java programmeur ben, en practisch geen ervaring heb met .NET of windows.

Laat me nou toch eens met rust man!
Iedereen die in telekinese gelooft, steek a.u.b. mijn hand op


Acties:
  • 0 Henk 'm!

  • bigbeng
  • Registratie: Augustus 2000
  • Laatst online: 26-11-2021
Als ik het plaatje hier bekijk, dan denk ik dat je een verkeerd beeld hebt van hoe TAPI werkt. Het is de TAPI server die de registry raadpleegt, dus je kunt de dll unloaden zoveel je wilt, maar dat gaat je niet helpen. Ik vermoed dat je de "TAPISrv" service moet herstarten. Ik weet dat je services kan starten en stoppen met een dos (NET START en NET STOP) commando, maar herstarten kan vziw niet. En omdat bij Vista en ws ook andere OS-en de TAPISrv een dependency heeft met Remote Access Connection Manager, is het simpelweg stoppen van de service en vervolgens weer starten niet voldoende.

Hoe dan ook, je zult nog even verder moeten zoeken :)