IDevicePacketStream.Read メソッド
更新 : 2007 年 11 月
デスクトップ コンピュータ上の DevicePacketStream から送信されたパケットを読み取ります。
名前空間 : Microsoft.SmartDevice.DeviceAgentTransport
アセンブリ : Microsoft.SmartDevice.DeviceAgentTransport (Microsoft.SmartDevice.DeviceAgentTransport.dll 内)
構文
'宣言
Sub Read ( _
<OutAttribute> ByRef out_pPacket As IPacket _
)
'使用
Dim instance As IDevicePacketStream
Dim out_pPacket As IPacket
instance.Read(out_pPacket)
void Read(
out IPacket out_pPacket
)
void Read(
[OutAttribute] IPacket^% out_pPacket
)
function Read(
out_pPacket : IPacket
)
パラメータ
out_pPacket
型 : Microsoft.SmartDevice.DeviceAgentTransport.IPacket%[出力] パケットに読み込まれたデータ。
例外
例外 | 条件 |
---|---|
COMException | HRESULT 情報を提供します。 E_INVALIDARG - 入力引数が無効です (パケットへの書き込みを実行できません)。 E_PENDING - 指定されたタイムアウト期限内に読み取りを完了できませんでした。ユーザーは、同じタイムアウト値または異なるタイムアウト値を指定して再試行できます。 E_FAIL - その他のエラー。 |
例
' 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
// 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);
}
アクセス許可
- 直前の呼び出し元に対する完全な信頼。このメンバは、部分的に信頼されているコードから使用することはできません。詳細については、「部分信頼コードからのライブラリの使用」を参照してください。