Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
La requête indique que la pile de virtualisation souhaite annuler l’inscription pour les événements Plug-and-Play (précédemment enregistrés via la demande de IOCTL_SRIOV_ATTACH).
Code principal
Bloc d’état
> IoStatus.Status est défini sur STATUS_SUCCESS si la requête réussit. Sinon, 'état indique la condition d’erreur appropriée en tant que code NTSTATUS.
Remarques
Cette demande IOCTL est envoyée par la pile de virtualisation au pilote PCI Express SR-IOV Physical Function (PF) qui expose GUID_DEVINTERFACE_VIRTUALIZABLE_DEVICE.
À partir de là, le PF ne devrait pas s’attendre à recevoir des demandes de IOCTL_SRIOV_EVENT_COMPLETE et de IOCTL_SRIOV_NOTIFICATION.
Le conducteur qui doit cesser d’attendre IOCTL_SRIOV_EVENT_COMPLETE. Si le pilote attend actuellement, il doit cesser d’attendre et continuer à traiter les irps Plug-and-Play.
Dans cet exemple de gestion de la requête IOCTL_SRIOV_DETACH, le pilote PF gère les états PnP dans son contexte d’appareil. Le deviceContext->PnpRebalancing a la valeur TRUE, lorsque le pilote reçoit IRP_MN_QUERY_STOP_DEVICE et a la valeur FALSE lorsqu’il reçoit IRP_MN_START_DEVICE.
case IOCTL_SRIOV_DETACH:
WdfWaitLockAcquire(deviceContext->PnpStateLock, NULL);
deviceContext->PnpVspAttached = FALSE;
if (deviceContext->PnpRebalancing != FALSE)
{
//
// Any new client (VSP state machine) will not know about
// the current rebalance is it should block attach until
// rebalance is over.
//
deviceContext>PnpSafeToAttach = FALSE;
KeClearEvent(&deviceContext>PnpSafeEvent);
}
//
// Unblock the PnP thread if it waiting for an IO control from the
// client as the client just detached.
//
deviceContext->PnpEventStatus = STATUS_SUCCESS;
KeSetEvent(&deviceContext->PnpUnblockEvent, IO_NO_INCREMENT, FALSE);
WdfWaitLockRelease(deviceContext->PnpStateLock);
status = STATUS_SUCCESS;
break;
Exigences
Exigence | Valeur |
---|---|
d’en-tête | pcivirt.h |
IRQL | PASSIVE_LEVEL |
Voir aussi
WdfIoTargetSendInternalIoctlSynchronously
WdfIoTargetSendInternalIoctlOthersSynchronously