Exemplo n.º 1
0
 public void GetStorageDependencyInformationTest()
 {
     try
     {
         using var handle = Kernel32.CreateFile(@"\\.\PhysicalDrive2", Kernel32.FileAccess.GENERIC_READ, System.IO.FileShare.ReadWrite, default, System.IO.FileMode.Open, FileFlagsAndAttributes.FILE_ATTRIBUTE_NORMAL | FileFlagsAndAttributes.FILE_FLAG_BACKUP_SEMANTICS);
         Assert.That(handle, ResultIs.ValidHandle);
         using var mem = new SafeCoTaskMemStruct <STORAGE_DEPENDENCY_INFO>(new STORAGE_DEPENDENCY_INFO { Version = STORAGE_DEPENDENCY_INFO_VERSION.STORAGE_DEPENDENCY_INFO_VERSION_2 });
         var flags = GET_STORAGE_DEPENDENCY_FLAG.GET_STORAGE_DEPENDENCY_FLAG_HOST_VOLUMES | GET_STORAGE_DEPENDENCY_FLAG.GET_STORAGE_DEPENDENCY_FLAG_DISK_HANDLE;
         var err   = GetStorageDependencyInformation(handle.DangerousGetHandle(), flags, mem.Size, mem, out var sz);
         if (err == Win32Error.ERROR_INSUFFICIENT_BUFFER)
         {
             mem.Size = sz;
             err      = GetStorageDependencyInformation(handle.DangerousGetHandle(), flags, mem.Size, mem, out sz);
         }
         err.ThrowIfFailed();
         mem.AsRef().Entries.WriteValues();
     }
     finally
     {
         //System.IO.File.Delete(tmpfn);
     }
 }