Share via


IOCTL_SRIOV_PROXY_QUERY_LUID IOCTL(pcivirt.h)

이 요청은 인터페이스를 구현하는 SR_IOV 디바이스의 로컬 고유 식별자를 제공합니다.

주 코드

IRP_MJ_DEVICE_CONTROL

출력 버퍼

식별자로 채워진 SRIOV_PROXY_QUERY_LUID_OUTPUT 구조체에 대한 포인터입니다.

출력 버퍼 길이

SRIOV_PROXY_QUERY_LUID_OUTPUT 구조체의 크기

상태 블록

Irp->요청이 성공하면 IoStatus.Status 가 STATUS_SUCCESS 설정됩니다. 그렇지 않으면 NTSTATUS 코드로 적절한 오류 조건에 대한 상태입니다.

설명

이 IOCTL 요청은 가상화 스택에서 GUID_DEVINTERFACE_VIRTUALIZABLE_DEVICE 노출하는 PCI Express SR-IOV PF(물리적 함수) 드라이버로 전송됩니다.

이 IOCTL 요청은 사용자 모드에서 시작되며 물리적 디바이스의 로컬 고유 식별자를 제공하기 위해 PF(물리적 함수) 드라이버에 의해 처리됩니다. 이 요청은 직접 할당을 수행하는 SR-IOV 디바이스에만 필요합니다.

이 요청을 보내기 전에 사용자 모드 애플리케이션은 GUID_DEVINTERFACE_VIRTUALIZABLE_DEVICE 쿼리하여 PCI Express SR-IOV 디바이스에 대한 핸들을 가져와야 합니다.

이 예제에서 PF 드라이버는 ZwAllocateLocallyUniqueId 를 호출하여 고유 식별자를 생성하고 디바이스 컨텍스트에 저장합니다.



    case IOCTL_SRIOV_PROXY_QUERY_LUID:

        status = WdfRequestRetrieveOutputBuffer(Request,
                                                sizeof(LUID),
                                                &luid,
                                                NULL);
        if (!NT_SUCCESS(status))
        {
            break;
        }

        RtlCopyMemory(luid, &deviceContext->Luid, sizeof(LUID));
        WdfRequestSetInformation(Request, sizeof(LUID));
        status = STATUS_SUCCESS;
        break;

요구 사항

요구 사항
헤더 pcivirt.h
IRQL PASSIVE_LEVEL

추가 정보

SRIOV_PROXY_QUERY_LUID_OUTPUT