Copyright© 1999 by Anthony Jones and Jim Ohlund
A Division of Microsoft Corporation
One Microsoft Way
Redmond, Washington 98052-6399
Copyright © 1999 by Anthony Jones and Jim Ohlund
All rights reserved. No part of the contents of this book may be reproduced or transmitted in any form or by any means without the written permission of the publisher.
Library of Congress Cataloging-in-Publication Data
Jones, Anthony, 1973-
Network Programming for Microsoft Windows / Anthony Jones, Jim
1. Internet programming. 2. Microsoft Windows (Computer file)
I. Ohlund, Jim, 1966- . II. Title.
005.7 ' 1276--dc21 99-34581
Printed and bound in the United States of America.
1 2 3 4 5 6 7 8 9 QMQM 4 3 2 1 0 9
Distributed in Canada by Penguin Books Canada Limited.
A CIP catalogue record for this book is available from the British Library.
Microsoft Press books are available through booksellers and distributors worldwide. For further information about international editions, contact your local Microsoft Corporation office or contact Microsoft Press International directly at fax (425) 936-7329. Visit our Web site at mspress.microsoft.com.
Macintosh is a registered trademark of Apple Computer, Inc. Intel is a registered trademark of Intel Corporation. Microsoft, MS-DOS, Visual C++, Win32, Windows, and Windows NT are either registered trademarks or trademarks of Microsoft Corporation in the United States and/or other countries. Other product and company names mentioned herein may be the trademarks of their respective owners.
The example companies, organizations, products, people, and events depicted herein are fictitious. No association with any real company, organization, product, person, or event is intended or should be inferred.
Acquisitions Editor: Ben Ryan
Project Editor: Rebecca McKay
Technical Editor: Donnie Cameron
For my loving wife, Genevieve,
thanks for your patience and understanding.
We would like to thank the following individuals for their generous contributions to the making of this book. A very special thanks goes out to Wei Hua for developing all of the Visual Basic examples on our companion CD-ROM. Wei also helped us understand I/O completion ports and transport service providers in the Winsock 2 SPI. Thanks to Barry Butterklee for helping us understand I/O completion ports. Barry also reviewed the QOS chapter to ensure its accuracy. Amol Deshpande provided valuable information on IFS handles in Winsock 2 layered service providers. He also lent us his expert debugging skills on our LSP example. Frank Li provided the original RNR example that was the basis for Chapter 10. Frank also developed some of the IP Helper examples included on the CD-ROM. Arvind Murching and Anshul Dhir answered many questions concerning the ATM Winsock provider. Alex Choe (who understands practically every network protocol used today) helped us with the details of the IPX/SPX protocol for our Winsock address family chapter. Ken Evans helped us define and explain many of the IP Helper API data structures defined in Appendix B. Frank Kim and David Mowers helped us understand Windows NT security used in the Windows redirector, mailslots, and named pipe networking technologies. Matt Nibler verified the technical information about the Windows redirector described in Chapter 2. Gary Yukish helped us understand some of the capabilities of RAS. Sachin Kukreja answered many questions about QOS. And finally, Mazahir "Maaaazy" Poonawala provided us with a RAS example for our companion CD-ROM. Thanks also to the Microsoft Platform SDK documentation group for their generous participation and permission.
We also want to thank Rebecca McKay and Donnie Cameron from Microsoft Press for their efforts to ensure that this would be a great book. Rebecca's editing made the book easy to read and understand, while Donnie verified that the technical information was as accurate as possible.