IWDFRemoteInterfaceInitialize::RetrieveSymbolicLink 메서드(wudfddi.h)

[경고: UMDF 2는 UMDF의 최신 버전이며 UMDF 1을 대체합니다. 모든 새 UMDF 드라이버는 UMDF 2를 사용하여 작성해야 합니다. UMDF 1에 새 기능이 추가되지 않으며 최신 버전의 Windows 10 UMDF 1에 대한 지원이 제한되어 있습니다. 유니버설 Windows 드라이버는 UMDF 2를 사용해야 합니다. 자세한 내용은 UMDF를 사용하여 시작 참조하세요.]

RetrieveSymbolicLink 메서드는 운영 체제가 디바이스 인터페이스에 할당한 기호 링크 이름을 검색합니다.

구문

HRESULT RetrieveSymbolicLink(
  [out, optional] PWSTR pSymbolicLink,
  [in, out]       DWORD *pdwSymbolicLinkLengthInChars
);

매개 변수

[out, optional] pSymbolicLink

기호 링크 이름을 나타내는 null로 끝나는 유니코드 문자열을 수신하는 버퍼에 대한 포인터입니다. 필요한 버퍼 크기를 가져오려면 이 포인터를 NULL 로 설정합니다.

[in, out] pdwSymbolicLinkLengthInChars

호출자가 할당한 위치에 대한 포인터입니다. 입력에서 이 위치에는 pSymbolicLink 가 가리키는 버퍼의 호출자 제공 길이가 포함되어야 합니다. 출력에서 위치는 NULL 종료 문자를 포함하여 기호 링크 이름의 길이(문자)를 받습니다.

반환 값

RetrieveSymbolicLink 는 작업이 성공하면 S_OK 반환합니다. 그렇지 않으면 메서드는 다음 값을 반환할 수 있습니다.

반환 코드 설명
E_NOT_SUFFICIENT_BUFFER
pSymbolicLink가 가리키는 버퍼가 너무 작습니다. 이 경우 프레임워크는 pdwSymbolicLinkLengthInChars 가 가리키는 위치에 필요한 버퍼 크기를 저장합니다.
 

이 메서드는 Winerror.h에 포함된 다른 값 중 하나를 반환할 수 있습니다.

설명

기호 링크 이름에는 추가된 백슬래시() 문자와 instance 특정 참조 문자열이 포함될 수 있습니다.

일반적으로 드라이버는 다음과 같이 RetrieveSymbolicLink 를 두 번 호출해야 합니다.

  1. pSymbolicLink 매개 변수를 NULL로 설정하고 RetrieveSymbolicLink를 호출합니다. pdwSymbolicLinkLengthInChars가 가리키는 위치는 기호 링크 이름에 포함된 문자 수를 받습니다.
  2. 기호 링크 이름을 받을 수 있을 만큼 큰 버퍼를 할당합니다.
  3. RetrieveSymbolicLink를 다시 호출하고 pSymbolicLink 매개 변수를 할당한 버퍼의 주소로 설정합니다.
RetrieveSymbolicLink 메서드에 대한 자세한 내용은 UMDF 기반 드라이버에서 디바이스 인터페이스 사용을 참조하세요.

예제

다음 코드 예제에서는 드라이버의 IPnpCallbackRemoteInterfaceNotification::OnRemoteInterfaceArrival 콜백 함수가 디바이스 인터페이스의 기호 링크 이름의 길이를 결정하고 이름에 버퍼를 할당한 다음 이름을 검색하는 방법을 보여 줍니다.

void 
STDMETHODCALLTYPE
CMyDevice::OnRemoteInterfaceArrival(
    __in IWDFRemoteInterfaceInitialize  *FxRemoteInterfaceInit
    )
{
    HRESULT hr;
    INT BufferSize;
    hr= FxRemoteInterfaceInit->RetrieveSymbolicLink(NULL,
                                                    &BufferSize);
    if (FAILED(hr)) goto Error;
    hr = FxDriver->CreateWdfMemory(BufferSize, 
                                   NULL, 
                                   FxRemoteInterface, 
                                   &FxSymLinkBuffer);
    if (FAILED(hr)) goto Error;
    hr= FxRemoteInterfaceInit->RetrieveSymbolicLink(FxSymLinkBuffer->GetDataBuffer(NULL),
                                                    &BufferSize);
    if (FAILED(hr)) goto Error;
...
Error:
...
}

요구 사항

요구 사항
지원 종료 UMDF 2.0 이상에서는 사용할 수 없습니다.
대상 플랫폼 데스크톱
최소 UMDF 버전 1.9
머리글 wudfddi.h(Wudfddi.h 포함)
DLL WUDFx.dll

추가 정보

IWDFRemoteInterfaceInitialize

IWDFRemoteInterfaceInitialize::GetInterfaceGuid