用winpcap时的一个郁闷有关问题

用winpcap时的一个郁闷问题
第一次用winpcap开发,遇到一个郁闷的问题。我包含了packet32.h,但编译的时候出现下面的错误,但是搞不懂为什么?请大家指教。

e:\学习\源码\c++\wpdpack\include\packet32.h(229)   :   error   C2079:   'IPAddress '   uses   undefined   struct   'sockaddr_storage '
e:\学习\源码\c++\wpdpack\include\packet32.h(230)   :   error   C2079:   'SubnetMask '   uses   undefined   struct   'sockaddr_storage '
e:\学习\源码\c++\wpdpack\include\packet32.h(231)   :   error   C2079:   'Broadcast '   uses   undefined   struct   'sockaddr_storage '

------解决方案--------------------
typedef struct sockaddr_storage { short ss_family; char __ss_pad1[_SS_PAD1SIZE]; __int64 __ss_align; char __ss_pad2[_SS_PAD2SIZE];
} SOCKADDR_STORAGE, *PSOCKADDR_STORAGE;

这个结构是在Winsock2.h中定义的,但是并非每一个版本的Winsock2.h都包含这个结构的定义
我安装了vs.net 2005,在D:\Program Files\Microsoft Visual Studio 8\VC\PlatformSDK\Include中找到的Winsock2.h包含,而在.Net Framework 3.0的
D:\Program Files\Microsoft SDKs\Windows\v6.0\Include路径下的Winsock2.h中就不包含。所以要注意你所使用的SDK包含的Winsock2.h的版本。如果没有,自行添加以上的定义就好了
------解决方案--------------------
* Desired design of maximum size and alignment.
* These are implementation specific.
*/
#define _SS_MAXSIZE 128 // Maximum size.
#define _SS_ALIGNSIZE (sizeof(__int64)) // Desired alignment.

/*
* Definitions used for sockaddr_storage structure paddings design.
*/
#define _SS_PAD1SIZE (_SS_ALIGNSIZE - sizeof (short))
#define _SS_PAD2SIZE (_SS_MAXSIZE - (sizeof (short) + _SS_PAD1SIZE \
+ _SS_ALIGNSIZE))

struct sockaddr_storage {
short ss_family; // Address family.
char __ss_pad1[_SS_PAD1SIZE]; // 6 byte pad, this is to make
// implementation specific pad up to
// alignment field that follows explicit
// in the data structure.
__int64 __ss_align; // Field to force desired structure.
char __ss_pad2[_SS_PAD2SIZE]; // 112 byte pad to achieve desired size;
// _SS_MAXSIZE value minus size of
// ss_family, __ss_pad1, and
// __ss_align fields is 112.
};

这个是完整的定义