Windows NT uses a dynamic SMB response timer algorithm. The time-out can be changed on a per-SMB basis. The redirector uses some intelligence to calculate a proper time-out. Using a new TDI API call, [TDIQueryConnectionInfo], the redirector can determine the bytes per second rate of the media. It also knows the size of the data being sent or received in the SMB. Using this information, it calculates how long the SMB response is expected to take. To this value, it adds SESSTIMEOUT, which defaults to 45 seconds.
[(SMB size + the size of data being sent OR the expected data to be
read) / bytes per second] + SESSTIMEOUT.
In Windows NT, SESSTIMEOUT can be thought of as a margin for error. If things go wrong or get delayed, the redirector waits an extra SESSTIMEOUT amount before giving up. In LAN Manager, it is the absolute maximum amount of time to wait.
Currently, there is no way to see the value of the SMB response timer at any one point in time.
SESSTIMEOUT can be set using REGEDT32. It is found under HKEY_LOCAL_MACHINE\SYSTEM\CURRENTCONTROLSET\SERVICES\ LANMANWORKSTATION\PARAMETERS\SESSTIMEOUT. It has a variable type of REG_DWORD. The value is stored in decimal seconds. The default is 45. Range 10 to 65535 seconds. SESSTIMEOUT is never automatically adjusted. If you manually adjust the value it will take effect immediately.
In addition, SESSTIMEOUT and the SMB Response timer are system-wide parameters. With LAN Manager, SESSTIMEOUT does not apply to TCP/IP. In Windows NT, it applies to all protocols including TCP/IP.
SESSTIMEOUT does not apply to certain types of SMBs. These mostly consist of Transaction commands, which have their own time-out variable in the SMB. SESSTIMEOUT mostly comes into effect on Read and Write operations.