如何重用现有的CIFS会话或以编程方式明确终止(W2K8到Netapp)?

时间:2011-02-01 23:56:44

标签: windows session smb cifs netapp

我有一个在Windows上运行的程序,它通过CIFS扫描Netapp文件管理器上的共享。当扫描程序在W2K3上运行并退出时,在Netapp文件管理器上运行“cifs sessions -c”会显示会话已消失。当同一个扫描程序在W2K8上运行并退出时,上面的Netapp命令显示该会话仍处于活动状态。扫描仪应用程序已经退出,因此会话中不再有流量。

到目前为止我做了什么: 1)等待(超过)cifs.idle_timeout秒数,以查看会话是否消失。它不是。 2)分析用于W2K3-> Netapp和W2K8-> Netapp之间的通信的分组踪迹。 W2K3跟踪显示TREE_CONNECT和TREE_DISCONNECT,但W2K8跟踪仅显示TREE_CONNECT请求。我将验证这一点,但我认为W2K3上的TREE_DISCONNECT后面跟着一个LOGOFF请求(导致会话结束我会相信吗?)。 3)看看Netapp不在图片中时的样子 - 从W2K8客户端机器,我通过windows-explorer \\ C $访问。这会在线路上产生TREE_CONNECT请求。现在我关闭了资源管理器窗口,W2K3服务器机器关闭了会话,即使W2K8客户端生成的线路上没有TREE_DISCONNECT。

看起来Netapp正在期待W2K8没有发送的东西。

问题:我的扫描仪应用程序中是否有可用的特定API i)扫描完成后发送明确的LOGOFF SMB请求? ii)或者,重新使用W2K8客户端和Netapp文件管理器的现有会话进行新扫描? ii)任何人都面临这种或类似的情况?

提前致谢。

2 个答案:

答案 0 :(得分:0)

对于API - 请查看NetUseEnumNetUseDel

您看到的断开连接是由于空闲会话(没有打开句柄的会话)。我不确定这是由服务器完成的(这表明Netapp和Windows之间存在差异)还是客户端(扫描程序保存一个打开的句柄,可能是当前目录,而当您关闭窗口时资源管理器关闭句柄)。

答案 1 :(得分:0)

我不确定您要完成什么,但使用NetApp工具/ API可能会更容易。对于许多管理任务,Data ONTAP PowerShell Toolkit可以简化事情:

PS C:\> Connect-NaController fas2040rre1
PS C:\> Get-NaCifsShare
MountPoint                                    ShareName                 Description
----------                                    ---------                 -----------
/etc                                          ETC$                      Remote Administration
/vol/vol0/home                                HOME                      Default Share
                     ... snip ...
/vol/cifs/backups                             backups

如果PowerShell不是你的事,你可以看看Manageability SDK的Web服务API到C / C ++,Java,Perl和.Net。在这种情况下,您需要查看cifs-share-list API(在7.x / 8.x之间略有不同)。