Как программно отправлять и получать СМС в Windows 10, используя MBN?
У нас есть программа, которая отправляет и получает SMS-сообщения через интерфейс MBN IMbnSms и модем 2G/3G/4G. Наш код работает в Windows 7 и Windows 8.x, но не работает в Windows 10. IMbnSms.GetSmsStatus() всегда возвращает ошибку 0x8000000A (E_PENDING), даже если модем находится в сети в течение 10 минут. IMbnSms.SmsSendPdu() получает E_MBN_FAILURE в событии OnSmsSendComplete.
Вот простой тестовый код для GetSmsStatus (), который воспроизводит эту проблему:
using MbnApi;
using System;
namespace GetSmsStatusTest
{
class Program
{
static void Main(string[] args)
{
GetSmsStatus(args[0]);
}
static void GetSmsStatus(string interfaceID)
{
try
{
MbnInterfaceManager mbnInfMgr = new MbnInterfaceManager();
IMbnInterfaceManager infManager = (IMbnInterfaceManager)mbnInfMgr;
//obtain the IMbnInterface passing interfaceID
IMbnInterface mbnInterface = infManager.GetInterface(interfaceID);
IMbnSms mbnSms = mbnInterface as IMbnSms;
if (mbnSms == null)
{
Console.WriteLine("Got no IMbnSms");
return;
}
MBN_SMS_STATUS_INFO mbnSmsStatusInfo;
mbnSms.GetSmsStatus(out mbnSmsStatusInfo);
Console.WriteLine("flag={0}, index={1}", mbnSmsStatusInfo.flag, mbnSmsStatusInfo.messageIndex);
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
}
}
Назовите его с GUID сетевого интерфейса, который вы можете получить с помощью "netsh mbn sho int".
1 ответ
Решение
Microsoft решила эту проблему с помощью пакета обновления Windows 10, который я получил 7-го числа. Я перепроверил это с несколькими карточками данных, теперь это работает.