IOCTL_SRIOV_PROXY_QUERY_LUID IOCTL (pcivirt.h)
Essa solicitação fornece o identificador exclusivo local do dispositivo SR_IOV implementando a interface.
Código principal
Buffer de saída
Um ponteiro para uma estrutura de SRIOV_PROXY_QUERY_LUID_OUTPUT preenchida com o identificador.
Comprimento do buffer de saída
O tamanho da estrutura SRIOV_PROXY_QUERY_LUID_OUTPUT
Bloco de status
> Irp-IoStatus.Status será definido como STATUS_SUCCESS se a solicitação for bem-sucedida. Caso contrário, status à condição de erro apropriada como um código de NTSTATUS.
Observações
Essa solicitação IOCTL é enviada pela pilha de virtualização para o driver PF (PCI Express SR-IOV Physical Function) que expõe GUID_DEVINTERFACE_VIRTUALIZABLE_DEVICE.
Essa solicitação IOCTL tem origem no modo de usuário e é manipulada pelo driver de função física (PF) para fornecer o identificador exclusivo local do dispositivo físico. Essa solicitação só é necessária para SR-IOV dispositivos que fazem a atribuição direta.
Antes de enviar essa solicitação, o aplicativo de modo de usuário deve obter um identificador para o dispositivo PCI Express SR-IOV consultando GUID_DEVINTERFACE_VIRTUALIZABLE_DEVICE.
Neste exemplo, o driver PF gera um identificador exclusivo chamando ZwAllocateLocallyUniqueId e o armazena no contexto do dispositivo.
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;
Requisitos
Requisito | Valor |
---|---|
cabeçalho | pcivirt.h |
IRQL | PASSIVE_LEVEL |