Arrêt

Fonction du driver exécutée à l'arrêt (via panneau de contrôle ou programme)

//***************************************************************************************

// fonction de déchargement du driver
VOID MonDriverUnload( IN PDRIVER_OBJECT DriverObject )
{
WCHAR deviceLinkBuffer[] = L"\\DosDevices\\MonDriver";
UNICODE_STRING deviceLinkUnicodeString;
PDEVICE_EXTENSION deviceExtension;
DbgPrint("stop driver \n");
deviceExtension=(xxxx *)DriverObject->DeviceObject->DeviceExtension;
deviceExtension->ReInitializeMonDriverCards();
// libération des ressources
deviceExtension->Ressources(DriverObject,false);
// desinstalle les IRQs
// IoDisconnectInterrupt(deviceExtension->InterruptObject);
// ... le grand nettoyage si ressources allouées
// supprime le lien entre le nom du driver et celui connu par l'application
RtlInitUnicodeString (&deviceLinkUnicodeString, deviceLinkBuffer);
IoDeleteSymbolicLink (&deviceLinkUnicodeString);
// detruit le device object 
IoDeleteDevice (DriverObject->DeviceObject);
}

Accueil ] Remonter ]