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.