From 6087438b5ddfa4d32168b896188713d31b06c31c Mon Sep 17 00:00:00 2001 From: soukoku Date: Fri, 20 Jun 2014 06:34:08 -0400 Subject: [PATCH] May fix issue #10 --- NTwain/Internals/TransferLogic.cs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/NTwain/Internals/TransferLogic.cs b/NTwain/Internals/TransferLogic.cs index 8bb93a4..9fb6798 100644 --- a/NTwain/Internals/TransferLogic.cs +++ b/NTwain/Internals/TransferLogic.cs @@ -70,7 +70,15 @@ namespace NTwain.Internals if (xferGroup == DataGroups.None || (xferGroup & DataGroups.Image) == DataGroups.Image) { - var mech = session.CurrentSource.CapGetCurrent(CapabilityId.ICapXferMech).ConvertToEnum(); + // default to memory + var mech = XferMech.Memory; + + object mechRaw = session.CurrentSource.CapGetCurrent(CapabilityId.ICapXferMech); + if (mechRaw != null) + { + mech = mechRaw.ConvertToEnum(); + } + switch (mech) { case XferMech.Memory: @@ -108,7 +116,9 @@ namespace NTwain.Internals #endregion - } while (rc == ReturnCode.Success && pending.Count != 0); + // some poorly written scanner drivers return failure on EndXfer so only check for pending count now + //} while (rc == ReturnCode.Success && pending.Count != 0); + } while (pending.Count != 0); session.ChangeState(5, true); session.DisableSource();