diff --git a/NTwain/Internals/WindowsHook.cs b/NTwain/Internals/WindowsHook.cs
index 3a70247..8e02292 100644
--- a/NTwain/Internals/WindowsHook.cs
+++ b/NTwain/Internals/WindowsHook.cs
@@ -6,9 +6,8 @@ namespace NTwain.Internals
{
///
- /// Abstracts out wnd proc hook on Windows from MessageLoop class.
+ /// Abstracts out wnd proc hook on Windows from InternalMessageLoopHook class.
/// This allows things to not depend on PresentationCore.dll at runtime on mono.
- /// Not that everything works yet in mono but it's something.
///
class WindowsHook : IDisposable
{
diff --git a/NTwain/Platform.cs b/NTwain/Platform.cs
index c89e58e..0d1be0c 100644
--- a/NTwain/Platform.cs
+++ b/NTwain/Platform.cs
@@ -15,21 +15,57 @@ namespace NTwain
static Platform()
{
IsApp64bit = IntPtr.Size == 8;
- NewWinDsmExists = File.Exists(Path.Combine(Environment.SystemDirectory, "twaindsm.dll"));
-
- UseNewDSM = IsApp64bit || NewWinDsmExists;
IsOnMono = Type.GetType("Mono.Runtime") != null;
IsWin = Environment.OSVersion.Platform == PlatformID.Win32NT;
IsLinux = Environment.OSVersion.Platform == PlatformID.Unix;
+ if (IsWin)
+ {
+ var newDsmPath = Path.Combine(Environment.SystemDirectory, "twaindsm.dll");
+ var oldDsmPath = Path.Combine(Environment.SystemDirectory, "twain_32.dll");
+
+ if (IsApp64bit)
+ {
+ IsSupported = DsmExists = File.Exists(newDsmPath);
+ UseNewWinDSM = true;
+ }
+ else
+ {
+ if (File.Exists(newDsmPath))
+ {
+ UseNewWinDSM = IsSupported = DsmExists = true;
+ }
+ else
+ {
+ IsSupported = DsmExists = File.Exists(oldDsmPath);
+ }
+ }
+ }
+ else if (IsLinux)
+ {
+ DsmExists = File.Exists(Triplets.Dsm.LINUX_DSM_PATH);
+ IsSupported = DsmExists && IsOnMono;
+ }
+ else
+ {
+ }
+
_defaultMemManager = new WinMemoryManager();
}
- internal static readonly bool UseNewDSM;
+ // prefer the use of the twain dsm on windows.
+ internal static readonly bool UseNewWinDSM;
internal static readonly bool IsApp64bit;
- internal static readonly bool NewWinDsmExists;
+
+ ///
+ /// Gets a value indicating whether the applicable TWAIN DSM library exists in the operating system.
+ ///
+ ///
+ /// true if the TWAIN DSM; otherwise, false.
+ ///
+ public static bool DsmExists { get; private set; }
internal static readonly bool IsOnMono;
@@ -37,23 +73,12 @@ namespace NTwain
internal static readonly bool IsLinux;
///
- /// Gets a value indicating whether this library is supported.
+ /// Gets a value indicating whether this library is supported on current OS.
///
///
/// true if this library is supported; otherwise, false.
///
- public static bool IsSupported
- {
- get
- {
- if (IsWin)
- {
- if (IsApp64bit) { return NewWinDsmExists; }
- return true;
- }
- return IsOnMono && IsLinux;
- }
- }
+ public static bool IsSupported { get; private set; }
static readonly IMemoryManager _defaultMemManager;
diff --git a/NTwain/Triplets/Dsm.Linux.cs b/NTwain/Triplets/Dsm.Linux.cs
index 9544603..2c86b3f 100644
--- a/NTwain/Triplets/Dsm.Linux.cs
+++ b/NTwain/Triplets/Dsm.Linux.cs
@@ -6,9 +6,11 @@ namespace NTwain.Triplets
{
static partial class Dsm
{
+ internal const string LINUX_DSM_PATH = "/usr/local/lib/libtwaindsm.so";
+
static partial class NativeMethods
{
- [DllImport("/usr/local/lib/libtwaindsm.so", EntryPoint = "DSM_Entry")]
+ [DllImport(LINUX_DSM_PATH, EntryPoint = "DSM_Entry")]
public static extern ReturnCode DsmLinux(
[In, Out]TWIdentity origin,
[In, Out]TWIdentity destination,
@@ -17,7 +19,7 @@ namespace NTwain.Triplets
Message msg,
ref IntPtr data);
- [DllImport("/usr/local/lib/libtwaindsm.so", EntryPoint = "DSM_Entry")]
+ [DllImport(LINUX_DSM_PATH, EntryPoint = "DSM_Entry")]
public static extern ReturnCode DsmLinux(
[In, Out]TWIdentity origin,
[In, Out]TWIdentity destination,
@@ -26,7 +28,7 @@ namespace NTwain.Triplets
Message msg,
ref DataGroups data);
- [DllImport("/usr/local/lib/libtwaindsm.so", EntryPoint = "DSM_Entry")]
+ [DllImport(LINUX_DSM_PATH, EntryPoint = "DSM_Entry")]
public static extern ReturnCode DsmLinux(
[In, Out]TWIdentity origin,
[In, Out]TWIdentity destination,
@@ -35,7 +37,7 @@ namespace NTwain.Triplets
Message msg,
[In, Out]TWAudioInfo data);
- [DllImport("/usr/local/lib/libtwaindsm.so", EntryPoint = "DSM_Entry")]
+ [DllImport(LINUX_DSM_PATH, EntryPoint = "DSM_Entry")]
public static extern ReturnCode DsmLinux(
[In, Out]TWIdentity origin,
[In, Out]TWIdentity destination,
@@ -44,7 +46,7 @@ namespace NTwain.Triplets
Message msg,
[In, Out]TWCapability data);
- [DllImport("/usr/local/lib/libtwaindsm.so", EntryPoint = "DSM_Entry")]
+ [DllImport(LINUX_DSM_PATH, EntryPoint = "DSM_Entry")]
public static extern ReturnCode DsmLinux(
[In, Out]TWIdentity origin,
[In, Out]TWIdentity destination,
@@ -53,7 +55,7 @@ namespace NTwain.Triplets
Message msg,
[In, Out]TWCustomDSData data);
- [DllImport("/usr/local/lib/libtwaindsm.so", EntryPoint = "DSM_Entry")]
+ [DllImport(LINUX_DSM_PATH, EntryPoint = "DSM_Entry")]
public static extern ReturnCode DsmLinux(
[In, Out]TWIdentity origin,
[In, Out]TWIdentity destination,
@@ -62,7 +64,7 @@ namespace NTwain.Triplets
Message msg,
[In, Out]TWDeviceEvent data);
- [DllImport("/usr/local/lib/libtwaindsm.so", EntryPoint = "DSM_Entry")]
+ [DllImport(LINUX_DSM_PATH, EntryPoint = "DSM_Entry")]
public static extern ReturnCode DsmLinux(
[In, Out]TWIdentity origin,
[In, Out]TWIdentity destination,
@@ -71,7 +73,7 @@ namespace NTwain.Triplets
Message msg,
[In, Out]TWCallback data);
- [DllImport("/usr/local/lib/libtwaindsm.so", EntryPoint = "DSM_Entry")]
+ [DllImport(LINUX_DSM_PATH, EntryPoint = "DSM_Entry")]
public static extern ReturnCode DsmLinux(
[In, Out]TWIdentity origin,
[In, Out]TWIdentity destination,
@@ -80,7 +82,7 @@ namespace NTwain.Triplets
Message msg,
[In, Out]TWCallback2 data);
- [DllImport("/usr/local/lib/libtwaindsm.so", EntryPoint = "DSM_Entry")]
+ [DllImport(LINUX_DSM_PATH, EntryPoint = "DSM_Entry")]
public static extern ReturnCode DsmLinux(
[In, Out]TWIdentity origin,
[In, Out]TWIdentity destination,
@@ -89,7 +91,7 @@ namespace NTwain.Triplets
Message msg,
[In, Out]TWEntryPoint data);
- [DllImport("/usr/local/lib/libtwaindsm.so", EntryPoint = "DSM_Entry")]
+ [DllImport(LINUX_DSM_PATH, EntryPoint = "DSM_Entry")]
public static extern ReturnCode DsmLinux(
[In, Out]TWIdentity origin,
[In, Out]TWIdentity destination,
@@ -98,7 +100,7 @@ namespace NTwain.Triplets
Message msg,
[In, Out]TWEvent data);
- [DllImport("/usr/local/lib/libtwaindsm.so", EntryPoint = "DSM_Entry")]
+ [DllImport(LINUX_DSM_PATH, EntryPoint = "DSM_Entry")]
public static extern ReturnCode DsmLinux(
[In, Out]TWIdentity origin,
[In, Out]TWIdentity destination,
@@ -107,7 +109,7 @@ namespace NTwain.Triplets
Message msg,
[In, Out]TWFileSystem data);
- [DllImport("/usr/local/lib/libtwaindsm.so", EntryPoint = "DSM_Entry")]
+ [DllImport(LINUX_DSM_PATH, EntryPoint = "DSM_Entry")]
public static extern ReturnCode DsmLinux(
[In, Out]TWIdentity origin,
IntPtr zero,
@@ -116,7 +118,7 @@ namespace NTwain.Triplets
Message msg,
[In, Out]TWIdentity data);
- [DllImport("/usr/local/lib/libtwaindsm.so", EntryPoint = "DSM_Entry")]
+ [DllImport(LINUX_DSM_PATH, EntryPoint = "DSM_Entry")]
public static extern ReturnCode DsmLinux(
[In, Out]TWIdentity origin,
[In, Out]TWIdentity destination,
@@ -125,7 +127,7 @@ namespace NTwain.Triplets
Message msg,
[In, Out]TWPassThru data);
- [DllImport("/usr/local/lib/libtwaindsm.so", EntryPoint = "DSM_Entry")]
+ [DllImport(LINUX_DSM_PATH, EntryPoint = "DSM_Entry")]
public static extern ReturnCode DsmLinux(
[In, Out]TWIdentity origin,
[In, Out]TWIdentity destination,
@@ -134,7 +136,7 @@ namespace NTwain.Triplets
Message msg,
[In, Out]TWPendingXfers data);
- [DllImport("/usr/local/lib/libtwaindsm.so", EntryPoint = "DSM_Entry")]
+ [DllImport(LINUX_DSM_PATH, EntryPoint = "DSM_Entry")]
public static extern ReturnCode DsmLinux(
[In, Out]TWIdentity origin,
[In, Out]TWIdentity destination,
@@ -143,7 +145,7 @@ namespace NTwain.Triplets
Message msg,
[In, Out]TWSetupFileXfer data);
- [DllImport("/usr/local/lib/libtwaindsm.so", EntryPoint = "DSM_Entry")]
+ [DllImport(LINUX_DSM_PATH, EntryPoint = "DSM_Entry")]
public static extern ReturnCode DsmLinux(
[In, Out]TWIdentity origin,
[In, Out]TWIdentity destination,
@@ -152,7 +154,7 @@ namespace NTwain.Triplets
Message msg,
[In, Out]TWSetupMemXfer data);
- [DllImport("/usr/local/lib/libtwaindsm.so", EntryPoint = "DSM_Entry")]
+ [DllImport(LINUX_DSM_PATH, EntryPoint = "DSM_Entry")]
public static extern ReturnCode DsmLinux(
[In, Out]TWIdentity origin,
[In, Out]TWIdentity destination,
@@ -161,7 +163,7 @@ namespace NTwain.Triplets
Message msg,
[In, Out]TWStatusUtf8 data);
- [DllImport("/usr/local/lib/libtwaindsm.so", EntryPoint = "DSM_Entry")]
+ [DllImport(LINUX_DSM_PATH, EntryPoint = "DSM_Entry")]
public static extern ReturnCode DsmLinux(
[In, Out]TWIdentity origin,
[In, Out]TWIdentity destination,
@@ -170,7 +172,7 @@ namespace NTwain.Triplets
Message msg,
[In, Out]TWUserInterface data);
- [DllImport("/usr/local/lib/libtwaindsm.so", EntryPoint = "DSM_Entry")]
+ [DllImport(LINUX_DSM_PATH, EntryPoint = "DSM_Entry")]
public static extern ReturnCode DsmLinux(
[In, Out]TWIdentity origin,
[In, Out]TWIdentity destination,
@@ -179,7 +181,7 @@ namespace NTwain.Triplets
Message msg,
[In, Out]TWCieColor data);
- [DllImport("/usr/local/lib/libtwaindsm.so", EntryPoint = "DSM_Entry")]
+ [DllImport(LINUX_DSM_PATH, EntryPoint = "DSM_Entry")]
public static extern ReturnCode DsmLinux(
[In, Out]TWIdentity origin,
[In, Out]TWIdentity destination,
@@ -188,7 +190,7 @@ namespace NTwain.Triplets
Message msg,
[In, Out]TWExtImageInfo data);
- [DllImport("/usr/local/lib/libtwaindsm.so", EntryPoint = "DSM_Entry")]
+ [DllImport(LINUX_DSM_PATH, EntryPoint = "DSM_Entry")]
public static extern ReturnCode DsmLinux(
[In, Out]TWIdentity origin,
[In, Out]TWIdentity destination,
@@ -197,7 +199,7 @@ namespace NTwain.Triplets
Message msg,
[In, Out]TWFilter data);
- [DllImport("/usr/local/lib/libtwaindsm.so", EntryPoint = "DSM_Entry")]
+ [DllImport(LINUX_DSM_PATH, EntryPoint = "DSM_Entry")]
public static extern ReturnCode DsmLinux(
[In, Out]TWIdentity origin,
[In, Out]TWIdentity destination,
@@ -206,7 +208,7 @@ namespace NTwain.Triplets
Message msg,
[In, Out]TWGrayResponse data);
- [DllImport("/usr/local/lib/libtwaindsm.so", EntryPoint = "DSM_Entry")]
+ [DllImport(LINUX_DSM_PATH, EntryPoint = "DSM_Entry")]
public static extern ReturnCode DsmLinux(
[In, Out]TWIdentity origin,
[In, Out]TWIdentity destination,
@@ -215,7 +217,7 @@ namespace NTwain.Triplets
Message msg,
[In, Out]TWImageInfo data);
- [DllImport("/usr/local/lib/libtwaindsm.so", EntryPoint = "DSM_Entry")]
+ [DllImport(LINUX_DSM_PATH, EntryPoint = "DSM_Entry")]
public static extern ReturnCode DsmLinux(
[In, Out]TWIdentity origin,
[In, Out]TWIdentity destination,
@@ -224,7 +226,7 @@ namespace NTwain.Triplets
Message msg,
[In, Out]TWImageLayout data);
- [DllImport("/usr/local/lib/libtwaindsm.so", EntryPoint = "DSM_Entry")]
+ [DllImport(LINUX_DSM_PATH, EntryPoint = "DSM_Entry")]
public static extern ReturnCode DsmLinux(
[In, Out]TWIdentity origin,
[In, Out]TWIdentity destination,
@@ -233,7 +235,7 @@ namespace NTwain.Triplets
Message msg,
[In, Out]TWImageMemXfer data);
- [DllImport("/usr/local/lib/libtwaindsm.so", EntryPoint = "DSM_Entry")]
+ [DllImport(LINUX_DSM_PATH, EntryPoint = "DSM_Entry")]
public static extern ReturnCode DsmLinux(
[In, Out]TWIdentity origin,
[In, Out]TWIdentity destination,
@@ -242,7 +244,7 @@ namespace NTwain.Triplets
Message msg,
[In, Out]TWJpegCompression data);
- [DllImport("/usr/local/lib/libtwaindsm.so", EntryPoint = "DSM_Entry")]
+ [DllImport(LINUX_DSM_PATH, EntryPoint = "DSM_Entry")]
public static extern ReturnCode DsmLinux(
[In, Out]TWIdentity origin,
[In, Out]TWIdentity destination,
@@ -251,7 +253,7 @@ namespace NTwain.Triplets
Message msg,
[In, Out]TWPalette8 data);
- [DllImport("/usr/local/lib/libtwaindsm.so", EntryPoint = "DSM_Entry")]
+ [DllImport(LINUX_DSM_PATH, EntryPoint = "DSM_Entry")]
public static extern ReturnCode DsmLinux(
[In, Out]TWIdentity origin,
[In, Out]TWIdentity destination,
@@ -260,7 +262,7 @@ namespace NTwain.Triplets
Message msg,
[In, Out]TWRgbResponse data);
- [DllImport("/usr/local/lib/libtwaindsm.so", EntryPoint = "DSM_Entry")]
+ [DllImport(LINUX_DSM_PATH, EntryPoint = "DSM_Entry")]
public static extern ReturnCode DsmLinux(
[In, Out]TWIdentity origin,
[In, Out]TWIdentity destination,
@@ -269,7 +271,7 @@ namespace NTwain.Triplets
Message msg,
[In, Out]TWStatus data);
- [DllImport("/usr/local/lib/libtwaindsm.so", EntryPoint = "DSM_Entry")]
+ [DllImport(LINUX_DSM_PATH, EntryPoint = "DSM_Entry")]
public static extern ReturnCode DsmLinux(
[In, Out]TWIdentity origin,
[In, Out]TWIdentity destination,
diff --git a/NTwain/Triplets/Dsm.cs b/NTwain/Triplets/Dsm.cs
index fd4b863..3e6f09f 100644
--- a/NTwain/Triplets/Dsm.cs
+++ b/NTwain/Triplets/Dsm.cs
@@ -22,7 +22,7 @@ namespace NTwain.Triplets
{
if (Platform.IsWin)
{
- if (Platform.UseNewDSM) { return NativeMethods.DsmWinNew(origin, destination, dg, dat, msg, ref data); }
+ if (Platform.UseNewWinDSM) { return NativeMethods.DsmWinNew(origin, destination, dg, dat, msg, ref data); }
else { return NativeMethods.DsmWinOld(origin, destination, dg, dat, msg, ref data); }
}
else if (Platform.IsLinux)
@@ -42,7 +42,7 @@ namespace NTwain.Triplets
{
if (Platform.IsWin)
{
- if (Platform.UseNewDSM) { return NativeMethods.DsmWinNew(origin, destination, dg, dat, msg, ref data); }
+ if (Platform.UseNewWinDSM) { return NativeMethods.DsmWinNew(origin, destination, dg, dat, msg, ref data); }
else { return NativeMethods.DsmWinOld(origin, destination, dg, dat, msg, ref data); }
}
else if (Platform.IsLinux)
@@ -60,7 +60,7 @@ namespace NTwain.Triplets
{
if (Platform.IsWin)
{
- if (Platform.UseNewDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Audio, DataArgumentType.AudioInfo, msg, data); }
+ if (Platform.UseNewWinDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Audio, DataArgumentType.AudioInfo, msg, data); }
else { return NativeMethods.DsmWinOld(origin, destination, DataGroups.Audio, DataArgumentType.AudioInfo, msg, data); }
}
else if (Platform.IsLinux)
@@ -80,7 +80,7 @@ namespace NTwain.Triplets
{
if (Platform.IsWin)
{
- if (Platform.UseNewDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Control, dat, msg, data); }
+ if (Platform.UseNewWinDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Control, dat, msg, data); }
else { return NativeMethods.DsmWinOld(origin, destination, DataGroups.Control, dat, msg, data); }
}
else if (Platform.IsLinux)
@@ -99,7 +99,7 @@ namespace NTwain.Triplets
{
if (Platform.IsWin)
{
- if (Platform.UseNewDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Control, DataArgumentType.CustomDSData, msg, data); }
+ if (Platform.UseNewWinDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Control, DataArgumentType.CustomDSData, msg, data); }
else { return NativeMethods.DsmWinOld(origin, destination, DataGroups.Control, DataArgumentType.CustomDSData, msg, data); }
}
else if (Platform.IsLinux)
@@ -118,7 +118,7 @@ namespace NTwain.Triplets
{
if (Platform.IsWin)
{
- if (Platform.UseNewDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Control, DataArgumentType.DeviceEvent, msg, data); }
+ if (Platform.UseNewWinDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Control, DataArgumentType.DeviceEvent, msg, data); }
else { return NativeMethods.DsmWinOld(origin, destination, DataGroups.Control, DataArgumentType.DeviceEvent, msg, data); }
}
else if (Platform.IsLinux)
@@ -137,7 +137,7 @@ namespace NTwain.Triplets
{
if (Platform.IsWin)
{
- if (Platform.UseNewDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Control, DataArgumentType.Callback, msg, data); }
+ if (Platform.UseNewWinDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Control, DataArgumentType.Callback, msg, data); }
else { return NativeMethods.DsmWinOld(origin, destination, DataGroups.Control, DataArgumentType.Callback, msg, data); }
}
else if (Platform.IsLinux)
@@ -156,7 +156,7 @@ namespace NTwain.Triplets
{
if (Platform.IsWin)
{
- if (Platform.UseNewDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Control, DataArgumentType.Callback, msg, data); }
+ if (Platform.UseNewWinDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Control, DataArgumentType.Callback, msg, data); }
else { return NativeMethods.DsmWinOld(origin, destination, DataGroups.Control, DataArgumentType.Callback, msg, data); }
}
else if (Platform.IsLinux)
@@ -174,7 +174,7 @@ namespace NTwain.Triplets
{
if (Platform.IsWin)
{
- if (Platform.UseNewDSM) { return NativeMethods.DsmWinNew(origin, null, DataGroups.Control, DataArgumentType.EntryPoint, msg, data); }
+ if (Platform.UseNewWinDSM) { return NativeMethods.DsmWinNew(origin, null, DataGroups.Control, DataArgumentType.EntryPoint, msg, data); }
else { return NativeMethods.DsmWinOld(origin, null, DataGroups.Control, DataArgumentType.EntryPoint, msg, data); }
}
else if (Platform.IsLinux)
@@ -193,7 +193,7 @@ namespace NTwain.Triplets
{
if (Platform.IsWin)
{
- if (Platform.UseNewDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Control, DataArgumentType.Event, msg, data); }
+ if (Platform.UseNewWinDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Control, DataArgumentType.Event, msg, data); }
else { return NativeMethods.DsmWinOld(origin, destination, DataGroups.Control, DataArgumentType.Event, msg, data); }
}
else if (Platform.IsLinux)
@@ -212,7 +212,7 @@ namespace NTwain.Triplets
{
if (Platform.IsWin)
{
- if (Platform.UseNewDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Control, DataArgumentType.FileSystem, msg, data); }
+ if (Platform.UseNewWinDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Control, DataArgumentType.FileSystem, msg, data); }
else { return NativeMethods.DsmWinOld(origin, destination, DataGroups.Control, DataArgumentType.FileSystem, msg, data); }
}
else if (Platform.IsLinux)
@@ -229,7 +229,7 @@ namespace NTwain.Triplets
{
if (Platform.IsWin)
{
- if (Platform.UseNewDSM) { return NativeMethods.DsmWinNew(origin, IntPtr.Zero, DataGroups.Control, DataArgumentType.Identity, msg, data); }
+ if (Platform.UseNewWinDSM) { return NativeMethods.DsmWinNew(origin, IntPtr.Zero, DataGroups.Control, DataArgumentType.Identity, msg, data); }
else { return NativeMethods.DsmWinOld(origin, IntPtr.Zero, DataGroups.Control, DataArgumentType.Identity, msg, data); }
}
else if (Platform.IsLinux)
@@ -248,7 +248,7 @@ namespace NTwain.Triplets
{
if (Platform.IsWin)
{
- if (Platform.UseNewDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Control, DataArgumentType.PassThru, msg, data); }
+ if (Platform.UseNewWinDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Control, DataArgumentType.PassThru, msg, data); }
else { return NativeMethods.DsmWinOld(origin, destination, DataGroups.Control, DataArgumentType.PassThru, msg, data); }
}
else if (Platform.IsLinux)
@@ -267,7 +267,7 @@ namespace NTwain.Triplets
{
if (Platform.IsWin)
{
- if (Platform.UseNewDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Control, DataArgumentType.PendingXfers, msg, data); }
+ if (Platform.UseNewWinDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Control, DataArgumentType.PendingXfers, msg, data); }
else { return NativeMethods.DsmWinOld(origin, destination, DataGroups.Control, DataArgumentType.PendingXfers, msg, data); }
}
else if (Platform.IsLinux)
@@ -286,7 +286,7 @@ namespace NTwain.Triplets
{
if (Platform.IsWin)
{
- if (Platform.UseNewDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Control, DataArgumentType.SetupFileXfer, msg, data); }
+ if (Platform.UseNewWinDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Control, DataArgumentType.SetupFileXfer, msg, data); }
else { return NativeMethods.DsmWinOld(origin, destination, DataGroups.Control, DataArgumentType.SetupFileXfer, msg, data); }
}
else if (Platform.IsLinux)
@@ -305,7 +305,7 @@ namespace NTwain.Triplets
{
if (Platform.IsWin)
{
- if (Platform.UseNewDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Control, DataArgumentType.SetupMemXfer, msg, data); }
+ if (Platform.UseNewWinDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Control, DataArgumentType.SetupMemXfer, msg, data); }
else { return NativeMethods.DsmWinOld(origin, destination, DataGroups.Control, DataArgumentType.SetupMemXfer, msg, data); }
}
else if (Platform.IsLinux)
@@ -324,7 +324,7 @@ namespace NTwain.Triplets
{
if (Platform.IsWin)
{
- if (Platform.UseNewDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Control, DataArgumentType.StatusUtf8, msg, data); }
+ if (Platform.UseNewWinDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Control, DataArgumentType.StatusUtf8, msg, data); }
else { return NativeMethods.DsmWinOld(origin, destination, DataGroups.Control, DataArgumentType.StatusUtf8, msg, data); }
}
else if (Platform.IsLinux)
@@ -343,7 +343,7 @@ namespace NTwain.Triplets
{
if (Platform.IsWin)
{
- if (Platform.UseNewDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Control, DataArgumentType.UserInterface, msg, data); }
+ if (Platform.UseNewWinDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Control, DataArgumentType.UserInterface, msg, data); }
else { return NativeMethods.DsmWinOld(origin, destination, DataGroups.Control, DataArgumentType.UserInterface, msg, data); }
}
else if (Platform.IsLinux)
@@ -362,7 +362,7 @@ namespace NTwain.Triplets
{
if (Platform.IsWin)
{
- if (Platform.UseNewDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Image, DataArgumentType.CieColor, msg, data); }
+ if (Platform.UseNewWinDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Image, DataArgumentType.CieColor, msg, data); }
else { return NativeMethods.DsmWinOld(origin, destination, DataGroups.Image, DataArgumentType.CieColor, msg, data); }
}
else if (Platform.IsLinux)
@@ -381,7 +381,7 @@ namespace NTwain.Triplets
{
if (Platform.IsWin)
{
- if (Platform.UseNewDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Image, DataArgumentType.ExtImageInfo, msg, data); }
+ if (Platform.UseNewWinDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Image, DataArgumentType.ExtImageInfo, msg, data); }
else { return NativeMethods.DsmWinOld(origin, destination, DataGroups.Image, DataArgumentType.ExtImageInfo, msg, data); }
}
else if (Platform.IsLinux)
@@ -399,7 +399,7 @@ namespace NTwain.Triplets
{
if (Platform.IsWin)
{
- if (Platform.UseNewDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Image, DataArgumentType.Filter, msg, data); }
+ if (Platform.UseNewWinDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Image, DataArgumentType.Filter, msg, data); }
else { return NativeMethods.DsmWinOld(origin, destination, DataGroups.Image, DataArgumentType.Filter, msg, data); }
}
else if (Platform.IsLinux)
@@ -417,7 +417,7 @@ namespace NTwain.Triplets
{
if (Platform.IsWin)
{
- if (Platform.UseNewDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Image, DataArgumentType.GrayResponse, msg, data); }
+ if (Platform.UseNewWinDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Image, DataArgumentType.GrayResponse, msg, data); }
else { return NativeMethods.DsmWinOld(origin, destination, DataGroups.Image, DataArgumentType.GrayResponse, msg, data); }
}
else if (Platform.IsLinux)
@@ -436,7 +436,7 @@ namespace NTwain.Triplets
{
if (Platform.IsWin)
{
- if (Platform.UseNewDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Image, DataArgumentType.ImageInfo, msg, data); }
+ if (Platform.UseNewWinDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Image, DataArgumentType.ImageInfo, msg, data); }
else { return NativeMethods.DsmWinOld(origin, destination, DataGroups.Image, DataArgumentType.ImageInfo, msg, data); }
}
else if (Platform.IsLinux)
@@ -455,7 +455,7 @@ namespace NTwain.Triplets
{
if (Platform.IsWin)
{
- if (Platform.UseNewDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Image, DataArgumentType.ImageLayout, msg, data); }
+ if (Platform.UseNewWinDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Image, DataArgumentType.ImageLayout, msg, data); }
else { return NativeMethods.DsmWinOld(origin, destination, DataGroups.Image, DataArgumentType.ImageLayout, msg, data); }
}
else if (Platform.IsLinux)
@@ -474,7 +474,7 @@ namespace NTwain.Triplets
{
if (Platform.IsWin)
{
- if (Platform.UseNewDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Image, DataArgumentType.ImageMemXfer, msg, data); }
+ if (Platform.UseNewWinDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Image, DataArgumentType.ImageMemXfer, msg, data); }
else { return NativeMethods.DsmWinOld(origin, destination, DataGroups.Image, DataArgumentType.ImageMemXfer, msg, data); }
}
else if (Platform.IsLinux)
@@ -493,7 +493,7 @@ namespace NTwain.Triplets
{
if (Platform.IsWin)
{
- if (Platform.UseNewDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Image, DataArgumentType.JpegCompression, msg, data); }
+ if (Platform.UseNewWinDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Image, DataArgumentType.JpegCompression, msg, data); }
else { return NativeMethods.DsmWinOld(origin, destination, DataGroups.Image, DataArgumentType.JpegCompression, msg, data); }
}
else if (Platform.IsLinux)
@@ -512,7 +512,7 @@ namespace NTwain.Triplets
{
if (Platform.IsWin)
{
- if (Platform.UseNewDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Image, DataArgumentType.Palette8, msg, data); }
+ if (Platform.UseNewWinDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Image, DataArgumentType.Palette8, msg, data); }
else { return NativeMethods.DsmWinOld(origin, destination, DataGroups.Image, DataArgumentType.Palette8, msg, data); }
}
else if (Platform.IsLinux)
@@ -531,7 +531,7 @@ namespace NTwain.Triplets
{
if (Platform.IsWin)
{
- if (Platform.UseNewDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Image, DataArgumentType.RgbResponse, msg, data); }
+ if (Platform.UseNewWinDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Image, DataArgumentType.RgbResponse, msg, data); }
else { return NativeMethods.DsmWinOld(origin, destination, DataGroups.Image, DataArgumentType.RgbResponse, msg, data); }
}
else if (Platform.IsLinux)
@@ -550,7 +550,7 @@ namespace NTwain.Triplets
{
if (Platform.IsWin)
{
- if (Platform.UseNewDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Control, DataArgumentType.Status, msg, data); }
+ if (Platform.UseNewWinDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Control, DataArgumentType.Status, msg, data); }
else { return NativeMethods.DsmWinOld(origin, destination, DataGroups.Control, DataArgumentType.Status, msg, data); }
}
else if (Platform.IsLinux)
@@ -570,7 +570,7 @@ namespace NTwain.Triplets
{
if (Platform.IsWin)
{
- if (Platform.UseNewDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Control, dat, msg, ref data); }
+ if (Platform.UseNewWinDSM) { return NativeMethods.DsmWinNew(origin, destination, DataGroups.Control, dat, msg, ref data); }
else { return NativeMethods.DsmWinOld(origin, destination, DataGroups.Control, dat, msg, ref data); }
}
else if (Platform.IsLinux)
diff --git a/NTwain/TwainSession.cs b/NTwain/TwainSession.cs
index 0571ed2..d3e9c12 100644
--- a/NTwain/TwainSession.cs
+++ b/NTwain/TwainSession.cs
@@ -53,20 +53,19 @@ namespace NTwain
TWUserInterface _twui;
- static readonly Dictionary __ownedSources = new Dictionary();
+ readonly Dictionary _ownedSources = new Dictionary();
- internal static TwainSource GetSourceInstance(ITwainSessionInternal session, TWIdentity sourceId)
+ TwainSource GetSourceInstance(ITwainSessionInternal session, TWIdentity sourceId)
{
TwainSource source = null;
var key = string.Format(CultureInfo.InvariantCulture, "{0}|{1}|{2}", sourceId.Manufacturer, sourceId.ProductFamily, sourceId.ProductName);
- if (__ownedSources.ContainsKey(key))
+ if (_ownedSources.ContainsKey(key))
{
- source = __ownedSources[key];
- source.Session = session;
+ source = _ownedSources[key];
}
else
{
- __ownedSources[key] = source = new TwainSource(session, sourceId);
+ _ownedSources[key] = source = new TwainSource(session, sourceId);
}
return source;
}
diff --git a/NTwain/TwainSource.Caps.cs b/NTwain/TwainSource.Caps.cs
index 3948aae..7b01ad1 100644
--- a/NTwain/TwainSource.Caps.cs
+++ b/NTwain/TwainSource.Caps.cs
@@ -18,7 +18,7 @@ namespace NTwain
QuerySupport retVal = QuerySupport.None;
using (TWCapability cap = new TWCapability(capId))
{
- var rc = Session.DGControl.Capability.QuerySupport(cap);
+ var rc = _session.DGControl.Capability.QuerySupport(cap);
if (rc == ReturnCode.Success)
{
var read = CapabilityReader.ReadValue(cap);
@@ -41,7 +41,7 @@ namespace NTwain
{
using (TWCapability cap = new TWCapability(capId))
{
- var rc = Session.DGControl.Capability.GetCurrent(cap);
+ var rc = _session.DGControl.Capability.GetCurrent(cap);
if (rc == ReturnCode.Success)
{
var read = CapabilityReader.ReadValue(cap);
@@ -82,7 +82,7 @@ namespace NTwain
var list = new List