SMB Protocol Dialect Constants

This is the list of CIFS protocol dialects, ordered from least functional (earliest) version to most functional (most recent) version:

Dialect Name
===========================
Comment
========================================
PC NETWORK PROGRAM 1.0 The original MSNET SMB protocol (otherwise known as the "core protocol")
PCLAN1.0 Some versions of the original MSNET defined this as an alternate to the core protocol name
MICROSOFT NETWORKS 1.03 This is used for the MS-NET 1.03 product. It defines Lock&Read,Write&Unlock, and a special version of raw read and raw write.
MICROSOFT NETWORKS 3.0 This is the DOS LANMAN 1.0 specific protocol. It is equivalent to the LANMAN 1.0 protocol, except the server is required to map errors from the OS/2 error to an appropriate DOS error.
LANMAN1.0 This is the first version of the full LANMAN 1.0 protocol
LM1.2X002 This is the first version of the full LANMAN 2.0 protocol
DOS LM1.2X002 This is the DOS equivalent of the LM1.2X002 protocol. It is identical to the LM1.2X002 protocol, but the server will perform error mapping to appropriate DOS errors.
DOS LANMAN2.1 DOS LANMAN2.1
LANMAN2.1 OS/2 LANMAN2.1
Windows for Workgroups 3.1a Windows for Workgroups Version 1.0
NT LM 0.12 The SMB protocol designed for NT networking. This has special SMBs which duplicate the NT semantics.

CIFS servers select the most recent version of the protocol known to both client and server. Any CIFS server which supports dialects newer than the original core dialect must support all the messages and semantics of the dialects between the core dialect and the newer one. This is to say that a server which supports the NT LM 0.12 dialect must also support all of the messages of the previous 10 dialects. It is the client's responsibility to ensure it only sends SMBs which are appropriate to the dialect negotiated. Clients must be prepared to receive an SMB response from an earlier protocol dialect -- even if the client used the most recent form of the request.