IDevicePacketStream::Read
更新:2007 年 11 月
讀取桌上型電腦上的 DevicePacketStream 所傳送的封包。
HRESULT Read([retval][out] IPacket **out_ppPacket)
參數
- out_ppPacket
資料會讀入封包。
傳回值
HRESULT 值,表示方法呼叫的結果。
E_INVALIDARG | 輸入引數無效 (無法寫入至封包)。
E_PENDING | 無法在指定的逾時時間內完成讀取。使用者能以相同或不同的逾時值 (Time-Out Value) 再次嘗試。
E_FAIL | 任何其他失敗。
範例
在這個範例中,封包資料流會在連接的情況下,從桌面上的 RemoteAgent 物件讀取資料。如需完整的範例,請參閱IDeviceAgentTransport。
// Check for a packet while communication stream is connected.
f2(&pPacket);
VARIANT_BOOL connected;
pStream->IsConnected(&connected);
while(connected)
{
pStream->IsConnected(&connected);
VARIANT_BOOL available;
// If a packet is found, display the string.
pStream->IsPacketAvailable(&available);
if(available)
{
pStream->Read(&pPacket);
VARIANT_BOOL endofpacket;
pPacket->IsEndOfPacket(&endofpacket);
while (!endofpacket)
{
pPacket->IsEndOfPacket(&endofpacket);
DataTypeEnum datatype;
pPacket->ReadDataType(&datatype);
switch (datatype)
{
case DT_BYTE:
BYTE byteValue;
pPacket->ReadByte(&byteValue);
break;
case DT_INT32:
INT32 intValue;
pPacket->ReadInt32(&intValue);
break;
case DT_WIDECHAR:
wchar_t charValue;
pPacket->ReadChar(&charValue);
break;
case DT_BOOL:
VARIANT_BOOL boolValue;
pPacket->ReadBool(&boolValue);
break;
case DT_BYTEARRAY:
BYTE * buffer[100];
ULONG length;
pPacket->ReadBytes(buffer,&length);
break;
case DT_STRING:
LPWSTR string;
pPacket->ReadString(&string);
MessageBox(NULL, string,string,0);
break;
default:
break;
}
};
}
};
Managed 對應項
需求
DeviceAgentTransport.h