Esempio n. 1
0
        public static void Close()
        {
            if (driver == null)
            {
                return;
            }

            uint refCount = 0;

            driver.DeviceIOControl(IOCTL_OLS_GET_REFCOUNT, null, ref refCount);

            driver.Close();

            if (refCount <= 1)
            {
                driver.Delete();
            }

            driver = null;

            if (isaBusMutex != null)
            {
                isaBusMutex.Close();
                isaBusMutex = null;
            }

            if (pciBusMutex != null)
            {
                pciBusMutex.Close();
                pciBusMutex = null;
            }

            // try to delete temporary driver file again if failed during open
            if (fileName != null && File.Exists(fileName))
            {
                try {
                    File.Delete(fileName);
                    fileName = null;
                } catch (IOException) { }
                catch (UnauthorizedAccessException) { }
            }
        }