diff --git a/src/NTwain/Triplets/Control/SetupMemXfer.cs b/src/NTwain/Triplets/Control/SetupMemXfer.cs new file mode 100644 index 0000000..d337288 --- /dev/null +++ b/src/NTwain/Triplets/Control/SetupMemXfer.cs @@ -0,0 +1,47 @@ +using NTwain.Data; +using NTwain.Internals; + +namespace NTwain.Triplets.Control +{ + /// + /// Represents . + /// + public sealed class SetupMemXfer : BaseTriplet + { + internal SetupMemXfer(TwainSession session) : base(session) { } + + /// + /// Returns the Source’s preferred, minimum, and maximum allocation sizes for transfer memory + /// buffers. + /// + /// The setup mem xfer. + /// + public ReturnCode Get(ref TW_SETUPMEMXFER setupMemXfer) + { + if (Is32Bit) + { + if (IsWin) + return NativeMethods.DsmWin32(Session.Config.App32, Session.CurrentSource.Identity32, + DataGroups.Control, DataArgumentType.SetupMemXfer, Message.Get, ref setupMemXfer); + if (IsLinux) + return NativeMethods.DsmLinux32(Session.Config.App32, Session.CurrentSource.Identity32, + DataGroups.Control, DataArgumentType.SetupMemXfer, Message.Get, ref setupMemXfer); + if (IsMac) + return NativeMethods.DsmMac32(Session.Config.App32, Session.CurrentSource.Identity32, + DataGroups.Control, DataArgumentType.SetupMemXfer, Message.Get, ref setupMemXfer); + } + + if (IsWin) + return NativeMethods.DsmWin64(Session.Config.App32, Session.CurrentSource.Identity32, + DataGroups.Control, DataArgumentType.SetupMemXfer, Message.Get, ref setupMemXfer); + if (IsLinux) + return NativeMethods.DsmLinux64(Session.Config.App32, Session.CurrentSource.Identity32, + DataGroups.Control, DataArgumentType.SetupMemXfer, Message.Get, ref setupMemXfer); + if (IsMac) + return NativeMethods.DsmMac64(Session.Config.App32, Session.CurrentSource.Identity32, + DataGroups.Control, DataArgumentType.SetupMemXfer, Message.Get, ref setupMemXfer); + + return ReturnCode.Failure; + } + } +} \ No newline at end of file diff --git a/src/NTwain/Triplets/DGControl.cs b/src/NTwain/Triplets/DGControl.cs index 0e6ef0c..42da90d 100644 --- a/src/NTwain/Triplets/DGControl.cs +++ b/src/NTwain/Triplets/DGControl.cs @@ -57,6 +57,12 @@ namespace NTwain.Triplets /// public PassThru PassThru => _passThru ?? (_passThru = new PassThru(Session)); + SetupMemXfer _memXfer; + /// + /// Gets the operations defined for DAT_SETUPMEMXFER. + /// + public SetupMemXfer SetupMemXfer => _memXfer ?? (_memXfer = new SetupMemXfer(Session)); + XferGroup _xferGroup; /// /// Gets the operations defined for DAT_XFERGROUP.