Share via


Microsoft.SmartDevice.DeviceAgentTransport 名前空間

更新 : 2007 年 11 月

この名前空間には、スマート デバイス接続 API のデバイス側を構成する型が含まれます。この名前空間を参照して使用するマネージ スマート デバイス アプリケーションは、デバイス エージェント アプリケーションと呼ばれます。スマート デバイス接続 API を使用するデスクトップ アプリケーションでは、デバイス エージェントをデバイスに配置し、パケット データを交換することによってデバイス エージェントと通信できます。このライブラリを使用すると、デバイスの相互接続とトランスポート機構の詳細に関する処理はスマート デバイス接続 API に任せながら、プログラムによってデバイスとデスクトップの間のデータ交換を実行できます。

スマート デバイス プロジェクトで Microsoft.SmartDevice.DeviceAgentTransport を使用するには、次のタスクを実行します。

  • スマート デバイス プロジェクトで、Microsoft.Smartdevice.DeviceAgentTransport.dll アセンブリ (drive:\Program Files\Common Files\Microsoft Shared\CoreCon\1.0\Target\Microsoft.Smartdevice.DeviceAgentTransport.dll) への参照を追加します。

  • ネイティブ DeviceAgentTransport.dll ライブラリ (drive:\Program Files\Common Files\Microsoft Shared\CoreCon\1.0\Target\wce400\cpu\DeviceAgentTransport.dll) とマネージ Microsoft.Smartdevice.DeviceAgentTransport.dll アセンブリの両方をスマート デバイスに配置します。

詳細については、「スマート デバイス接続 API を使用したデバイスの制御」および「チュートリアル : デスクトップ アプリケーションとデバイス アプリケーションの間でデータを交換する」を参照してください。

メモ :

Visual C++ を使用してデバイス エージェントを作成するには、アンマネージ デバイス側スマート デバイス接続 API を使用します。

クラス

 

インターフェイス

 

列挙型

 

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
    }
}

参照

参照

その他の技術情報

スマート デバイス接続 API を使用したデバイスの制御

Smart Device Connectivity API Samples