> > Windows SOCKET is a handler to *kernel* object and as such constitutes > > an *offset* in per-process handle table. As this table can accommodate > > not more than 2^24 entries, it's always *safe* to cast/truncate SOCKET > > to 32-bit value and back. Even on 64-bit Windows. > for reference, > http://msdn2.microsoft.com/en-us/library/ms724485(VS.85).aspx. a.
This says that there can be no more than 2^24 entries per process, but it doesn't say that the value of the handle cannot exceed 2^24. Windows could, for example, use the high bits to indicate what type of handle it is. (Or might in a future version of Windows, causing applications that truncate handles to suddenly find they're not as portable as expected.) For example, I don't see any reason an LSP couldn't use the high bits of a SOCKET handle to store some information which it strips off before it passes the SOCKET value to the underlying kernel code. Winsock explicitly supports user-level code between the Winsock functions and the kernel. Does Microsoft actually specify somewhere that the integer value of a handle cannot exceed 2^24? The citation presented doesn't say that. DS ______________________________________________________________________ OpenSSL Project http://www.openssl.org Development Mailing List openssl-dev@openssl.org Automated List Manager [EMAIL PROTECTED]