3.4.4.7 A Local Client Application Initiates a Server Session
The local client application provides:
The name of the server.
Credentials to be used to connect to the server.
The client MUST first connect to the server as specified in section 3.2.4.2.1.
Next, the client MUST negotiate the protocol by any of the methods specified in [MS-SMB2] section 3.2.4.2.2, initially offering the highest protocol supported by the local client implementation.
If the negotiated protocol dialect is covered in [MS-CIFS] or in [MS-SMB], the client MUST:
Authenticate the user by invoking the processing logic specified in section 3.2.4.2.4, providing the credentials supplied by the caller; next, the client MUST connect to the IPC$ share by invoking the processing logic specified in section 3.2.4.2.5
Any error incurred during the processing of the preceding steps MUST be returned to the caller.
Upon successful completion, a new ClientGenericContext structure MUST be initialized as follows and returned to the caller.
The ClientGenericContext.ProtocolDialect field MUST be set to an implementation-specific identifier indicating the protocol (either that specified by [MS-CIFS] or by [MS-SMB2]).
The ClientGenericContext.ProtocolSpecificOpen field MUST be set to the protocol-specific Client.Session obtained by the processing logic specified in section 3.2.4.2.4.