IDeviceAgentTransport.AcceptConnectionEx - метод
Обновлен: Ноябрь 2007
Принимает подключение, инициированное при вызове метода RemoteAgent.CreatePacketStream на настольном компьютере. Затем чтобы выполнить передачу данных, метод подготавливает аргумент потока для пакета устройства.
Пространство имен: Microsoft.SmartDevice.DeviceAgentTransport
Сборка: Microsoft.SmartDevice.DeviceAgentTransport (в Microsoft.SmartDevice.DeviceAgentTransport.dll)
Синтаксис
'Декларация
Sub AcceptConnectionEx ( _
in_szServiceId As String, _
<OutAttribute> ByRef out_pDevicePacketStream As IDevicePacketStream _
)
'Применение
Dim instance As IDeviceAgentTransport
Dim in_szServiceId As String
Dim out_pDevicePacketStream As IDevicePacketStream
instance.AcceptConnectionEx(in_szServiceId, _
out_pDevicePacketStream)
void AcceptConnectionEx(
string in_szServiceId,
out IDevicePacketStream out_pDevicePacketStream
)
void AcceptConnectionEx(
[InAttribute] String^ in_szServiceId,
[OutAttribute] IDevicePacketStream^% out_pDevicePacketStream
)
function AcceptConnectionEx(
in_szServiceId : String,
out_pDevicePacketStream : IDevicePacketStream
)
Параметры
- in_szServiceId
Тип: System.String
Идентификатор службы, по которому принимается подключение.
- out_pDevicePacketStream
Тип: Microsoft.SmartDevice.DeviceAgentTransport.IDevicePacketStream%
Ссылка на объект потока для пакета устройства, который выполняет передачу данных.
Исключения
Исключение | Условие |
---|---|
COMException | Информация HRESULT:
|
Заметки
Подключения могут приниматься только по идентификаторам служб, которые уже были зарегистрированы с помощью метода AcknowledgeLaunch.
Примеры
Imports System
Imports System.Collections.Generic
Imports System.Text
Imports Microsoft.SmartDevice.DeviceAgentTransport
Imports System.Windows.Forms
Class Program
<MTAThread()> _
Shared Sub Main(ByVal args() As String)
Dim serviceids(0 To 0) As String
serviceids(0) = "2FAD740C-B5D3-4ad0-BE23-5682503584BF"
' Get an instance of Device Agent Transport
Dim transport As IDeviceAgentTransport = _
DeviceAgentTransportFactory.GetAgentTransport()
' Register the callback object with the Device Agent Transport.
Dim shutdownCallback As New ShutdownCallback()
transport.RegisterShutdownCallback(shutdownCallback, shutdownCallback)
' Let the desktop application know that this device agent was deployed successfully
' and will handle the supplied list of service IDs.
transport.AcknowledgeLaunch(Convert.ToUInt32(serviceids.Length), serviceids)
' Open a communcation stream with desktop application on the service.
Dim packetStream As IDevicePacketStream
transport.AcceptConnectionEx(serviceids(0), packetStream)
Dim packet As IPacket
' Check for a packet while communication stream is connected.
While packetStream.IsConnected()
' If a packet is found, display the string and integer data.
If packetStream.IsPacketAvailable() Then
packetStream.Read(packet)
Dim sb As New StringBuilder()
While Not packet.IsEndOfPacket()
Select Case packet.ReadDataType()
Case DataType.BoolType
Dim boolValue As Boolean = packet.ReadBool()
Case DataType.ByteArrayType
' Read bytes and convert IntPtr to byte[]
Dim ptr As IntPtr
Dim size As System.UInt32 = 0
packet.ReadBytes(ptr, size)
Dim buffer As Byte() = InteropUtils.ConvertIntPtrToByteArray(ptr, _
Convert.ToInt32(size))
Case DataType.ByteType
Dim byteValue As Byte = packet.ReadByte()
Case DataType.CharType
Dim charValue As Char = packet.ReadChar()
Case DataType.Int32Type
sb.Append("Int32Type: " + packet.ReadInt32().ToString() + _
vbCr + vbLf)
Case DataType.StringType
sb.Append("String: " + packet.ReadString() + vbCr + vbLf)
Case Else
End Select
End While
MessageBox.Show(sb.ToString())
Exit While
End If
System.Threading.Thread.Sleep(1000)
End While
packet = PacketFactory.GetNewPacket()
' Write the version of .NET Compact Framework into the packet.
packet.WriteString("Hello Desktop Computer")
packet.WriteInt32(Environment.Version.Major)
packet.WriteInt32(Environment.Version.Minor)
packet.WriteInt32(Environment.Version.Build)
packet.WriteInt32(Environment.Version.Revision)
' Pass the packet to desktop application.
packetStream.Write(packet)
End Sub 'Main
End Class 'Program
' Define your own shutdown implementation
Class ShutdownCallback
Implements IAgentTransportShutdownCallback
Sub Shutdown(ByVal in_pUnknown As Object) _
Implements IAgentTransportShutdownCallback.Shutdown
' Insert cleanup code here
End Sub 'Shutdown
End Class 'ShutdownCallback
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.SmartDevice.DeviceAgentTransport;
using System.Windows.Forms;
class Program
{
[MTAThread]
static void Main(string[] args)
{
string[] serviceids = { "2FAD740C-B5D3-4ad0-BE23-5682503584BF" };
// Get an instance of Device Agent Transport
IDeviceAgentTransport transport = DeviceAgentTransportFactory.GetAgentTransport();
// Register the callback object with the Device Agent Transport.
ShutdownCallback shutdownCallback = new ShutdownCallback();
transport.RegisterShutdownCallback(shutdownCallback, shutdownCallback);
// Let the desktop application know that this device agent was deployed successfully
// and will handle the supplied list of service IDs.
transport.AcknowledgeLaunch(Convert.ToUInt32(serviceids.Length), serviceids);
// Open a communcation stream with desktop application on the service.
IDevicePacketStream packetStream;
transport.AcceptConnectionEx(serviceids[0], out packetStream);
IPacket packet;
// Check for a packet while communication stream is connected.
while (packetStream.IsConnected())
{
// If a packet is found, display the string and integer data.
if (packetStream.IsPacketAvailable())
{
packetStream.Read(out packet);
StringBuilder sb = new StringBuilder();
while (!packet.IsEndOfPacket())
{
switch (packet.ReadDataType())
{
case DataType.BoolType:
bool boolValue = packet.ReadBool();
break;
case DataType.ByteArrayType:
// Read bytes and convert IntPtr to byte[]
IntPtr ptr;
uint size = 0;
packet.ReadBytes(out ptr, out size);
byte[] buffer = InteropUtils.ConvertIntPtrToByteArray(ptr,
Convert.ToInt32(size));
break;
case DataType.ByteType:
byte byteValue = packet.ReadByte();
break;
case DataType.CharType:
char charValue = packet.ReadChar();
break;
case DataType.Int32Type:
sb.Append("Int32Type: " + packet.ReadInt32().ToString() + "\r\n");
break;
case DataType.StringType:
sb.Append("String: " + packet.ReadString() + "\r\n");
break;
default:
break;
}
}
MessageBox.Show(sb.ToString());
break;
}
System.Threading.Thread.Sleep(1000);
}
packet = PacketFactory.GetNewPacket();
// Write the version of .NET Compact Framework into the packet.
packet.WriteString("Hello Desktop Computer");
packet.WriteInt32(Environment.Version.Major);
packet.WriteInt32(Environment.Version.Minor);
packet.WriteInt32(Environment.Version.Build);
packet.WriteInt32(Environment.Version.Revision);
// Pass the packet to desktop application.
packetStream.Write(packet);
}
}
// Define your own shutdown implementation
class ShutdownCallback : IAgentTransportShutdownCallback
{
public void Shutdown(object in_pUnknown)
{
// Insert cleanup code here
}
}
Разрешения
- Полное доверие для непосредственно вызывающего метода. Этот член не может быть использован частично доверенным кодом. Дополнительные сведения см. в разделе Использование библиотек из не вполне надежного кода.
См. также
Ссылки
IDeviceAgentTransport Интерфейс
Microsoft.SmartDevice.DeviceAgentTransport - пространство имен