diff --git a/src/NTwain/Triplets/Audio/AudioFileXfer.cs b/src/NTwain/Triplets/Audio/AudioFileXfer.cs
new file mode 100644
index 0000000..4893568
--- /dev/null
+++ b/src/NTwain/Triplets/Audio/AudioFileXfer.cs
@@ -0,0 +1,40 @@
+using NTwain.Data;
+using NTwain.Internals;
+using System;
+
+namespace NTwain.Triplets.Audio
+{
+ sealed class AudioFileXfer : BaseTriplet
+ {
+ internal AudioFileXfer(TwainSession session) : base(session) { }
+
+ public ReturnCode Get()
+ {
+ IntPtr zero = IntPtr.Zero;
+ if (Is32Bit)
+ {
+ if (IsWin)
+ return NativeMethods.DsmWin32(Session.Config.App32, Session.CurrentSource.Identity32,
+ DataGroups.Audio, DataArgumentType.AudioFileXfer, Message.Get, ref zero);
+ if (IsLinux)
+ return NativeMethods.DsmLinux32(Session.Config.App32, Session.CurrentSource.Identity32,
+ DataGroups.Audio, DataArgumentType.AudioFileXfer, Message.Get, ref zero);
+ if (IsMac)
+ return NativeMethods.DsmMac32(Session.Config.App32, Session.CurrentSource.Identity32,
+ DataGroups.Audio, DataArgumentType.AudioFileXfer, Message.Get, ref zero);
+ }
+
+ if (IsWin)
+ return NativeMethods.DsmWin64(Session.Config.App32, Session.CurrentSource.Identity32,
+ DataGroups.Audio, DataArgumentType.AudioFileXfer, Message.Get, ref zero);
+ if (IsLinux)
+ return NativeMethods.DsmLinux64(Session.Config.App32, Session.CurrentSource.Identity32,
+ DataGroups.Audio, DataArgumentType.AudioFileXfer, Message.Get, ref zero);
+ if (IsMac)
+ return NativeMethods.DsmMac64(Session.Config.App32, Session.CurrentSource.Identity32,
+ DataGroups.Audio, DataArgumentType.AudioFileXfer, Message.Get, ref zero);
+
+ return ReturnCode.Failure;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/NTwain/Triplets/Audio/AudioNativeXfer.cs b/src/NTwain/Triplets/Audio/AudioNativeXfer.cs
new file mode 100644
index 0000000..1c5e2ea
--- /dev/null
+++ b/src/NTwain/Triplets/Audio/AudioNativeXfer.cs
@@ -0,0 +1,39 @@
+using NTwain.Data;
+using NTwain.Internals;
+using System;
+
+namespace NTwain.Triplets.Audio
+{
+ sealed class AudioNativeXfer : BaseTriplet
+ {
+ internal AudioNativeXfer(TwainSession session) : base(session) { }
+
+ public ReturnCode Get(ref IntPtr handle)
+ {
+ if (Is32Bit)
+ {
+ if (IsWin)
+ return NativeMethods.DsmWin32(Session.Config.App32, Session.CurrentSource.Identity32,
+ DataGroups.Audio, DataArgumentType.AudioNativeXfer, Message.Get, ref handle);
+ if (IsLinux)
+ return NativeMethods.DsmLinux32(Session.Config.App32, Session.CurrentSource.Identity32,
+ DataGroups.Audio, DataArgumentType.AudioNativeXfer, Message.Get, ref handle);
+ if (IsMac)
+ return NativeMethods.DsmMac32(Session.Config.App32, Session.CurrentSource.Identity32,
+ DataGroups.Audio, DataArgumentType.AudioNativeXfer, Message.Get, ref handle);
+ }
+
+ if (IsWin)
+ return NativeMethods.DsmWin64(Session.Config.App32, Session.CurrentSource.Identity32,
+ DataGroups.Audio, DataArgumentType.AudioNativeXfer, Message.Get, ref handle);
+ if (IsLinux)
+ return NativeMethods.DsmLinux64(Session.Config.App32, Session.CurrentSource.Identity32,
+ DataGroups.Audio, DataArgumentType.AudioNativeXfer, Message.Get, ref handle);
+ if (IsMac)
+ return NativeMethods.DsmMac64(Session.Config.App32, Session.CurrentSource.Identity32,
+ DataGroups.Audio, DataArgumentType.AudioNativeXfer, Message.Get, ref handle);
+
+ return ReturnCode.Failure;
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/NTwain/Triplets/DGAudio.cs b/src/NTwain/Triplets/DGAudio.cs
index 9266c3f..b5be214 100644
--- a/src/NTwain/Triplets/DGAudio.cs
+++ b/src/NTwain/Triplets/DGAudio.cs
@@ -10,11 +10,17 @@ namespace NTwain.Triplets
///
/// Represents .
///
- public partial class DGAudio : BaseTriplet
+ partial class DGAudio : BaseTriplet
{
internal DGAudio(TwainSession session) : base(session) { }
-
+
+ AudioFileXfer _fileXfer;
+ internal AudioFileXfer AudioFileXfer => _fileXfer ?? (_fileXfer = new AudioFileXfer(Session));
+
AudioInfo _info;
internal AudioInfo AudioInfo => _info ?? (_info = new AudioInfo(Session));
+
+ AudioNativeXfer _natXfer;
+ internal AudioNativeXfer AudioNativeXfer => _natXfer ?? (_natXfer = new AudioNativeXfer(Session));
}
}
diff --git a/src/NTwain/TwainSession.MsgHandling.cs b/src/NTwain/TwainSession.MsgHandling.cs
index 80a8dbc..eb4610b 100644
--- a/src/NTwain/TwainSession.MsgHandling.cs
+++ b/src/NTwain/TwainSession.MsgHandling.cs
@@ -247,6 +247,7 @@ namespace NTwain
// some DS returns none but we will assume it's image
xferImage = xferGroup == DataGroups.None || (xferGroup & DataGroups.Image) == DataGroups.Image;
}
+ // TODO: restore this
if (xferImage)
{
//imgXferMech = CurrentSource.Capabilities.ICapXferMech.GetCurrent();
diff --git a/src/NTwain/TwainSession.Props.cs b/src/NTwain/TwainSession.Props.cs
index d2797aa..9b5d95d 100644
--- a/src/NTwain/TwainSession.Props.cs
+++ b/src/NTwain/TwainSession.Props.cs
@@ -40,7 +40,7 @@ namespace NTwain
///
/// Gets the triplet operations defined for audio data group.
///
- public DGAudio DGAudio => dgAudio ?? (dgAudio = new DGAudio(this));
+ DGAudio DGAudio => dgAudio ?? (dgAudio = new DGAudio(this));
/////
///// Gets/sets the direct triplet operation entry for custom values.