UEFIʵս(10) Network (Èý)

2014-11-24 11:58:40 ¡¤ ×÷Õß: ¡¤ ä¯ÀÀ: 3
OTIFY)NopNoify , (VOID*)&RecvToken, &RecvToken.CompletionToken.Event);
RecvToken.CompletionToken.Status =EFI_ABORTED;
m_RecvData = new EFI_TCP4_RECEIVE_DATA[1];
if(EFI_STATUS(Stauts)) return Status;
// ½¨Á¢ Close Data
CloseToken.CompletionToken.Status = EFI_ABORTED;
Status = gBS->CreateEvent(EVT_NOTIFY_SIGNAL, TPL_CALLBACK, (EFI_EVENT_NOTIFY)NopNoify , (VOID*)&CloseToken, &CloseToken.CompletionToken.Event );
return Status;
}

// ¿Õº¯Êý

VOID NopNoify ( IN EFI_EVENT Event, IN VOID *Context )
{
}5¡£ ×îºóÒª¹Ø±ÕEFI_TCP4_PROTOCOL, ²¢½«m_SocketHandle Ïú»Ù¡£
__inline Socket::~Socket()
{
EFI_STATUS Status;
if(m_SocketHandle)
Status = m_pServiceBinding->DestroyChild ( m_pServiceBinding,
m_SocketHandle );
if(ConnectToken.CompletionToken.Event)
gBS->CloseEvent(ConnectToken.CompletionToken.Event);
if(SendToken.CompletionToken.Event)
gBS->CloseEvent(SendToken.CompletionToken.Event);
if(RecvToken.CompletionToken.Event)
gBS->CloseEvent(RecvToken.CompletionToken.Event);
if(SendToken.Packet.TxData){
delete SendToken.Packet.TxData;

SendToken.Packet.TxData = NULL;
}
if(RecvToken.Packet.RxData){
delete RecvToken.Packet.RxData;

RecvToken.Packet.RxData = NULL;
}
}
ÏÂÃæ²âÊÔÎÒÃǵÄSocketÀࣺ
EFI_STATUS
TestSocket(IN EFI_HANDLE ImageHandle)
{
EFI_STATUS Status = 0;
CHAR8 RequestData[]= "GET / HTTP/1.1\nHost:localhost\nAccept:* / * \nConnection:Keep-Alive\n\n";
CHAR8 *RecvBuffer = new CHAR8[1024+1];
Socket WebSocket(ImageHandle);
if( WebSocket.Ready() == TRUE){
WebSocket.Connect(192 | 168 << 8 |137 <<16 | 1 << 24, 80);
WebSocket.Send(RequestData, AsciiStrLen(RequestData)+2 );//! ±ØÐë +2
Status = WebSocket.Recv(RecvBuffer, 1024);
WebSocket.Close();
}
delete RecvBuffer;
return Status;
}