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 참조).

일반적으로 프레임워크 기반 드라이버는 심볼 링크를 제공하는 대신 애플리케이션이 디바이스에 액세스하는 데 사용할 수 있는 디바이스 인터페이스를 제공합니다.

디바이스가 예기치 않게 제거되면(서프라이즈 제거) 프레임워크는 디바이스에 대한 기호 링크를 제거합니다. 그런 다음 드라이버는 디바이스의 새 instance 기호 링크 이름을 사용할 수 있습니다.

디바이스의 기호 링크 이름에 참조 문자열을 추가할 필요가 없는 경우 드라이버는 CreateSymbolicLinkWithReferenceString 대신 IWDFDevice::CreateSymbolicLink를 호출할 수 있습니다.

예제

다음 줄은 전역 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