IWDFDevice2::CreateSymbolicLinkWithReferenceString 方法 (wudfddi.h)

[警告: UMDF 2 是最新版本的 UMDF,取代了 UMDF 1。 所有新的 UMDF 驱动程序都应使用 UMDF 2 编写。 没有将新功能添加到 UMDF 1,并且对较新版本的 Windows 10 上的 UMDF 1 的支持有限。 通用 Windows 驱动程序必须使用 UMDF 2。 有关详细信息,请参阅 UMDF入门 。]

CreateSymbolicLinkWithReferenceString 方法为设备创建符号链接名称(可选)引用字符串

语法

HRESULT CreateSymbolicLinkWithReferenceString(
  [in]           PCWSTR pSymbolicLink,
  [in, optional] PCWSTR pReferenceString
);

参数

[in] pSymbolicLink

指向 NULL终止的字符串的指针,该字符串将成为设备的用户可见名称。 符号链接名称必须位于全局 DosDevices 命名空间中。

[in, optional] pReferenceString

当应用程序使用 pSymbolicLink 参数指定的符号名称时,指向 windows 追加到设备名称 NULL终止的字符串的指针。 有关详细信息,请参阅以下“备注”部分。 此参数是可选的,可以 NULL

返回值

如果作成功,CreateSymbolicLinkWithReferenceString 返回S_OK。 否则,该方法可能会返回以下值之一:

返回代码 描述
E_INVALIDARG
调用方为输入参数指定了无效值。
E_OUTOFMEMORY
内存分配失败。
 

此方法可能会返回 Winerror.h 包含的其他值之一。

言论

CreateSymbolicLinkWithReferenceStringIWDFDevice2 接口表示的设备创建符号链接名称(可选)引用字符串。 驱动程序调用 CreateSymbolicLinkWithReferenceString后,应用程序可以使用符号链接名称访问设备。

假设设备的名称为“\Device\MyDevice”。 可以通过为 pSymbolicLink 参数指定“L”DeviceUserName“,为设备创建”DeviceUserName“的符号链接名称。 如果为 pReferenceString 参数指定“L”Instance3“,则将创建指向 \Device\MyDevice\Instance3 的符号链接。 如果应用程序使用符号链接名称打开设备,则 I/O 管理器将打开 \Device\MyDevice,并创建包含 \Instance3 字符串作为文件名的 WDM 文件对象。 基于 UMDF 的驱动程序接收框架创建的文件对象,该对象还包含 \Instance3 字符串作为文件名(请参阅 IWDFFile::RetrieveFileName)。

通常,基于框架的驱动程序提供 设备接口, 应用程序可用于访问其设备,而不是提供符号链接。

如果意外删除了设备(意外删除),框架将删除指向设备的符号链接。 然后,驱动程序可以将符号链接名称用于设备的新实例。

如果不需要向设备的符号链接名称添加引用字符串,驱动程序可以调用 IWDFDevice::CreateSymbolicLink 而不是 CreateSymbolicLinkWithReferenceString

例子

以下行定义全局 DosDevices 命名空间中的符号链接名称前缀。

#define SYMBOLIC_LINK_NAME_PREFIX   L"\\DosDevices\\Global\\"

下面的代码示例创建符号名称字符串,获取 IWDFDevice2 接口,然后调用 CreateSymbolicLinkWithReferenceString


    IWDFDevice2 *pDevice2 = NULL;
    HRESULT hr;

    //
    // Create symbolic link name string.
    //
    hr = StringCchPrintf(portFullName,
                         portFullNameLength,
                         L"%ws%ws",
                         SYMBOLIC_LINK_NAME_PREFIX,
                         portName);
    if (FAILED(hr))
    {
        goto Exit;
    }

    //
    // Get a pointer to the IWDFDevice2 interface.
    //
    hr = pIWDFDevice->QueryInterface(__uuidof(IWDFDevice2),
                                     (void**) &pDevice2);
    if (SUCCEEDED(hr)) 
    {
    hr = pDevice2->CreateSymbolicLinkWithReferenceString(portFullName,
                                                         portCountString);
    if (FAILED(hr))
        {
            goto Exit;
        }
        SAFE_RELEASE(pDevice2);
    }

要求

要求 价值
终止支持 在 UMDF 2.0 及更高版本中不可用。
目标平台 桌面
最低 UMDF 版本 1.9
标头 wudfddi.h (包括 Wudfddi.h)
DLL WUDFx.dll

另请参阅

IWDFDevice2

IWDFDevice::CreateSymbolicLink