64 NDIS 驱动 获取并访问TCP头问题
if((Length - HeaderLength) < TCP_HEADER_LENGTH)
{
//
// if Buffer is NULL or Invalid Address, It can bring a bug check
// 0x1e.
//
NdisGetNextBuffer(Buffer, &Buffer);
if(Buffer == NULL) return STATUS_PASS;
NdisQueryBufferSafe(Buffer, &VirtualAddress, &Length, HighPagePriority);
if(VirtualAddress != NULL && Length >= TCP_HEADER_LENGTH)
{
pTcpHeader = (PTCP_HEADER)(VirtualAddress);
}
else
{
return STATUS_PASS;
}
}
else
{
pTcpHeader = (PTCP_HEADER)((DWORD)pIPHeader + HeaderLength);
}
访问时系统崩溃!
pTcpHeader->SourcePort ,pTcpHeader->DestinationPort
32位下没有问题?
if((Length - HeaderLength) < TCP_HEADER_LENGTH)
{
//
// if Buffer is NULL or Invalid Address, It can bring a bug check
// 0x1e.
//
NdisGetNextBuffer(Buffer, &Buffer);
if(Buffer == NULL) return STATUS_PASS;
NdisQueryBufferSafe(Buffer, &VirtualAddress, &Length, HighPagePriority);
if(VirtualAddress != NULL && Length >= TCP_HEADER_LENGTH)
{
pTcpHeader = (PTCP_HEADER)(VirtualAddress);
}
else
{
return STATUS_PASS;
}
}
else
{
pTcpHeader = (PTCP_HEADER)((DWORD)pIPHeader + HeaderLength);
}
访问时系统崩溃!
pTcpHeader->SourcePort ,pTcpHeader->DestinationPort
32位下没有问题?