Reactos
at master 53 lines 1.5 kB view raw
1//////////////////////////////////////////////////////////////////// 2// Copyright (C) Alexander Telyatnikov, Ivan Keliukh, Yegor Anchishkin, SKIF Software, 1999-2013. Kiev, Ukraine 3// All rights reserved 4// This file was released under the GPLv2 on June 2015. 5//////////////////////////////////////////////////////////////////// 6#include "udffs.h" 7 8VOID 9NTAPI 10UDFDriverUnload( 11 IN PDRIVER_OBJECT DriverObject 12 ) 13{ 14// UNICODE_STRING uniWin32NameString; 15 LARGE_INTEGER delay; 16 17 // 18 // All *THIS* driver needs to do is to delete the device object and the 19 // symbolic link between our device name and the Win32 visible name. 20 // 21 // Almost every other driver ever written would need to do a 22 // significant amount of work here deallocating stuff. 23 // 24 25 UDFPrint( ("UDF: Unloading!!\n") ); 26 27 // prevent mount oparations 28 UDFGlobalData.UDFFlags |= UDF_DATA_FLAGS_BEING_UNLOADED; 29 30 // wait for all volumes to be dismounted 31 delay.QuadPart = 10*1000*1000*10; 32 while(TRUE) { 33 UDFPrint(("Poll...\n")); 34 KeDelayExecutionThread(KernelMode, FALSE, &delay); 35 } 36 37 // Create counted string version of our Win32 device name. 38 39 40// RtlInitUnicodeString( &uniWin32NameString, DOS_DEVICE_NAME ); 41 42 43 // Delete the link from our device name to a name in the Win32 namespace. 44 45 46// IoDeleteSymbolicLink( &uniWin32NameString ); 47 48 49 // Finally delete our device object 50 51 52// IoDeleteDevice( DriverObject->DeviceObject ); 53}