diff --git a/README.md b/README.md
index a407290..8c4687d 100644
--- a/README.md
+++ b/README.md
@@ -4,11 +4,12 @@
This is a library created to make working with
[TWAIN](http://twain.org/) easier in dotnet.
-This project has these features/goals:
+This project has these goals:
* Targets latest TWAIN version (2.4 as of this writing)
-* Supports all the TWAIN functions in the spec (may never happen but will be close).
-* Works with both 32 and 64 bit data sources (eventually)
+* Supports all the TWAIN functions in the spec
+* Works with both 32 and 64 bit data sources
+* Works on non-Windows platforms using dotnet core or mono (maybe)
## Using the lib
diff --git a/samples/NetCoreConsole/Program.cs b/samples/NetCoreConsole/Program.cs
index 77015ca..f67c93d 100644
--- a/samples/NetCoreConsole/Program.cs
+++ b/samples/NetCoreConsole/Program.cs
@@ -14,7 +14,7 @@ namespace ConsoleApp
.DefineApp(Assembly.GetExecutingAssembly())
.Build();
- Console.WriteLine($"App = {(config.Is64Bit ? "64bit" : "32bit")}");
+ Console.WriteLine($"App = {(config.Is32Bit ? "32bit" : "64bit")}");
Console.WriteLine($"Platform = {config.Platform}");
Console.WriteLine();
diff --git a/src/NTwain/DataSource.Props.cs b/src/NTwain/DataSource.Props.cs
index 4036f80..bbf406b 100644
--- a/src/NTwain/DataSource.Props.cs
+++ b/src/NTwain/DataSource.Props.cs
@@ -12,27 +12,27 @@ namespace NTwain
///
/// Gets the source name.
///
- public string Name => Identity.ProductName;
+ public string Name => Identity32.ProductName;
///
/// Gets the source's manufacturer name.
///
- public string Manufacturer => Identity.Manufacturer;
+ public string Manufacturer => Identity32.Manufacturer;
///
/// Gets the source's product family.
///
- public string ProductFamily => Identity.ProductFamily;
+ public string ProductFamily => Identity32.ProductFamily;
///
/// Gets the source's version info.
///
- public TW_VERSION Version => Identity.Version;
+ public TW_VERSION Version => Identity32.Version;
///
/// Gets the supported data group.
///
- public DataGroups DataGroup => Identity.DataGroup;
+ public DataGroups DataGroup => Identity32.DataGroup;
///
/// Gets the supported TWAIN protocol version.
diff --git a/src/NTwain/DataSource.cs b/src/NTwain/DataSource.cs
index 388a13a..40417da 100644
--- a/src/NTwain/DataSource.cs
+++ b/src/NTwain/DataSource.cs
@@ -13,12 +13,12 @@ namespace NTwain
{
internal readonly TwainSession Session;
- internal TW_IDENTITY Identity { get; }
+ internal TW_IDENTITY Identity32 { get; }
internal DataSource(TwainSession session, TW_IDENTITY src)
{
this.Session = session;
- this.Identity = src;
+ this.Identity32 = src;
ProtocolVersion = new Version(src.ProtocolMajor, src.ProtocolMinor);
}
@@ -26,13 +26,13 @@ namespace NTwain
/// Opens the source for capability negotiation.
///
///
- public ReturnCode Open() => Session.DGControl.Identity.OpenDS(Identity);
+ public ReturnCode Open() => Session.DGControl.Identity.OpenDS(Identity32);
///
/// Closes the source.
///
///
- public ReturnCode Close() => Session.DGControl.Identity.CloseDS(Identity);
+ public ReturnCode Close() => Session.DGControl.Identity.CloseDS(Identity32);
///
@@ -42,7 +42,7 @@ namespace NTwain
public TW_STATUS GetStatus()
{
TW_STATUS stat = default;
- var rc = Session.DGControl.Status.GetSourceStatus(ref stat);
+ var rc = Session.DGControl.Status.Get(ref stat, this);
return stat;
}
diff --git a/src/NTwain/Triplets/BaseTriplet.cs b/src/NTwain/Triplets/BaseTriplet.cs
index 3a8e41a..5dafa8b 100644
--- a/src/NTwain/Triplets/BaseTriplet.cs
+++ b/src/NTwain/Triplets/BaseTriplet.cs
@@ -20,15 +20,27 @@ namespace NTwain.Triplets
protected BaseTriplet(TwainSession session)
{
this.Session = session ?? throw new ArgumentNullException(nameof(session));
-
- // windows can always use 32bit structs even in 64bit app
- Use32BitData = session.Config.Platform == System.PlatformID.Win32NT ||
- !session.Config.Is64Bit;
+
+ Is32Bit = session.Config.Is32Bit;
+ IsWin = session.Config.Platform == System.PlatformID.Win32NT;
+ IsLinux = session.Config.Platform == System.PlatformID.Unix;
+ IsMac = session.Config.Platform == System.PlatformID.MacOSX;
}
///
/// Whether to use 32bit data structures.
///
- protected readonly bool Use32BitData;
+ protected readonly bool Is32Bit;
+
+ ///
+ /// Whether platform is Windows.
+ ///
+ protected readonly bool IsWin;
+ ///
+ /// Whether platform is Linux.
+ ///
+ protected readonly bool IsLinux;
+ /// Whether platform is MacOS.
+ protected readonly bool IsMac;
}
}
\ No newline at end of file
diff --git a/src/NTwain/Triplets/Control/Callback.cs b/src/NTwain/Triplets/Control/Callback.cs
index e42441b..72eef35 100644
--- a/src/NTwain/Triplets/Control/Callback.cs
+++ b/src/NTwain/Triplets/Control/Callback.cs
@@ -3,18 +3,36 @@ using NTwain.Internals;
namespace NTwain.Triplets.Control
{
- sealed class Callback : BaseTriplet
- {
- internal Callback(TwainSession session) : base(session) { }
+ sealed class Callback : BaseTriplet
+ {
+ internal Callback(TwainSession session) : base(session) { }
- public ReturnCode RegisterCallback(ref TW_CALLBACK callback)
+ public ReturnCode RegisterCallback(ref TW_CALLBACK callback)
{
- if (Use32BitData)
+ if (Is32Bit)
{
- return NativeMethods.Dsm32(Session.Config.App32, Session.CurrentSource.Identity,
- DataGroups.Control, DataArgumentType.Callback, Message.RegisterCallback, ref callback);
+ if (IsWin)
+ return NativeMethods.DsmWin32(Session.Config.App32, Session.CurrentSource.Identity32,
+ DataGroups.Control, DataArgumentType.Callback, Message.RegisterCallback, ref callback);
+ if (IsLinux)
+ return NativeMethods.DsmLinux32(Session.Config.App32, Session.CurrentSource.Identity32,
+ DataGroups.Control, DataArgumentType.Callback, Message.RegisterCallback, ref callback);
+ if (IsMac)
+ return NativeMethods.DsmMac32(Session.Config.App32, Session.CurrentSource.Identity32,
+ DataGroups.Control, DataArgumentType.Callback, Message.RegisterCallback, ref callback);
}
+
+ if (IsWin)
+ return NativeMethods.DsmWin64(Session.Config.App32, Session.CurrentSource.Identity32,
+ DataGroups.Control, DataArgumentType.Callback, Message.RegisterCallback, ref callback);
+ if (IsLinux)
+ return NativeMethods.DsmLinux64(Session.Config.App32, Session.CurrentSource.Identity32,
+ DataGroups.Control, DataArgumentType.Callback, Message.RegisterCallback, ref callback);
+ if (IsMac)
+ return NativeMethods.DsmMac64(Session.Config.App32, Session.CurrentSource.Identity32,
+ DataGroups.Control, DataArgumentType.Callback, Message.RegisterCallback, ref callback);
+
return ReturnCode.Failure;
}
- }
+ }
}
\ No newline at end of file
diff --git a/src/NTwain/Triplets/Control/Callback2.cs b/src/NTwain/Triplets/Control/Callback2.cs
index 5d8fc08..811dc9f 100644
--- a/src/NTwain/Triplets/Control/Callback2.cs
+++ b/src/NTwain/Triplets/Control/Callback2.cs
@@ -7,13 +7,31 @@ namespace NTwain.Triplets.Control
{
internal Callback2(TwainSession session) : base(session) { }
- public ReturnCode RegisterCallback(ref TW_CALLBACK2 callback)
+ public ReturnCode RegisterCallback(ref TW_CALLBACK2 callback2)
{
- if (Use32BitData)
+ if (Is32Bit)
{
- return NativeMethods.Dsm32(Session.Config.App32, Session.CurrentSource.Identity,
- DataGroups.Control, DataArgumentType.Callback2, Message.RegisterCallback, ref callback);
+ if (IsWin)
+ return NativeMethods.DsmWin32(Session.Config.App32, Session.CurrentSource.Identity32,
+ DataGroups.Control, DataArgumentType.Callback2, Message.RegisterCallback, ref callback2);
+ if (IsLinux)
+ return NativeMethods.DsmLinux32(Session.Config.App32, Session.CurrentSource.Identity32,
+ DataGroups.Control, DataArgumentType.Callback2, Message.RegisterCallback, ref callback2);
+ if (IsMac)
+ return NativeMethods.DsmMac32(Session.Config.App32, Session.CurrentSource.Identity32,
+ DataGroups.Control, DataArgumentType.Callback2, Message.RegisterCallback, ref callback2);
}
+
+ if (IsWin)
+ return NativeMethods.DsmWin64(Session.Config.App32, Session.CurrentSource.Identity32,
+ DataGroups.Control, DataArgumentType.Callback2, Message.RegisterCallback, ref callback2);
+ if (IsLinux)
+ return NativeMethods.DsmLinux64(Session.Config.App32, Session.CurrentSource.Identity32,
+ DataGroups.Control, DataArgumentType.Callback2, Message.RegisterCallback, ref callback2);
+ if (IsMac)
+ return NativeMethods.DsmMac64(Session.Config.App32, Session.CurrentSource.Identity32,
+ DataGroups.Control, DataArgumentType.Callback2, Message.RegisterCallback, ref callback2);
+
return ReturnCode.Failure;
}
}
diff --git a/src/NTwain/Triplets/Control/DeviceEvent.cs b/src/NTwain/Triplets/Control/DeviceEvent.cs
index 89372cd..7ac2ce5 100644
--- a/src/NTwain/Triplets/Control/DeviceEvent.cs
+++ b/src/NTwain/Triplets/Control/DeviceEvent.cs
@@ -7,13 +7,31 @@ namespace NTwain.Triplets.Control
{
internal DeviceEvent(TwainSession session) : base(session) { }
- public ReturnCode Get(ref TW_DEVICEEVENT sourceDeviceEvent)
+ public ReturnCode Get(ref TW_DEVICEEVENT evt)
{
- if (Use32BitData)
+ if (Is32Bit)
{
- return NativeMethods.Dsm32(Session.Config.App32, Session.CurrentSource.Identity,
- DataGroups.Control, DataArgumentType.DeviceEvent, Message.Get, ref sourceDeviceEvent);
+ if (IsWin)
+ return NativeMethods.DsmWin32(Session.Config.App32, Session.CurrentSource.Identity32,
+ DataGroups.Control, DataArgumentType.DeviceEvent, Message.Get, ref evt);
+ if (IsLinux)
+ return NativeMethods.DsmLinux32(Session.Config.App32, Session.CurrentSource.Identity32,
+ DataGroups.Control, DataArgumentType.DeviceEvent, Message.Get, ref evt);
+ if (IsMac)
+ return NativeMethods.DsmMac32(Session.Config.App32, Session.CurrentSource.Identity32,
+ DataGroups.Control, DataArgumentType.DeviceEvent, Message.Get, ref evt);
}
+
+ if (IsWin)
+ return NativeMethods.DsmWin64(Session.Config.App32, Session.CurrentSource.Identity32,
+ DataGroups.Control, DataArgumentType.DeviceEvent, Message.Get, ref evt);
+ if (IsLinux)
+ return NativeMethods.DsmLinux64(Session.Config.App32, Session.CurrentSource.Identity32,
+ DataGroups.Control, DataArgumentType.DeviceEvent, Message.Get, ref evt);
+ if (IsMac)
+ return NativeMethods.DsmMac64(Session.Config.App32, Session.CurrentSource.Identity32,
+ DataGroups.Control, DataArgumentType.DeviceEvent, Message.Get, ref evt);
+
return ReturnCode.Failure;
}
}
diff --git a/src/NTwain/Triplets/Control/EntryPoint.cs b/src/NTwain/Triplets/Control/EntryPoint.cs
index c83245b..a804974 100644
--- a/src/NTwain/Triplets/Control/EntryPoint.cs
+++ b/src/NTwain/Triplets/Control/EntryPoint.cs
@@ -10,14 +10,32 @@ namespace NTwain.Triplets.Control
{
internal EntryPoint(TwainSession session) : base(session) { }
- public ReturnCode Get(out TW_ENTRYPOINT entryPoint)
+ public ReturnCode Get(out TW_ENTRYPOINT entry)
{
- entryPoint = new TW_ENTRYPOINT();
- if (Use32BitData)
+ entry = new TW_ENTRYPOINT();
+ if (Is32Bit)
{
- return NativeMethods.Dsm32(Session.Config.App32, null,
- DataGroups.Control, DataArgumentType.EntryPoint, Message.Get, entryPoint);
+ if (IsWin)
+ return NativeMethods.DsmWin32(Session.Config.App32, IntPtr.Zero,
+ DataGroups.Control, DataArgumentType.EntryPoint, Message.Get, entry);
+ if (IsLinux)
+ return NativeMethods.DsmLinux32(Session.Config.App32, IntPtr.Zero,
+ DataGroups.Control, DataArgumentType.EntryPoint, Message.Get, entry);
+ if (IsMac)
+ return NativeMethods.DsmMac32(Session.Config.App32, IntPtr.Zero,
+ DataGroups.Control, DataArgumentType.EntryPoint, Message.Get, entry);
}
+
+ if (IsWin)
+ return NativeMethods.DsmWin64(Session.Config.App32, IntPtr.Zero,
+ DataGroups.Control, DataArgumentType.EntryPoint, Message.Get, entry);
+ if (IsLinux)
+ return NativeMethods.DsmLinux64(Session.Config.App32, IntPtr.Zero,
+ DataGroups.Control, DataArgumentType.EntryPoint, Message.Get, entry);
+ if (IsMac)
+ return NativeMethods.DsmMac64(Session.Config.App32, IntPtr.Zero,
+ DataGroups.Control, DataArgumentType.EntryPoint, Message.Get, entry);
+
return ReturnCode.Failure;
}
}
diff --git a/src/NTwain/Triplets/Control/Identity.cs b/src/NTwain/Triplets/Control/Identity.cs
index 6cf1fb1..d315be0 100644
--- a/src/NTwain/Triplets/Control/Identity.cs
+++ b/src/NTwain/Triplets/Control/Identity.cs
@@ -12,10 +12,29 @@ namespace NTwain.Triplets.Control
{
var rc = ReturnCode.Failure;
- if (Use32BitData)
+ if (Is32Bit)
{
- rc = NativeMethods.Dsm32(Session.Config.App32, IntPtr.Zero,
- DataGroups.Control, DataArgumentType.Identity, Message.CloseDS, source);
+ if (IsWin)
+ rc = NativeMethods.DsmWin32(Session.Config.App32, IntPtr.Zero,
+ DataGroups.Control, DataArgumentType.Identity, Message.CloseDS, source);
+ else if (IsLinux)
+ rc = NativeMethods.DsmLinux32(Session.Config.App32, IntPtr.Zero,
+ DataGroups.Control, DataArgumentType.Identity, Message.CloseDS, source);
+ else if (IsMac)
+ rc = NativeMethods.DsmMac32(Session.Config.App32, IntPtr.Zero,
+ DataGroups.Control, DataArgumentType.Identity, Message.CloseDS, source);
+ }
+ else
+ {
+ if (IsWin)
+ rc = NativeMethods.DsmWin64(Session.Config.App32, IntPtr.Zero,
+ DataGroups.Control, DataArgumentType.Identity, Message.CloseDS, source);
+ else if (IsLinux)
+ rc = NativeMethods.DsmLinux64(Session.Config.App32, IntPtr.Zero,
+ DataGroups.Control, DataArgumentType.Identity, Message.CloseDS, source);
+ else if (IsMac)
+ rc = NativeMethods.DsmMac64(Session.Config.App32, IntPtr.Zero,
+ DataGroups.Control, DataArgumentType.Identity, Message.CloseDS, source);
}
if (rc == ReturnCode.Success)
@@ -26,45 +45,34 @@ namespace NTwain.Triplets.Control
return rc;
}
- public ReturnCode GetDefault(out TW_IDENTITY source)
- {
- source = new TW_IDENTITY();
- if (Use32BitData)
- {
- return NativeMethods.Dsm32(Session.Config.App32, IntPtr.Zero,
- DataGroups.Control, DataArgumentType.Identity, Message.GetDefault, source);
- }
- return ReturnCode.Failure;
- }
-
-
- public ReturnCode GetFirst(out TW_IDENTITY source)
- {
- source = new TW_IDENTITY();
- if (Use32BitData)
- {
- return NativeMethods.Dsm32(Session.Config.App32, IntPtr.Zero,
- DataGroups.Control, DataArgumentType.Identity, Message.GetFirst, source);
- }
- return ReturnCode.Failure;
- }
-
- public ReturnCode GetNext(out TW_IDENTITY source)
- {
- source = new TW_IDENTITY();
- return NativeMethods.Dsm32(Session.Config.App32, IntPtr.Zero,
- DataGroups.Control, DataArgumentType.Identity, Message.GetNext, source);
- }
-
public ReturnCode OpenDS(TW_IDENTITY source)
{
Session.StepDown(TwainState.DsmOpened);
var rc = ReturnCode.Failure;
- if (Use32BitData)
+ if (Is32Bit)
{
- rc = NativeMethods.Dsm32(Session.Config.App32, IntPtr.Zero,
- DataGroups.Control, DataArgumentType.Identity, Message.OpenDS, source);
+ if (IsWin)
+ rc = NativeMethods.DsmWin32(Session.Config.App32, IntPtr.Zero,
+ DataGroups.Control, DataArgumentType.Identity, Message.OpenDS, source);
+ else if (IsLinux)
+ rc = NativeMethods.DsmLinux32(Session.Config.App32, IntPtr.Zero,
+ DataGroups.Control, DataArgumentType.Identity, Message.OpenDS, source);
+ else if (IsMac)
+ rc = NativeMethods.DsmMac32(Session.Config.App32, IntPtr.Zero,
+ DataGroups.Control, DataArgumentType.Identity, Message.OpenDS, source);
+ }
+ else
+ {
+ if (IsWin)
+ rc = NativeMethods.DsmWin64(Session.Config.App32, IntPtr.Zero,
+ DataGroups.Control, DataArgumentType.Identity, Message.OpenDS, source);
+ else if (IsLinux)
+ rc = NativeMethods.DsmLinux64(Session.Config.App32, IntPtr.Zero,
+ DataGroups.Control, DataArgumentType.Identity, Message.OpenDS, source);
+ else if (IsMac)
+ rc = NativeMethods.DsmMac64(Session.Config.App32, IntPtr.Zero,
+ DataGroups.Control, DataArgumentType.Identity, Message.OpenDS, source);
}
if (rc == ReturnCode.Success)
@@ -76,24 +84,147 @@ namespace NTwain.Triplets.Control
return rc;
}
+ public ReturnCode GetDefault(out TW_IDENTITY source)
+ {
+ source = new TW_IDENTITY();
+ if (Is32Bit)
+ {
+ if (IsWin)
+ return NativeMethods.DsmWin32(Session.Config.App32, IntPtr.Zero,
+ DataGroups.Control, DataArgumentType.Identity, Message.GetDefault, source);
+ if (IsLinux)
+ return NativeMethods.DsmLinux32(Session.Config.App32, IntPtr.Zero,
+ DataGroups.Control, DataArgumentType.Identity, Message.GetDefault, source);
+ if (IsMac)
+ return NativeMethods.DsmMac32(Session.Config.App32, IntPtr.Zero,
+ DataGroups.Control, DataArgumentType.Identity, Message.GetDefault, source);
+ }
+
+ if (IsWin)
+ return NativeMethods.DsmWin64(Session.Config.App32, IntPtr.Zero,
+ DataGroups.Control, DataArgumentType.Identity, Message.GetDefault, source);
+ if (IsLinux)
+ return NativeMethods.DsmLinux64(Session.Config.App32, IntPtr.Zero,
+ DataGroups.Control, DataArgumentType.Identity, Message.GetDefault, source);
+ if (IsMac)
+ return NativeMethods.DsmMac64(Session.Config.App32, IntPtr.Zero,
+ DataGroups.Control, DataArgumentType.Identity, Message.GetDefault, source);
+
+ return ReturnCode.Failure;
+ }
+
+ public ReturnCode GetFirst(out TW_IDENTITY source)
+ {
+ source = new TW_IDENTITY();
+ if (Is32Bit)
+ {
+ if (IsWin)
+ return NativeMethods.DsmWin32(Session.Config.App32, IntPtr.Zero,
+ DataGroups.Control, DataArgumentType.Identity, Message.GetFirst, source);
+ if (IsLinux)
+ return NativeMethods.DsmLinux32(Session.Config.App32, IntPtr.Zero,
+ DataGroups.Control, DataArgumentType.Identity, Message.GetFirst, source);
+ if (IsMac)
+ return NativeMethods.DsmMac32(Session.Config.App32, IntPtr.Zero,
+ DataGroups.Control, DataArgumentType.Identity, Message.GetFirst, source);
+ }
+
+ if (IsWin)
+ return NativeMethods.DsmWin64(Session.Config.App32, IntPtr.Zero,
+ DataGroups.Control, DataArgumentType.Identity, Message.GetFirst, source);
+ if (IsLinux)
+ return NativeMethods.DsmLinux64(Session.Config.App32, IntPtr.Zero,
+ DataGroups.Control, DataArgumentType.Identity, Message.GetFirst, source);
+ if (IsMac)
+ return NativeMethods.DsmMac64(Session.Config.App32, IntPtr.Zero,
+ DataGroups.Control, DataArgumentType.Identity, Message.GetFirst, source);
+
+ return ReturnCode.Failure;
+ }
+
+ public ReturnCode GetNext(out TW_IDENTITY source)
+ {
+ source = new TW_IDENTITY();
+ if (Is32Bit)
+ {
+ if (IsWin)
+ return NativeMethods.DsmWin32(Session.Config.App32, IntPtr.Zero,
+ DataGroups.Control, DataArgumentType.Identity, Message.GetNext, source);
+ if (IsLinux)
+ return NativeMethods.DsmLinux32(Session.Config.App32, IntPtr.Zero,
+ DataGroups.Control, DataArgumentType.Identity, Message.GetNext, source);
+ if (IsMac)
+ return NativeMethods.DsmMac32(Session.Config.App32, IntPtr.Zero,
+ DataGroups.Control, DataArgumentType.Identity, Message.GetNext, source);
+ }
+
+ if (IsWin)
+ return NativeMethods.DsmWin64(Session.Config.App32, IntPtr.Zero,
+ DataGroups.Control, DataArgumentType.Identity, Message.GetNext, source);
+ if (IsLinux)
+ return NativeMethods.DsmLinux64(Session.Config.App32, IntPtr.Zero,
+ DataGroups.Control, DataArgumentType.Identity, Message.GetNext, source);
+ if (IsMac)
+ return NativeMethods.DsmMac64(Session.Config.App32, IntPtr.Zero,
+ DataGroups.Control, DataArgumentType.Identity, Message.GetNext, source);
+
+ return ReturnCode.Failure;
+ }
+
public ReturnCode Set(DataSource source)
{
- if (Use32BitData)
+ if (Is32Bit)
{
- return NativeMethods.Dsm32(Session.Config.App32, IntPtr.Zero,
- DataGroups.Control, DataArgumentType.Identity, Message.Set, source?.Identity);
+ if (IsWin)
+ return NativeMethods.DsmWin32(Session.Config.App32, IntPtr.Zero,
+ DataGroups.Control, DataArgumentType.Identity, Message.Set, source?.Identity32);
+ if (IsLinux)
+ return NativeMethods.DsmLinux32(Session.Config.App32, IntPtr.Zero,
+ DataGroups.Control, DataArgumentType.Identity, Message.Set, source?.Identity32);
+ if (IsMac)
+ return NativeMethods.DsmMac32(Session.Config.App32, IntPtr.Zero,
+ DataGroups.Control, DataArgumentType.Identity, Message.Set, source?.Identity32);
}
+
+ if (IsWin)
+ return NativeMethods.DsmWin64(Session.Config.App32, IntPtr.Zero,
+ DataGroups.Control, DataArgumentType.Identity, Message.Set, source?.Identity32);
+ if (IsLinux)
+ return NativeMethods.DsmLinux64(Session.Config.App32, IntPtr.Zero,
+ DataGroups.Control, DataArgumentType.Identity, Message.Set, source?.Identity32);
+ if (IsMac)
+ return NativeMethods.DsmMac64(Session.Config.App32, IntPtr.Zero,
+ DataGroups.Control, DataArgumentType.Identity, Message.Set, source?.Identity32);
+
return ReturnCode.Failure;
}
public ReturnCode UserSelect(out TW_IDENTITY source)
{
source = new TW_IDENTITY();
- if (Use32BitData)
+ if (Is32Bit)
{
- return NativeMethods.Dsm32(Session.Config.App32, IntPtr.Zero,
- DataGroups.Control, DataArgumentType.Identity, Message.UserSelect, source);
+ if (IsWin)
+ return NativeMethods.DsmWin32(Session.Config.App32, IntPtr.Zero,
+ DataGroups.Control, DataArgumentType.Identity, Message.UserSelect, source);
+ if (IsLinux)
+ return NativeMethods.DsmLinux32(Session.Config.App32, IntPtr.Zero,
+ DataGroups.Control, DataArgumentType.Identity, Message.UserSelect, source);
+ if (IsMac)
+ return NativeMethods.DsmMac32(Session.Config.App32, IntPtr.Zero,
+ DataGroups.Control, DataArgumentType.Identity, Message.UserSelect, source);
}
+
+ if (IsWin)
+ return NativeMethods.DsmWin64(Session.Config.App32, IntPtr.Zero,
+ DataGroups.Control, DataArgumentType.Identity, Message.UserSelect, source);
+ if (IsLinux)
+ return NativeMethods.DsmLinux64(Session.Config.App32, IntPtr.Zero,
+ DataGroups.Control, DataArgumentType.Identity, Message.UserSelect, source);
+ if (IsMac)
+ return NativeMethods.DsmMac64(Session.Config.App32, IntPtr.Zero,
+ DataGroups.Control, DataArgumentType.Identity, Message.UserSelect, source);
+
return ReturnCode.Failure;
}
}
diff --git a/src/NTwain/Triplets/Control/Parent.cs b/src/NTwain/Triplets/Control/Parent.cs
index 0354725..bcca8b5 100644
--- a/src/NTwain/Triplets/Control/Parent.cs
+++ b/src/NTwain/Triplets/Control/Parent.cs
@@ -16,10 +16,32 @@ namespace NTwain.Triplets.Control
bool isDsm2 = false;
- if (Use32BitData)
+ if (Is32Bit)
{
- rc = NativeMethods.Dsm32(Session.Config.App32, null,
- DataGroups.Control, DataArgumentType.Parent, Message.OpenDSM, ref hWnd);
+ if (IsWin)
+ rc = NativeMethods.DsmWin32(Session.Config.App32, null, DataGroups.Control,
+ DataArgumentType.Parent, Message.OpenDSM, ref hWnd);
+ else if (IsLinux)
+ rc = NativeMethods.DsmLinux32(Session.Config.App32, null, DataGroups.Control,
+ DataArgumentType.Parent, Message.OpenDSM, ref hWnd);
+ else if (IsMac)
+ rc = NativeMethods.DsmMac32(Session.Config.App32, null, DataGroups.Control,
+ DataArgumentType.Parent, Message.OpenDSM, ref hWnd);
+
+ isDsm2 = rc == ReturnCode.Success &&
+ (Session.Config.App32.DataFlags & DataFlags.DSM2) == DataFlags.DSM2;
+ }
+ else
+ {
+ if (IsWin)
+ rc = NativeMethods.DsmWin64(Session.Config.App32, null, DataGroups.Control,
+ DataArgumentType.Parent, Message.OpenDSM, ref hWnd);
+ else if (IsLinux)
+ rc = NativeMethods.DsmLinux64(Session.Config.App32, null, DataGroups.Control,
+ DataArgumentType.Parent, Message.OpenDSM, ref hWnd);
+ else if (IsMac)
+ rc = NativeMethods.DsmMac64(Session.Config.App32, null, DataGroups.Control,
+ DataArgumentType.Parent, Message.OpenDSM, ref hWnd);
isDsm2 = rc == ReturnCode.Success &&
(Session.Config.App32.DataFlags & DataFlags.DSM2) == DataFlags.DSM2;
@@ -45,10 +67,29 @@ namespace NTwain.Triplets.Control
{
var rc = ReturnCode.Failure;
- if (Use32BitData)
+ if (Is32Bit)
{
- rc = NativeMethods.Dsm32(Session.Config.App32, null, DataGroups.Control,
- DataArgumentType.Parent, Message.CloseDSM, ref hWnd);
+ if (IsWin)
+ rc = NativeMethods.DsmWin32(Session.Config.App32, null, DataGroups.Control,
+ DataArgumentType.Parent, Message.CloseDSM, ref hWnd);
+ else if (IsLinux)
+ rc = NativeMethods.DsmLinux32(Session.Config.App32, null, DataGroups.Control,
+ DataArgumentType.Parent, Message.CloseDSM, ref hWnd);
+ else if (IsMac)
+ rc = NativeMethods.DsmMac32(Session.Config.App32, null, DataGroups.Control,
+ DataArgumentType.Parent, Message.CloseDSM, ref hWnd);
+ }
+ else
+ {
+ if (IsWin)
+ rc = NativeMethods.DsmWin64(Session.Config.App32, null, DataGroups.Control,
+ DataArgumentType.Parent, Message.CloseDSM, ref hWnd);
+ else if (IsLinux)
+ rc = NativeMethods.DsmLinux64(Session.Config.App32, null, DataGroups.Control,
+ DataArgumentType.Parent, Message.CloseDSM, ref hWnd);
+ else if (IsMac)
+ rc = NativeMethods.DsmMac64(Session.Config.App32, null, DataGroups.Control,
+ DataArgumentType.Parent, Message.CloseDSM, ref hWnd);
}
if (rc == ReturnCode.Success)
diff --git a/src/NTwain/Triplets/Control/Status.cs b/src/NTwain/Triplets/Control/Status.cs
index f8aec18..28e5a50 100644
--- a/src/NTwain/Triplets/Control/Status.cs
+++ b/src/NTwain/Triplets/Control/Status.cs
@@ -7,23 +7,30 @@ namespace NTwain.Triplets.Control
{
internal Status(TwainSession session) : base(session) { }
- public ReturnCode GetManagerStatus(ref TW_STATUS status)
+ public ReturnCode Get(ref TW_STATUS status, DataSource source)
{
- if (Use32BitData)
+ if (Is32Bit)
{
- return NativeMethods.Dsm32(Session.Config.App32, null,
- DataGroups.Control, DataArgumentType.Status, Message.Get, ref status);
+ if (IsWin)
+ return NativeMethods.DsmWin32(Session.Config.App32, source?.Identity32,
+ DataGroups.Control, DataArgumentType.Status, Message.Get, ref status);
+ if (IsLinux)
+ return NativeMethods.DsmLinux32(Session.Config.App32, source?.Identity32,
+ DataGroups.Control, DataArgumentType.Status, Message.Get, ref status);
+ if (IsMac)
+ return NativeMethods.DsmMac32(Session.Config.App32, source?.Identity32,
+ DataGroups.Control, DataArgumentType.Status, Message.Get, ref status);
}
- return ReturnCode.Failure;
- }
+ if (IsWin)
+ return NativeMethods.DsmWin64(Session.Config.App32, source?.Identity32,
+ DataGroups.Control, DataArgumentType.Status, Message.Get, ref status);
+ if (IsLinux)
+ return NativeMethods.DsmLinux64(Session.Config.App32, source?.Identity32,
+ DataGroups.Control, DataArgumentType.Status, Message.Get, ref status);
+ if (IsMac)
+ return NativeMethods.DsmMac64(Session.Config.App32, source?.Identity32,
+ DataGroups.Control, DataArgumentType.Status, Message.Get, ref status);
- public ReturnCode GetSourceStatus(ref TW_STATUS status)
- {
- if (Use32BitData)
- {
- return NativeMethods.Dsm32(Session.Config.App32, Session.CurrentSource.Identity,
- DataGroups.Control, DataArgumentType.Status, Message.Get, ref status);
- }
return ReturnCode.Failure;
}
}
diff --git a/src/NTwain/Triplets/Control/StatusUtf8.cs b/src/NTwain/Triplets/Control/StatusUtf8.cs
index ddb7c9a..8891967 100644
--- a/src/NTwain/Triplets/Control/StatusUtf8.cs
+++ b/src/NTwain/Triplets/Control/StatusUtf8.cs
@@ -10,16 +10,35 @@ namespace NTwain.Triplets.Control
{
internal StatusUtf8(TwainSession session) : base(session) { }
- public ReturnCode Get(ref TW_STATUS status, out string message)
+ public ReturnCode Get(ref TW_STATUS status, DataSource source, out string message)
{
message = null;
var rc = ReturnCode.Failure;
TW_STATUSUTF8 real = new TW_STATUSUTF8 { Status = status };
- if (Use32BitData)
+ if (Is32Bit)
{
- rc = NativeMethods.Dsm32(Session.Config.App32, Session.CurrentSource?.Identity,
- DataGroups.Control, DataArgumentType.StatusUtf8, Message.Get, ref real);
+ if (IsWin)
+ rc = NativeMethods.DsmWin32(Session.Config.App32, source?.Identity32,
+ DataGroups.Control, DataArgumentType.StatusUtf8, Message.Get, ref real);
+ else if (IsLinux)
+ rc = NativeMethods.DsmLinux32(Session.Config.App32, source?.Identity32,
+ DataGroups.Control, DataArgumentType.StatusUtf8, Message.Get, ref real);
+ else if (IsMac)
+ rc = NativeMethods.DsmMac32(Session.Config.App32, source?.Identity32,
+ DataGroups.Control, DataArgumentType.StatusUtf8, Message.Get, ref real);
+ }
+ else
+ {
+ if (IsWin)
+ rc = NativeMethods.DsmWin64(Session.Config.App32, source?.Identity32,
+ DataGroups.Control, DataArgumentType.StatusUtf8, Message.Get, ref real);
+ else if (IsLinux)
+ rc = NativeMethods.DsmLinux64(Session.Config.App32, source?.Identity32,
+ DataGroups.Control, DataArgumentType.StatusUtf8, Message.Get, ref real);
+ else if (IsMac)
+ rc = NativeMethods.DsmMac64(Session.Config.App32, source?.Identity32,
+ DataGroups.Control, DataArgumentType.StatusUtf8, Message.Get, ref real);
}
if (rc == ReturnCode.Success)
diff --git a/src/NTwain/Triplets/NativeMethods.Linux32.cs b/src/NTwain/Triplets/NativeMethods.Linux32.cs
new file mode 100644
index 0000000..8ea5fde
--- /dev/null
+++ b/src/NTwain/Triplets/NativeMethods.Linux32.cs
@@ -0,0 +1,283 @@
+using NTwain.Data;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Runtime.InteropServices;
+using System.Text;
+
+namespace NTwain.Triplets
+{
+ static partial class NativeMethods
+ {
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux32(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref IntPtr data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux32(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref DataGroups data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux32(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_AUDIOINFO data);
+
+ //[DllImport(DSM.WinDsmDll, EntryPoint = DSM.EntryName)]
+ //public static extern ReturnCode DsmLinux32(
+ // [In, Out]TW_IDENTITY origin,
+ // [In, Out]TW_IDENTITY destination,
+ // DataGroups dg,
+ // DataArgumentType dat,
+ // Message msg,
+ // ref TWCapability data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux32(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_CUSTOMDSDATA data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux32(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_DEVICEEVENT data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux32(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_CALLBACK data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux32(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_CALLBACK2 data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux32(
+ [In, Out]TW_IDENTITY origin,
+ IntPtr zero,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ [In, Out]TW_ENTRYPOINT data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux32(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_EVENT data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux32(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_FILESYSTEM data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux32(
+ [In, Out]TW_IDENTITY origin,
+ IntPtr zero,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ [In, Out]TW_IDENTITY data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux32(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_PASSTHRU data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux32(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_PENDINGXFERS data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux32(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_SETUPFILEXFER data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux32(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_SETUPMEMXFER data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux32(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_STATUSUTF8 data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux32(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_USERINTERFACE data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux32(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_CIECOLOR data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux32(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_EXTIMAGEINFO data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux32(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_FILTER data);
+
+ //[DllImport(DSM.WinDsmDll, EntryPoint = DSM.EntryName)]
+ //public static extern ReturnCode DsmLinux32(
+ // [In, Out]TW_IDENTITY origin,
+ // [In, Out]TW_IDENTITY destination,
+ // DataGroups dg,
+ // DataArgumentType dat,
+ // Message msg,
+ // ref TWGrayResponse data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux32(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_IMAGEINFO data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux32(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_IMAGELAYOUT data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux32(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_IMAGEMEMXFER data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux32(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_JPEGCOMPRESSION data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux32(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_PALETTE8 data);
+
+ //[DllImport(DSM.WinDsmDll, EntryPoint = DSM.EntryName)]
+ //public static extern ReturnCode DsmLinux32(
+ // [In, Out]TW_IDENTITY origin,
+ // [In, Out]TW_IDENTITY destination,
+ // DataGroups dg,
+ // DataArgumentType dat,
+ // Message msg,
+ // ref TWRgbResponse data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux32(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_STATUS data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux32(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_MEMORY data);
+
+ }
+}
diff --git a/src/NTwain/Triplets/NativeMethods.Linux64.cs b/src/NTwain/Triplets/NativeMethods.Linux64.cs
new file mode 100644
index 0000000..be38937
--- /dev/null
+++ b/src/NTwain/Triplets/NativeMethods.Linux64.cs
@@ -0,0 +1,283 @@
+using NTwain.Data;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Runtime.InteropServices;
+using System.Text;
+
+namespace NTwain.Triplets
+{
+ static partial class NativeMethods
+ {
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref IntPtr data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref DataGroups data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_AUDIOINFO data);
+
+ //[DllImport(DSM.WinDsmDll, EntryPoint = DSM.EntryName)]
+ //public static extern ReturnCode DsmLinux64(
+ // [In, Out]TW_IDENTITY origin,
+ // [In, Out]TW_IDENTITY destination,
+ // DataGroups dg,
+ // DataArgumentType dat,
+ // Message msg,
+ // ref TWCapability data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_CUSTOMDSDATA data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_DEVICEEVENT data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_CALLBACK data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_CALLBACK2 data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux64(
+ [In, Out]TW_IDENTITY origin,
+ IntPtr zero,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ [In, Out]TW_ENTRYPOINT data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_EVENT data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_FILESYSTEM data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux64(
+ [In, Out]TW_IDENTITY origin,
+ IntPtr zero,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ [In, Out]TW_IDENTITY data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_PASSTHRU data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_PENDINGXFERS data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_SETUPFILEXFER data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_SETUPMEMXFER data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_STATUSUTF8 data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_USERINTERFACE data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_CIECOLOR data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_EXTIMAGEINFO data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_FILTER data);
+
+ //[DllImport(DSM.WinDsmDll, EntryPoint = DSM.EntryName)]
+ //public static extern ReturnCode DsmLinux64(
+ // [In, Out]TW_IDENTITY origin,
+ // [In, Out]TW_IDENTITY destination,
+ // DataGroups dg,
+ // DataArgumentType dat,
+ // Message msg,
+ // ref TWGrayResponse data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_IMAGEINFO data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_IMAGELAYOUT data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_IMAGEMEMXFER data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_JPEGCOMPRESSION data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_PALETTE8 data);
+
+ //[DllImport(DSM.WinDsmDll, EntryPoint = DSM.EntryName)]
+ //public static extern ReturnCode DsmLinux64(
+ // [In, Out]TW_IDENTITY origin,
+ // [In, Out]TW_IDENTITY destination,
+ // DataGroups dg,
+ // DataArgumentType dat,
+ // Message msg,
+ // ref TWRgbResponse data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_STATUS data);
+
+ [DllImport(LinuxDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmLinux64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_MEMORY data);
+
+ }
+}
diff --git a/src/NTwain/Triplets/NativeMethods.Mac32.cs b/src/NTwain/Triplets/NativeMethods.Mac32.cs
new file mode 100644
index 0000000..87294f3
--- /dev/null
+++ b/src/NTwain/Triplets/NativeMethods.Mac32.cs
@@ -0,0 +1,283 @@
+using NTwain.Data;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Runtime.InteropServices;
+using System.Text;
+
+namespace NTwain.Triplets
+{
+ static partial class NativeMethods
+ {
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac32(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref IntPtr data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac32(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref DataGroups data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac32(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_AUDIOINFO data);
+
+ //[DllImport(DSM.WinDsmDll, EntryPoint = DSM.EntryName)]
+ //public static extern ReturnCode DsmMac32(
+ // [In, Out]TW_IDENTITY origin,
+ // [In, Out]TW_IDENTITY destination,
+ // DataGroups dg,
+ // DataArgumentType dat,
+ // Message msg,
+ // ref TWCapability data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac32(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_CUSTOMDSDATA data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac32(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_DEVICEEVENT data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac32(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_CALLBACK data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac32(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_CALLBACK2 data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac32(
+ [In, Out]TW_IDENTITY origin,
+ IntPtr zero,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ [In, Out]TW_ENTRYPOINT data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac32(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_EVENT data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac32(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_FILESYSTEM data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac32(
+ [In, Out]TW_IDENTITY origin,
+ IntPtr zero,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ [In, Out]TW_IDENTITY data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac32(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_PASSTHRU data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac32(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_PENDINGXFERS data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac32(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_SETUPFILEXFER data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac32(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_SETUPMEMXFER data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac32(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_STATUSUTF8 data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac32(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_USERINTERFACE data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac32(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_CIECOLOR data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac32(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_EXTIMAGEINFO data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac32(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_FILTER data);
+
+ //[DllImport(DSM.WinDsmDll, EntryPoint = DSM.EntryName)]
+ //public static extern ReturnCode DsmMac32(
+ // [In, Out]TW_IDENTITY origin,
+ // [In, Out]TW_IDENTITY destination,
+ // DataGroups dg,
+ // DataArgumentType dat,
+ // Message msg,
+ // ref TWGrayResponse data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac32(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_IMAGEINFO data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac32(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_IMAGELAYOUT data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac32(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_IMAGEMEMXFER data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac32(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_JPEGCOMPRESSION data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac32(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_PALETTE8 data);
+
+ //[DllImport(DSM.WinDsmDll, EntryPoint = DSM.EntryName)]
+ //public static extern ReturnCode DsmMac32(
+ // [In, Out]TW_IDENTITY origin,
+ // [In, Out]TW_IDENTITY destination,
+ // DataGroups dg,
+ // DataArgumentType dat,
+ // Message msg,
+ // ref TWRgbResponse data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac32(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_STATUS data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac32(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_MEMORY data);
+
+ }
+}
diff --git a/src/NTwain/Triplets/NativeMethods.Mac64.cs b/src/NTwain/Triplets/NativeMethods.Mac64.cs
new file mode 100644
index 0000000..b75ac02
--- /dev/null
+++ b/src/NTwain/Triplets/NativeMethods.Mac64.cs
@@ -0,0 +1,283 @@
+using NTwain.Data;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Runtime.InteropServices;
+using System.Text;
+
+namespace NTwain.Triplets
+{
+ static partial class NativeMethods
+ {
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref IntPtr data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref DataGroups data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_AUDIOINFO data);
+
+ //[DllImport(DSM.WinDsmDll, EntryPoint = DSM.EntryName)]
+ //public static extern ReturnCode DsmMac64(
+ // [In, Out]TW_IDENTITY origin,
+ // [In, Out]TW_IDENTITY destination,
+ // DataGroups dg,
+ // DataArgumentType dat,
+ // Message msg,
+ // ref TWCapability data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_CUSTOMDSDATA data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_DEVICEEVENT data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_CALLBACK data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_CALLBACK2 data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac64(
+ [In, Out]TW_IDENTITY origin,
+ IntPtr zero,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ [In, Out]TW_ENTRYPOINT data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_EVENT data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_FILESYSTEM data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac64(
+ [In, Out]TW_IDENTITY origin,
+ IntPtr zero,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ [In, Out]TW_IDENTITY data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_PASSTHRU data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_PENDINGXFERS data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_SETUPFILEXFER data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_SETUPMEMXFER data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_STATUSUTF8 data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_USERINTERFACE data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_CIECOLOR data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_EXTIMAGEINFO data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_FILTER data);
+
+ //[DllImport(DSM.WinDsmDll, EntryPoint = DSM.EntryName)]
+ //public static extern ReturnCode DsmMac64(
+ // [In, Out]TW_IDENTITY origin,
+ // [In, Out]TW_IDENTITY destination,
+ // DataGroups dg,
+ // DataArgumentType dat,
+ // Message msg,
+ // ref TWGrayResponse data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_IMAGEINFO data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_IMAGELAYOUT data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_IMAGEMEMXFER data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_JPEGCOMPRESSION data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_PALETTE8 data);
+
+ //[DllImport(DSM.WinDsmDll, EntryPoint = DSM.EntryName)]
+ //public static extern ReturnCode DsmMac64(
+ // [In, Out]TW_IDENTITY origin,
+ // [In, Out]TW_IDENTITY destination,
+ // DataGroups dg,
+ // DataArgumentType dat,
+ // Message msg,
+ // ref TWRgbResponse data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_STATUS data);
+
+ [DllImport(Mac32Dll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmMac64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_MEMORY data);
+
+ }
+}
diff --git a/src/NTwain/Triplets/NativeMethods.32.cs b/src/NTwain/Triplets/NativeMethods.Win32.cs
similarity index 69%
rename from src/NTwain/Triplets/NativeMethods.32.cs
rename to src/NTwain/Triplets/NativeMethods.Win32.cs
index 8b9c71d..725b572 100644
--- a/src/NTwain/Triplets/NativeMethods.32.cs
+++ b/src/NTwain/Triplets/NativeMethods.Win32.cs
@@ -9,8 +9,8 @@ namespace NTwain.Triplets
{
static partial class NativeMethods
{
- [DllImport(WinDsmDll, EntryPoint = EntryName)]
- public static extern ReturnCode Dsm32(
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin32(
[In, Out]TW_IDENTITY origin,
[In, Out]TW_IDENTITY destination,
DataGroups dg,
@@ -18,8 +18,8 @@ namespace NTwain.Triplets
Message msg,
ref IntPtr data);
- [DllImport(WinDsmDll, EntryPoint = EntryName)]
- public static extern ReturnCode Dsm32(
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin32(
[In, Out]TW_IDENTITY origin,
[In, Out]TW_IDENTITY destination,
DataGroups dg,
@@ -27,8 +27,8 @@ namespace NTwain.Triplets
Message msg,
ref DataGroups data);
- [DllImport(WinDsmDll, EntryPoint = EntryName)]
- public static extern ReturnCode Dsm32(
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin32(
[In, Out]TW_IDENTITY origin,
[In, Out]TW_IDENTITY destination,
DataGroups dg,
@@ -37,7 +37,7 @@ namespace NTwain.Triplets
ref TW_AUDIOINFO data);
//[DllImport(DSM.WinDsmDll, EntryPoint = DSM.EntryName)]
- //public static extern ReturnCode Dsm32(
+ //public static extern ReturnCode DsmWin32(
// [In, Out]TW_IDENTITY origin,
// [In, Out]TW_IDENTITY destination,
// DataGroups dg,
@@ -45,8 +45,8 @@ namespace NTwain.Triplets
// Message msg,
// ref TWCapability data);
- [DllImport(WinDsmDll, EntryPoint = EntryName)]
- public static extern ReturnCode Dsm32(
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin32(
[In, Out]TW_IDENTITY origin,
[In, Out]TW_IDENTITY destination,
DataGroups dg,
@@ -54,8 +54,8 @@ namespace NTwain.Triplets
Message msg,
ref TW_CUSTOMDSDATA data);
- [DllImport(WinDsmDll, EntryPoint = EntryName)]
- public static extern ReturnCode Dsm32(
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin32(
[In, Out]TW_IDENTITY origin,
[In, Out]TW_IDENTITY destination,
DataGroups dg,
@@ -63,8 +63,8 @@ namespace NTwain.Triplets
Message msg,
ref TW_DEVICEEVENT data);
- [DllImport(WinDsmDll, EntryPoint = EntryName)]
- public static extern ReturnCode Dsm32(
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin32(
[In, Out]TW_IDENTITY origin,
[In, Out]TW_IDENTITY destination,
DataGroups dg,
@@ -72,8 +72,8 @@ namespace NTwain.Triplets
Message msg,
ref TW_CALLBACK data);
- [DllImport(WinDsmDll, EntryPoint = EntryName)]
- public static extern ReturnCode Dsm32(
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin32(
[In, Out]TW_IDENTITY origin,
[In, Out]TW_IDENTITY destination,
DataGroups dg,
@@ -81,17 +81,17 @@ namespace NTwain.Triplets
Message msg,
ref TW_CALLBACK2 data);
- [DllImport(WinDsmDll, EntryPoint = EntryName)]
- public static extern ReturnCode Dsm32(
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin32(
[In, Out]TW_IDENTITY origin,
- [In, Out]TW_IDENTITY destination,
+ IntPtr zero,
DataGroups dg,
DataArgumentType dat,
Message msg,
[In, Out]TW_ENTRYPOINT data);
- [DllImport(WinDsmDll, EntryPoint = EntryName)]
- public static extern ReturnCode Dsm32(
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin32(
[In, Out]TW_IDENTITY origin,
[In, Out]TW_IDENTITY destination,
DataGroups dg,
@@ -99,8 +99,8 @@ namespace NTwain.Triplets
Message msg,
ref TW_EVENT data);
- [DllImport(WinDsmDll, EntryPoint = EntryName)]
- public static extern ReturnCode Dsm32(
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin32(
[In, Out]TW_IDENTITY origin,
[In, Out]TW_IDENTITY destination,
DataGroups dg,
@@ -108,8 +108,8 @@ namespace NTwain.Triplets
Message msg,
ref TW_FILESYSTEM data);
- [DllImport(WinDsmDll, EntryPoint = EntryName)]
- public static extern ReturnCode Dsm32(
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin32(
[In, Out]TW_IDENTITY origin,
IntPtr zero,
DataGroups dg,
@@ -117,8 +117,8 @@ namespace NTwain.Triplets
Message msg,
[In, Out]TW_IDENTITY data);
- [DllImport(WinDsmDll, EntryPoint = EntryName)]
- public static extern ReturnCode Dsm32(
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin32(
[In, Out]TW_IDENTITY origin,
[In, Out]TW_IDENTITY destination,
DataGroups dg,
@@ -126,8 +126,8 @@ namespace NTwain.Triplets
Message msg,
ref TW_PASSTHRU data);
- [DllImport(WinDsmDll, EntryPoint = EntryName)]
- public static extern ReturnCode Dsm32(
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin32(
[In, Out]TW_IDENTITY origin,
[In, Out]TW_IDENTITY destination,
DataGroups dg,
@@ -135,8 +135,8 @@ namespace NTwain.Triplets
Message msg,
ref TW_PENDINGXFERS data);
- [DllImport(WinDsmDll, EntryPoint = EntryName)]
- public static extern ReturnCode Dsm32(
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin32(
[In, Out]TW_IDENTITY origin,
[In, Out]TW_IDENTITY destination,
DataGroups dg,
@@ -144,8 +144,8 @@ namespace NTwain.Triplets
Message msg,
ref TW_SETUPFILEXFER data);
- [DllImport(WinDsmDll, EntryPoint = EntryName)]
- public static extern ReturnCode Dsm32(
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin32(
[In, Out]TW_IDENTITY origin,
[In, Out]TW_IDENTITY destination,
DataGroups dg,
@@ -153,8 +153,8 @@ namespace NTwain.Triplets
Message msg,
ref TW_SETUPMEMXFER data);
- [DllImport(WinDsmDll, EntryPoint = EntryName)]
- public static extern ReturnCode Dsm32(
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin32(
[In, Out]TW_IDENTITY origin,
[In, Out]TW_IDENTITY destination,
DataGroups dg,
@@ -162,8 +162,8 @@ namespace NTwain.Triplets
Message msg,
ref TW_STATUSUTF8 data);
- [DllImport(WinDsmDll, EntryPoint = EntryName)]
- public static extern ReturnCode Dsm32(
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin32(
[In, Out]TW_IDENTITY origin,
[In, Out]TW_IDENTITY destination,
DataGroups dg,
@@ -171,8 +171,8 @@ namespace NTwain.Triplets
Message msg,
ref TW_USERINTERFACE data);
- [DllImport(WinDsmDll, EntryPoint = EntryName)]
- public static extern ReturnCode Dsm32(
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin32(
[In, Out]TW_IDENTITY origin,
[In, Out]TW_IDENTITY destination,
DataGroups dg,
@@ -180,8 +180,8 @@ namespace NTwain.Triplets
Message msg,
ref TW_CIECOLOR data);
- [DllImport(WinDsmDll, EntryPoint = EntryName)]
- public static extern ReturnCode Dsm32(
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin32(
[In, Out]TW_IDENTITY origin,
[In, Out]TW_IDENTITY destination,
DataGroups dg,
@@ -189,8 +189,8 @@ namespace NTwain.Triplets
Message msg,
ref TW_EXTIMAGEINFO data);
- [DllImport(WinDsmDll, EntryPoint = EntryName)]
- public static extern ReturnCode Dsm32(
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin32(
[In, Out]TW_IDENTITY origin,
[In, Out]TW_IDENTITY destination,
DataGroups dg,
@@ -199,7 +199,7 @@ namespace NTwain.Triplets
ref TW_FILTER data);
//[DllImport(DSM.WinDsmDll, EntryPoint = DSM.EntryName)]
- //public static extern ReturnCode Dsm32(
+ //public static extern ReturnCode DsmWin32(
// [In, Out]TW_IDENTITY origin,
// [In, Out]TW_IDENTITY destination,
// DataGroups dg,
@@ -207,8 +207,8 @@ namespace NTwain.Triplets
// Message msg,
// ref TWGrayResponse data);
- [DllImport(WinDsmDll, EntryPoint = EntryName)]
- public static extern ReturnCode Dsm32(
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin32(
[In, Out]TW_IDENTITY origin,
[In, Out]TW_IDENTITY destination,
DataGroups dg,
@@ -216,8 +216,8 @@ namespace NTwain.Triplets
Message msg,
ref TW_IMAGEINFO data);
- [DllImport(WinDsmDll, EntryPoint = EntryName)]
- public static extern ReturnCode Dsm32(
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin32(
[In, Out]TW_IDENTITY origin,
[In, Out]TW_IDENTITY destination,
DataGroups dg,
@@ -225,8 +225,8 @@ namespace NTwain.Triplets
Message msg,
ref TW_IMAGELAYOUT data);
- [DllImport(WinDsmDll, EntryPoint = EntryName)]
- public static extern ReturnCode Dsm32(
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin32(
[In, Out]TW_IDENTITY origin,
[In, Out]TW_IDENTITY destination,
DataGroups dg,
@@ -234,8 +234,8 @@ namespace NTwain.Triplets
Message msg,
ref TW_IMAGEMEMXFER data);
- [DllImport(WinDsmDll, EntryPoint = EntryName)]
- public static extern ReturnCode Dsm32(
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin32(
[In, Out]TW_IDENTITY origin,
[In, Out]TW_IDENTITY destination,
DataGroups dg,
@@ -243,8 +243,8 @@ namespace NTwain.Triplets
Message msg,
ref TW_JPEGCOMPRESSION data);
- [DllImport(WinDsmDll, EntryPoint = EntryName)]
- public static extern ReturnCode Dsm32(
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin32(
[In, Out]TW_IDENTITY origin,
[In, Out]TW_IDENTITY destination,
DataGroups dg,
@@ -253,7 +253,7 @@ namespace NTwain.Triplets
ref TW_PALETTE8 data);
//[DllImport(DSM.WinDsmDll, EntryPoint = DSM.EntryName)]
- //public static extern ReturnCode Dsm32(
+ //public static extern ReturnCode DsmWin32(
// [In, Out]TW_IDENTITY origin,
// [In, Out]TW_IDENTITY destination,
// DataGroups dg,
@@ -261,8 +261,8 @@ namespace NTwain.Triplets
// Message msg,
// ref TWRgbResponse data);
- [DllImport(WinDsmDll, EntryPoint = EntryName)]
- public static extern ReturnCode Dsm32(
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin32(
[In, Out]TW_IDENTITY origin,
[In, Out]TW_IDENTITY destination,
DataGroups dg,
@@ -270,8 +270,8 @@ namespace NTwain.Triplets
Message msg,
ref TW_STATUS data);
- [DllImport(WinDsmDll, EntryPoint = EntryName)]
- public static extern ReturnCode Dsm32(
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin32(
[In, Out]TW_IDENTITY origin,
[In, Out]TW_IDENTITY destination,
DataGroups dg,
diff --git a/src/NTwain/Triplets/NativeMethods.Win64.cs b/src/NTwain/Triplets/NativeMethods.Win64.cs
new file mode 100644
index 0000000..e3bd358
--- /dev/null
+++ b/src/NTwain/Triplets/NativeMethods.Win64.cs
@@ -0,0 +1,283 @@
+using NTwain.Data;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Runtime.InteropServices;
+using System.Text;
+
+namespace NTwain.Triplets
+{
+ static partial class NativeMethods
+ {
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref IntPtr data);
+
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref DataGroups data);
+
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_AUDIOINFO data);
+
+ //[DllImport(DSM.WinDsmDll, EntryPoint = DSM.EntryName)]
+ //public static extern ReturnCode DsmWin64(
+ // [In, Out]TW_IDENTITY origin,
+ // [In, Out]TW_IDENTITY destination,
+ // DataGroups dg,
+ // DataArgumentType dat,
+ // Message msg,
+ // ref TWCapability data);
+
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_CUSTOMDSDATA data);
+
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_DEVICEEVENT data);
+
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_CALLBACK data);
+
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_CALLBACK2 data);
+
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin64(
+ [In, Out]TW_IDENTITY origin,
+ IntPtr zero,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ [In, Out]TW_ENTRYPOINT data);
+
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_EVENT data);
+
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_FILESYSTEM data);
+
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin64(
+ [In, Out]TW_IDENTITY origin,
+ IntPtr zero,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ [In, Out]TW_IDENTITY data);
+
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_PASSTHRU data);
+
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_PENDINGXFERS data);
+
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_SETUPFILEXFER data);
+
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_SETUPMEMXFER data);
+
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_STATUSUTF8 data);
+
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_USERINTERFACE data);
+
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_CIECOLOR data);
+
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_EXTIMAGEINFO data);
+
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_FILTER data);
+
+ //[DllImport(DSM.WinDsmDll, EntryPoint = DSM.EntryName)]
+ //public static extern ReturnCode DsmWin64(
+ // [In, Out]TW_IDENTITY origin,
+ // [In, Out]TW_IDENTITY destination,
+ // DataGroups dg,
+ // DataArgumentType dat,
+ // Message msg,
+ // ref TWGrayResponse data);
+
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_IMAGEINFO data);
+
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_IMAGELAYOUT data);
+
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_IMAGEMEMXFER data);
+
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_JPEGCOMPRESSION data);
+
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_PALETTE8 data);
+
+ //[DllImport(DSM.WinDsmDll, EntryPoint = DSM.EntryName)]
+ //public static extern ReturnCode DsmWin64(
+ // [In, Out]TW_IDENTITY origin,
+ // [In, Out]TW_IDENTITY destination,
+ // DataGroups dg,
+ // DataArgumentType dat,
+ // Message msg,
+ // ref TWRgbResponse data);
+
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_STATUS data);
+
+ [DllImport(WinDll, EntryPoint = EntryName)]
+ public static extern ReturnCode DsmWin64(
+ [In, Out]TW_IDENTITY origin,
+ [In, Out]TW_IDENTITY destination,
+ DataGroups dg,
+ DataArgumentType dat,
+ Message msg,
+ ref TW_MEMORY data);
+
+ }
+}
diff --git a/src/NTwain/Triplets/NativeMethods.cs b/src/NTwain/Triplets/NativeMethods.cs
index b137f05..863b004 100644
--- a/src/NTwain/Triplets/NativeMethods.cs
+++ b/src/NTwain/Triplets/NativeMethods.cs
@@ -10,9 +10,10 @@ namespace NTwain.Triplets
{
const string EntryName = "DSM_Entry";
- const string WinDsmDll = "twaindsm.dll";
- const string LinuxDsmDll = "/usr/local/lib/libtwaindsm.so";
- const string MacDsmDll = "/Library/Frameworks/TWAINDSM.framework/TWAINDSM";
+ const string WinDll = "twaindsm.dll";
+ const string LinuxDll = "/usr/local/lib/libtwaindsm.so";
+ const string Mac32Dll = "/System/Library/Frameworks/TWAIN.framework/TWAIN";
+ const string Mac64Dll = "/Library/Frameworks/TWAINDSM.framework/TWAINDSM";
}
}
diff --git a/src/NTwain/TwainConfig.cs b/src/NTwain/TwainConfig.cs
index 5ca21b6..9be6b0c 100644
--- a/src/NTwain/TwainConfig.cs
+++ b/src/NTwain/TwainConfig.cs
@@ -17,9 +17,9 @@ namespace NTwain
internal TwainConfig() { }
///
- /// Gets whether the app is running in 64bit.
+ /// Gets whether the app is running in 32bit.
///
- public bool Is64Bit { get; internal set; }
+ public bool Is32Bit { get; internal set; }
///
/// Gets the platform the app is running on.
diff --git a/src/NTwain/TwainConfigBuilder.cs b/src/NTwain/TwainConfigBuilder.cs
index d13d318..d8b3a76 100644
--- a/src/NTwain/TwainConfigBuilder.cs
+++ b/src/NTwain/TwainConfigBuilder.cs
@@ -17,7 +17,7 @@ namespace NTwain
private string _companyName;
private Language _lang;
private DataGroups _dg = DataGroups.Image;
- private bool _64bit;
+ private bool _32bit;
private PlatformID _platform;
private Country _country;
@@ -26,7 +26,7 @@ namespace NTwain
///
public TwainConfigBuilder()
{
- _64bit = IntPtr.Size == 8;
+ _32bit = IntPtr.Size == 4;
_platform = Environment.OSVersion.Platform;
}
@@ -108,7 +108,7 @@ namespace NTwain
var config = new TwainConfig
{
Platform = _platform,
- Is64Bit = _64bit
+ Is32Bit = _32bit
};
// todo: change id based on platform
diff --git a/src/NTwain/TwainSession.cs b/src/NTwain/TwainSession.cs
index 17cf36d..65fc078 100644
--- a/src/NTwain/TwainSession.cs
+++ b/src/NTwain/TwainSession.cs
@@ -74,7 +74,7 @@ namespace NTwain
if (rc != ReturnCode.Success) return rc;
break;
case TwainState.SourceOpened:
- rc = DGControl.Identity.CloseDS(CurrentSource.Identity);
+ rc = DGControl.Identity.CloseDS(CurrentSource.Identity32);
if (rc != ReturnCode.Success) return rc;
break;
}
@@ -89,7 +89,7 @@ namespace NTwain
public TW_STATUS GetStatus()
{
TW_STATUS stat = default;
- var rc = DGControl.Status.GetManagerStatus(ref stat);
+ var rc = DGControl.Status.Get(ref stat, null);
return stat;
}
@@ -97,10 +97,11 @@ namespace NTwain
/// Gets the translated string for a .
///
///
+ ///
///
- public string GetLocalizedStatus(ref TW_STATUS status)
+ public string GetLocalizedStatus(ref TW_STATUS status, DataSource source = null)
{
- var rc = DGControl.StatusUtf8.Get(ref status, out string message);
+ var rc = DGControl.StatusUtf8.Get(ref status, source, out string message);
return message;
}