J'ai une DLL VDD qui est chargée par un programme DOS s'exécutant dans le NTVDM. Cette DLL utilise C++/CLI et fait référence à un assembly .NET.L'assembly .NET ne se charge pas à partir de NTVDM
Dans l'ensemble, le processus de chargement est quelque chose comme ceci:
NTVDM runs:
prntsr.com which uses VDD RegisterModule to load:
prnvdd.dll which references .NET assembly:
prnlib.dll
Les prntsr.com
, prnvdd.dll
et prnlib.dll
fichiers sont tous dans le même dossier.
Cependant, lors du chargement, je reçois l'exception suivante:
Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'PRNLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ecf23cee305e91b7' or one of its dependencies. The system cannot find the file specified.
File name: 'PRNLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ecf23cee305e91b7'
at VDD_Initialise()
=== Pre-bind state information ===
LOG: User = DOMAIN\user
LOG: DisplayName = PRNLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ecf2
3cee305e91b7
(Fully-specified)
LOG: Appbase = file:///C:/WINDOWS/system32/
LOG: Initial PrivatePath = NULL
Calling assembly : (Unknown).
===
LOG: This bind starts in default load context.
LOG: No application configuration file found.
LOG: Using machine configuration file from C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\config\machine.config.
LOG: Post-policy reference: PRNLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=ecf23cee305e91b7
LOG: Attempting download of new URL file:///C:/WINDOWS/system32/PRNLib.DLL.
LOG: Attempting download of new URL file:///C:/WINDOWS/system32/PRNLib/PRNLib.DLL.
LOG: Attempting download of new URL file:///C:/WINDOWS/system32/PRNLib.EXE.
LOG: Attempting download of new URL file:///C:/WINDOWS/system32/PRNLib/PRNLib.EXE.
Il ne recherche que C:\WINDOWS\system32\
pour l'assemblage, que je suppose que cela est dû à NTVDM.EXE - comme cela est le processus réel que la L'assembly est en cours de chargement, il prend son emplacement en tant que AppBase.
Des idées sur la façon de modifier l'AppBase ou de contourner ce problème?
Je me demande comment est-il possible de charger écrit dans Dll C++/CLI (module mixte win32-.Net) à partir du programme DOS 16 bits? – macropas
@maropas: Thunking et virtualisation. – codekaizen