IOCTL_SRIOV_PROXY_QUERY_LUID IOCTL (pcivirt.h)
Questa richiesta fornisce l'identificatore univoco locale del dispositivo SR_IOV che implementa l'interfaccia.
Codice principale
Buffer di output
Puntatore a una struttura SRIOV_PROXY_QUERY_LUID_OUTPUT riempita con l'identificatore.
Lunghezza del buffer di output
Dimensioni della struttura SRIOV_PROXY_QUERY_LUID_OUTPUT
Blocco dello stato
Irp->IoStatus.Status è impostato su STATUS_SUCCESS se la richiesta ha esito positivo. In caso contrario, stato alla condizione di errore appropriata come codice NTSTATUS .
Commenti
Questa richiesta IOCTL viene inviata dallo stack di virtualizzazione al driver PCI Express SR-IOV Physical Function (PF) che espone GUID_DEVINTERFACE_VIRTUALIZABLE_DEVICE.
Questa richiesta IOCTL ha origine nella modalità utente e viene gestita dal driver della funzione fisica (PF) per fornire l'identificatore univoco locale del dispositivo fisico. Questa richiesta è necessaria solo per i dispositivi SR-IOV che eseguono l'assegnazione diretta.
Prima di inviare questa richiesta, l'applicazione in modalità utente deve ottenere un handle per il dispositivo PCI Express SR-IOV eseguendo una query per GUID_DEVINTERFACE_VIRTUALIZABLE_DEVICE.
In questo esempio, il driver PF genera un identificatore univoco chiamando ZwAllocateLocallyUniqueId e lo archivia nel contesto del 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;
Requisiti
Requisito | Valore |
---|---|
Intestazione | pcivirt.h |
IRQL | PASSIVE_LEVEL |