IVsRunningDocumentTable.FindAndLockDocument 方法

使用文档文件名,查找文档 RDT,然后获取读取或编辑该锁文档。

命名空间:  Microsoft.VisualStudio.Shell.Interop
程序集:  Microsoft.VisualStudio.Shell.Interop(在 Microsoft.VisualStudio.Shell.Interop.dll 中)

语法

声明
Function FindAndLockDocument ( _
    dwRDTLockType As UInteger, _
    pszMkDocument As String, _
    <OutAttribute> ByRef ppHier As IVsHierarchy, _
    <OutAttribute> ByRef pitemid As UInteger, _
    <OutAttribute> ByRef ppunkDocData As IntPtr, _
    <OutAttribute> ByRef pdwCookie As UInteger _
) As Integer
int FindAndLockDocument(
    uint dwRDTLockType,
    string pszMkDocument,
    out IVsHierarchy ppHier,
    out uint pitemid,
    out IntPtr ppunkDocData,
    out uint pdwCookie
)

参数

  • pszMkDocument
    类型:System.String
    [in] 所在的路径文档。
  • ppunkDocData
    类型:System.IntPtr%
    [out, optional] 返回 IUnknown 接口。请参见 " 备注 " 了解详细信息。
  • pdwCookie
    类型:System.UInt32%
    [out, optional] 返回文档的抽象值。

返回值

类型:System.Int32
如果方法成功,则返回 S_OK。如果失败,它会返回一个错误代码。

备注

FindAndLockDocumentEx 类似于此方法,还允许一个首选层次结构/itemid 的指定文档对,以防 RDT_EditLock 需要,并且文档移动到当前仅 RDT_ReadLock 注册未指派的层次结构/itemid。

为了避免内存泄漏,应调用此方法返回的 ppunkDocData 对象的 Release 。

COM 签名

从 vsshell.idl:

HRESULT IVsRunningDocumentTable::FindAndLockDocument(
   [in] VSRDTFLAGS      dwRDTLockType,
   [in] LPCOLESTR       pszMkDocument,
   [out] IVsHierarchy **ppHier,
   [out] VSITEMID      *pitemid,
   [out] IUnknown     **ppunkDocData,
   [out] VSCOOKIE      *pdwCookie
);

punkDocData 参数

如果文档注册,则返回的 punkDocData 值始终不为 null,因为环境委托给 punkDocData的一个 nullnull 引用(在 Visual Basic 中为 Nothing) 值注册编辑器将创建 punkDocData ,如用例,编辑没有数据/视图分开时。 此对象表示文档数据对象与注册的文档。 通常, IVsPersistDocDataIVsDocDataFileChangeControl 接口从此 IUnknown 对象获取。

pdwCookie 参数

pdwCookie 参数返回表示文档的 cookie。 此 cookie 可以传递给以下方法:

.NET Framework 安全性

请参见

参考

IVsRunningDocumentTable 接口

Microsoft.VisualStudio.Shell.Interop 命名空间