|
I added one root folder (had 7 sub-folders and 62 files, around 54.9MB). During burn process when I try to cancel, I get this "Exception from HRESULT: 0xC0AA0002" error under Windows XP, but I could see the data (one root folder with 7 sub-folders and 62 files). "IDiscFormat2Data.CancelWrite()" does not work.
|
|
|
|
|
I'm developing a project for work (in VB.NET) in which I hope to include an automated burning operation for creating monthly archive DVD's. I've compiled this project to a DLL and included it in my project, and I've been able to successfully burn files using the code with a few very minor "tweaks" (I had to change the scope on a couple of things). However, I'm still having some difficulty in completing this because of some discrepancies I'm running into with regards to the SizeOnDisc property of the FileItem. Perhaps I'm just a bit dense having never really tried to work with this type of "mass archive automation" process before, but I'm hoping you can help me.
Here is the code I'm using to retrieve all of the files and organize them into however many discs will need to be burned. You'll note that I'm setting up a "priority list" at first because there is a certain order in which I want some of the data burned:
Private Function SetupDiscsToBurn(ByVal BurningPath As String) As ArrayList
Dim FileItem As FileItem = Nothing
Dim DirectoryItem As DirectoryItem = Nothing
Dim TotalDataToBurn As Int64 = 0
Dim CurrentImageSize As Int64 = 0
Dim ArchiveDiscFileList As New ArrayList
Dim ArchiveDiscs As New ArrayList
Dim PriorityList As New ArrayList
Dim DiscFull As Boolean = False
' *********************************************************************
' ** Setup a priority list to ensure that the archive folders are **
' ** burned in order. **
' *********************************************************************
If Directory.Exists(strTempZipPath & "FOLDER ONE") Then
PriorityList.Add(strTempZipPath & "FOLDER ONE")
End If
If Directory.Exists(strTempZipPath & "FOLDER TWO") Then
PriorityList.Add(strTempZipPath & "FOLDER TWO")
End If
If Directory.Exists(strTempZipPath & "FOLDER THREE") Then
PriorityList.Add(strTempZipPath & "FOLDER THREE")
End If
If File.Exists(strTempZipPath & "FILE ONE.ZIP") Then
PriorityList.Add(strTempZipPath & "FILE ONE.ZIP")
End If
If File.Exists(strTempZipPath & "FILE TWO.ZIP") Then
PriorityList.Add(strTempZipPath & "FILE TWO.ZIP")
End If
If File.Exists(strTempZipPath & "FILE THREE.ZIP") Then
PriorityList.Add(strTempZipPath & "FILE THREE.ZIP")
End If
If File.Exists(strTempZipPath & "FILE FOUR.ZIP") Then
PriorityList.Add(strTempZipPath & "FILE FOUR.ZIP")
End If
If File.Exists(strTempZipPath & "FILE FIVE.ZIP") Then
PriorityList.Add(strTempZipPath & "FILE FIVE.ZIP")
End If
If Directory.Exists(strTempZipPath & "FOLDER FOUR") Then
PriorityList.Add(strTempZipPath & "FOLDER FOUR")
End If
If PriorityList.Count > 0 Then
Do
' *********************************************************************
' ** If the cumulative size of the files added to the current disk **
' ** will fill the disk, add the list to the ArchiveDiscs ArrayList, **
' ** clear the list and reset everything for the next batch of files **
' *********************************************************************
If DiscFull Then
ArchiveDiscs.Add(ArchiveDiscFileList)
CurrentImageSize = 0
ArchiveDiscFileList = New ArrayList
DiscFull = False
End If
If InStr(UCase(PriorityList(0).ToString), ".ZIP") = 0 Then
DirectoryItem = New DirectoryItem(PriorityList(0).ToString)
If DirectoryItem.SizeOnDisc < (TotalDiscSize - CurrentImageSize) Then
' *********************************************************************
' ** Add the DirectoryItem object to the ArrayList of MediaItem **
' ** objects for this disk, update the remaining space on the disk **
' ** and remove the directory from the PriorityList. **
' *********************************************************************
ArchiveDiscFileList.Add(DirectoryItem)
CurrentImageSize = CurrentImageSize + DirectoryItem.SizeOnDisc
PriorityList.RemoveAt(0)
ElseIf CurrentImageSize = 0 Then
' *********************************************************************
' ** If the entire directory is too large to fit on the current disk **
' ** and the current disk is blank (always start a new directory on **
' ** a new disk if it doesn't fit on the previous), add each file to **
' ** the ArchiveFileList seperately until the disk is full. **
' *********************************************************************
PriorityList.InsertRange(1, Directory.GetFiles(PriorityList(0).ToString))
' *********************************************************************
' ** Since we're not going to be adding the directory itself, we'll **
' ** need to reorganize the PriorityList a bit, then we can start **
' ** trying to add the files individually. **
' *********************************************************************
For Each File As String In Directory.GetFiles(PriorityList(0).ToString)
FileItem = New FileItem(File)
' *********************************************************************
' ** Check each file's SizeOnDisc property to see if it will fit in **
' ** the leftover space on the current media. If so, add it to the **
' ** of MediaItem objects for this disk, update the remaining space **
' ** on the disk and remove the item from the PriorityList. **
' *********************************************************************
If FileItem.SizeOnDisc < (TotalDiscSize - CurrentImageSize) Then
ArchiveDiscFileList.Add(FileItem)
CurrentImageSize = CurrentImageSize + FileItem.SizeOnDisc
PriorityList.RemoveAt(1)
' *********************************************************************
' ** As soon as we hit a file that doesn't fit on the current disk, **
' ** consider the disk full and start a new one. **
' *********************************************************************
Else
DiscFull = True
End If
FileItem = Nothing
Next
' *********************************************************************
' ** Remove the directory in which the files we're adding are **
' ** contained from the PriorityList so that when we loop again, we **
' ** don't get an endless loop of files added to the PriorityList. **
' *********************************************************************
PriorityList.RemoveAt(0)
End If
DirectoryItem = Nothing
Else
FileItem = New FileItem(PriorityList(0).ToString)
If FileItem.SizeOnDisc < (TotalDiscSize - CurrentImageSize) Then
ArchiveDiscFileList.Add(FileItem)
CurrentImageSize = CurrentImageSize + FileItem.SizeOnDisc
PriorityList.RemoveAt(0)
Else
DiscFull = True
End If
FileItem = Nothing
End If
Loop Until PriorityList.Count = 0
If CurrentImageSize > 0 Then
ArchiveDiscs.Add(ArchiveDiscFileList)
ArchiveDiscFileList = Nothing
CurrentImageSize = 0
End If
End If
Return ArchiveDiscs
End Function
Okay, so everything appears to be working normally here, but the problem comes in when I try to actually burn the data collected by this function. For reference, The total available space on my DVD+R is 4,700,372,992 bytes.
I've been testing with a single folder with a huge amount of data and letting it build my disk images in this way, but I get some very odd results. Once the first image is all put together (93 files, altogether), I checked the value of the CurrentImageSize variable. The result is 4,698,685,440 bytes. Before I go ahead and let my application do the burning (just in case I run into some funky error I don't recognize), I open up Nero to try to burn the exact same data as is listed as being on my first disk image. I grab all 93 files and put them in Nero's list of files to burn and the UI shows that there's a little "overhang" of data beyond the "safe" capacity of the disk. I hit the burn button and it fails saying that there's too much data to be written to the disk.
The wierd thing is that the amount of data Nero shows is WAY off my calculation. I could understand if Nero needed a little extra space for it's own volume data, or something, but it's reporting that there's 4,925,685,760 bytes to be written to the disk. That's approximately 225MB difference.
Okay, so I go check in Windows... I go to the temporary directory where the files are stored and check the combined size of the 93 files in question: 4,925,218,816 bytes.
So, by now, I'm sure you can tell that my question is: "Why am I getting such disparate values?" I've even started walking through each of the 93 files, verifying and trying to manually calculate the individual files' sizes (SizeOnDisc). What's throwing me so far is that all of the application calculated values seem to be either equal to or larger than Windows is reporting, so I would think that we should be getting close to what Nero and Windows are coming up with.
|
|
|
|
|
Can you list the sizes of each of your 93 files and I'll investigate to see what the problem is?
|
|
|
|
|
Do you want the Windows-reported sizes, the application reported sizes, or both? It may take me a little bit to get it all together. Unfortunately I didn't write them down my first time through.modified on Friday, February 12, 2010 1:08 PM
|
|
|
|
|
just an example of my final calculation and what windows is reporting.
you can also go to a command prompt and go to your:
C:\Users\[username]\AppData\Local\Microsoft\Windows\Burn\Burn
directory and type dir > dir.txt and post the content of your dir.txt.
|
|
|
|
|
Here's the directory listing of the actual files I'm trying to burn. I assume the directory to which you're pointing is in Vista/Windows 7, and I'm using XP (don't know if THAT would make any difference, although I wouldn't think so). The final calculation I got from the application was 4,698,685,440 with the code above. Let me know if this isn't exactly what you were needing.
Volume in drive D is Data
Volume Serial Number is 6CC5-7DA2
Directory of d:\burntemp
02/12/10 12:38 PM <DIR> .
02/12/10 12:38 PM <DIR> ..
02/01/10 01:34 PM 1,699,771,089 File1.zip
02/01/10 01:05 PM 7,528,292 File2.zip
01/15/10 01:55 PM 1,066,972 File3.zip
01/15/10 01:57 PM 3,079,598 File4.zip
01/15/10 01:58 PM 30,545 File5.zip
01/15/10 01:59 PM 72,362 File6.zip
02/01/10 02:01 PM 176,013,355 File7.ZIP
02/01/10 01:24 PM 190,136,999 File8.ZIP
02/01/10 01:05 PM 9,552,911 File9.ZIP
02/01/10 01:05 PM 2,642,550 File10.ZIP
02/01/10 01:56 PM 572,080 File11.ZIP
02/01/10 01:05 PM 4,779,360 File12.ZIP
02/01/10 01:06 PM 8,003,763 File13.ZIP
02/01/10 01:06 PM 10,086,467 File14.ZIP
02/01/10 01:05 PM 5,244,048 File15.ZIP
02/01/10 01:06 PM 6,140,933 File16.ZIP
02/01/10 01:05 PM 3,764,354 File17.ZIP
02/01/10 01:05 PM 1,612,667 File18.ZIP
02/01/10 01:05 PM 3,077,855 File19.ZIP
02/01/10 01:29 PM 331,579,544 File20.ZIP
01/15/10 02:03 PM 1,395,881 File21.zip
01/15/10 02:04 PM 4,189,651 File22.zip
01/15/10 02:05 PM 5,371,786 File23.zip
01/15/10 02:06 PM 4,820,894 File24.zip
01/15/10 02:07 PM 6,315,542 File25.zip
01/15/10 02:08 PM 5,070,788 File26.zip
01/15/10 02:17 PM 71,504 File27.zip
01/15/10 02:55 PM 58,859 File28.zip
01/15/10 02:56 PM 62,650 File29.zip
01/15/10 02:57 PM 71,228 File30.zip
01/15/10 02:09 PM 171,666 File31.zip
01/15/10 02:11 PM 175,528 File32.zip
01/15/10 02:11 PM 164,061 File33.zip
01/15/10 02:12 PM 204,109 File34.zip
01/15/10 02:14 PM 13,299 File35.zip
01/15/10 02:14 PM 14,943 File36.zip
01/15/10 02:14 PM 14,969 File37.zip
01/15/10 02:15 PM 36,237 File38.zip
02/01/10 01:08 PM 8,726,051 File39.ZIP
02/01/10 01:16 PM 60,021,471 File40.ZIP
02/01/10 01:56 PM 464,387 File41.ZIP
02/01/10 01:11 PM 12,251,319 File42.ZIP
02/01/10 01:22 PM 102,688,771 File43.ZIP
02/01/10 01:07 PM 8,361,694 File44.ZIP
02/01/10 01:19 PM 89,429,992 File45.ZIP
02/01/10 01:08 PM 10,798,881 File46.ZIP
02/01/10 01:06 PM 4,657,751 File47.ZIP
02/01/10 01:13 PM 39,525,998 File48.ZIP
01/15/10 03:04 PM 401,539 File49.zip
01/15/10 03:05 PM 1,450,640 File50.zip
01/15/10 03:06 PM 1,693,839 File51.zip
01/15/10 03:07 PM 1,664,941 File52.zip
01/15/10 03:08 PM 1,741,411 File53.zip
01/15/10 03:09 PM 1,873,929 File54.zip
01/15/10 03:25 PM 99,174 File55.zip
01/15/10 03:12 PM 96,074 File56.zip
01/15/10 03:22 PM 101,572 File57.zip
01/15/10 03:24 PM 103,373 File58.zip
02/01/10 01:06 PM 3,366,533 File59.ZIP
02/01/10 01:07 PM 4,709,184 File60.ZIP
02/01/10 02:37 PM 794,511,068 File61.ZIP
02/01/10 01:07 PM 7,641,549 File62.ZIP
02/01/10 01:20 PM 57,712,838 File63.ZIP
02/01/10 01:09 PM 16,094,329 File64.ZIP
02/01/10 01:09 PM 13,422,380 File65.ZIP
02/01/10 02:00 PM 98,234,620 File66.ZIP
02/01/10 01:14 PM 43,965,826 File67.ZIP
02/01/10 01:59 PM 35,518,224 File68.ZIP
02/01/10 01:19 PM 78,984,068 File69.ZIP
02/01/10 01:19 PM 82,951,253 File70.ZIP
02/01/10 01:07 PM 4,816,062 File71.ZIP
02/01/10 01:59 PM 37,380,394 File72.ZIP
02/01/10 01:29 PM 307,703,416 File73.ZIP
02/01/10 01:08 PM 5,366,165 File74.ZIP
02/01/10 01:17 PM 66,848,026 File75.ZIP
02/01/10 01:11 PM 20,856,507 File76.ZIP
02/01/10 01:59 PM 53,508,740 File77.ZIP
02/01/10 01:09 PM 12,298,382 File78.ZIP
02/01/10 01:06 PM 2,213,464 File79.ZIP
02/01/10 01:57 PM 5,727,990 File80.ZIP
02/01/10 01:08 PM 8,398,403 File81.ZIP
02/01/10 01:06 PM 6,011 File82.ZIP
02/01/10 01:57 PM 9,724,130 File83.ZIP
02/01/10 01:24 PM 151,690,727 File84.ZIP
02/01/10 01:18 PM 76,114,444 File85.ZIP
02/01/10 01:06 PM 570,124 File86.ZIP
02/01/10 01:11 PM 19,584,869 File87.ZIP
02/01/10 01:18 PM 52,534,354 File88.ZIP
02/01/10 01:07 PM 2,180,405 File89.ZIP
01/15/10 03:26 PM 192,370 File90.zip
01/15/10 03:27 PM 2,577,947 File91.zip
01/15/10 03:28 PM 5,329,471 File92.zip
01/15/10 03:28 PM 3,326,267 File93.zip
93 File(s) 4,925,192,686 bytes
2 Dir(s) 102,680,421,888 bytes free
|
|
|
|
|
HOLY CRAP! Of course, today when I go back through it, now it somehow seems to be doing things right... I didn't change any of the code from yesterday when it was freaking out, I SWEAR! But now it's only grabbing 83 files instead of 93 files before it starts the next disk. Okay, now I'm TOTALLY confused.
Well, please disregard pretty much all of my previous statements, then. Now I feel like a total moron.
|
|
|
|
|
No problem. If it pops up again, let me know.
|
|
|
|
|
Okay, I have to retract my previous statement about not changing the code. I added a line in my code last night just before I left, but didn't go back and test it until after I posted my rant... In my For/Next loop for the files, I left out the "Exit For" line that stopped it from going through any more files in the directory, and it was apparently grabbing more files than it should have, and taking things out of sequence.
Thanks for your help. I really appreciate it.
|
|
|
|
|
I got the same error. I think, this is because the geometry (size of cluster and sector) of CD and hardisk is different. "samefile.SizeOnHardDisc" can be different to "samefile.SizeOnCD". I think, you should consider the CD geometry.
See wikipedia[^]:
Traditional formatting of these storage media provides space for 512 bytes (for magnetic disks) or 2048 bytes (for optical discs) of user-accessible data per sector. Newer hard drives use 4096 byte (4KB or "4K") sectors; see below for details.
|
|
|
|
|
I have just ported this superb example to WPF http://img130.imageshack.us/img130/4732/burner.png[^]. the only issues I've had are using a valueconverter for the drive formating instead of the system.windows.forms.combobox forat event, and I still need to look at converting the icon and adding it to the listbox.
There are however some very subtle threading bugs that winforms does not pick up. You should never ever reference any UI code in the do work event of the backround worker as that is happening on a different thread. WPF picks this up, so what I have has to do is create a coupls of private booleans and hook them up the the checked/unchecked (or checked changed in winforms) and use these instead eg
private bool isCheckBoxCloseMediaChecked;
private void checkBoxCloseMedia_Checked(object sender, RoutedEventArgs e)
{
isCheckBoxCloseMediaChecked = (bool)checkBoxCloseMedia.IsChecked;
}
private void checkBoxCloseMedia_Unchecked(object sender, RoutedEventArgs e)
{
isCheckBoxCloseMediaChecked = (bool)checkBoxCloseMedia.IsChecked;
}
private string volumeName;
private void textBoxLabel_TextChanged(object sender, TextChangedEventArgs e)
{
volumeName = textBoxLabel.Text;
}
private bool isCheckBoxQuickFormatChecked;
private void CheckBoxQuickFormatChecked(object sender, RoutedEventArgs e)
{
isCheckBoxQuickFormatChecked = (bool)checkBoxQuickFormat.IsChecked;
}
private void CheckBoxQuickFormatUnchecked(object sender, RoutedEventArgs e)
{
isCheckBoxQuickFormatChecked = (bool)checkBoxQuickFormat.IsChecked;
}
and then set this private value in the dowork method e.g.
discFormatData.ForceMediaToBeClosed = isCheckBoxCloseMediaChecked;
also note that I have set the textbox label as well. I have also done this int he formatting event where any calls in do work are made.
modified on Sunday, January 24, 2010 3:37 PM
|
|
|
|
|
You are absolutely right! I should have never added that in the DoWork function although I don't think it would have ever caused a problem. Thanks for pointing that out. I'll update it when I get a chance.
BTW, very nice UI!
|
|
|
|
|
Thanks for the reply Eric,
The following is lifted from Bill Wagners, excellent "More Effective C#"
If you've done any Windows Forms programming, you've seen that occasionally an event handler
throws an InvalidOperationException with the cryptic message, "Cross-thread operation not valid:
Control accessed from a thread other than the thread it was created on." One of the most annoying
behaviors associated with cross-thread calls in Windows Forms is that sometimes they work, and
sometimes they don't. That behavior has been changed in Windows Presentation Foundation (WPF). In
WPF, cross-thread invocations always fail. At least that makes it easier to find and fix them before you
ship an application.
In Windows Forms, the fix is to check the Control.InvokeRequired property and then use
ControlInvoke() if InvokeRequired is true. In WPF, you use the
System.Windows.Threading.Dispatcher methods Invoke() and BeginInvoke(). In both cases,
there is a lot happening in those two steps, and you have other options. Those two API methods do
more work than you might think. And, under some conditions, they do not work correctly. Because
these methods exist to handle cross-thread calls, you can introduce subtle race conditions if you use
them incorrectly—or even correctly if you don't understand how they work.
The underlying reason for this code is the same in both Windows Forms and WPF: Windows controls
use the Component Object Model (COM) single-threaded apartment (STA) model because those
underlying controls are apartment-threaded. Furthermore, many of the controls use the message
pump for many operations. This model says that all function calls to each control must be on the
same thread that created the control. Invoke (and BeginInvoke and EndInvoke) marshals method
calls to the proper thread.
|
|
|
|
|
Does IMAPI2 comes with windows 7? or do I have to install it?
Another question...
How can I distribute this program. I want to give a copy, I just need to install .NET Framework and IMAPI?, can I jus copy the .exe file?
Thanks.
|
|
|
|
|
#1. Yes, Windows 7 comes with IMAPI2.
#2. You would need to install the .NET Framework if they do not have it. You do not need to install IMAPI, unless they are running XP, then you would need to install the appropriate updates. If you wanted some of the updated features, you would need to install the Windows Feature Pack for Storage 1.0.
|
|
|
|
|
Thanks... so what's Windows Feature Pack for Storage 1.0. for???
I don't have to install it if I have Windows Vista (without SP1) ?
|
|
|
|
|
Mainly it has burn verification and blu-ray support. I think you will still need to install it with Vista SP1
|
|
|
|
|
Hi, How Can I burn an avi Video to DVD, and this DVD can be played on a common DVD player?
|
|
|
|
|
|
Great work Eric.
In my project I fill the disc to the brim by splitting the last file, however to do this I need to know the size of the disc. I noticed that you were using the default limit for discs (fileSystemImage.ChooseImageDefaultsForMediaType) rather than for what's in the drive (fileSystemImage.ChooseImageDefaults) in detectDiscMedia so i've changed it in my project. Now that I know the size of the inserted disc I can split the file at the right place however the error 0xC0AAB120 is eventually thrown in CreateMediaFileSystem when adding files because it actually goes over the disc limit even though my files are the correct total size. This is due to each file taking up an extra sector than their actual file size on disc (I presume for file metadata in the ISO9660 Directory Records) and there's also some used sectors to start with, neither of which are a problem as I can see how many sectors are used in the image to start with and make sure I take into account an extra sector for each file.
I've noticed something that I don't understand however, with the 30th file there is another sector used and again another for every 32nd file after that. In addition to that for CDs, but not DVDs, there is another 4 sectors used for the 90th file and 4 sectors again for every alternating 92nd/94th file after that (where the 32nd and 92nd/94th file meet, e.g. 926th, 1950th, etc. 5 additional sectors are used). I've done a number of tests with different batches of files and it's been consistent so far but i'm wondering why these extra sectors are used and if it's safe to take these numbers into account to safely split a file to fill the disc properly or does somebody know a better way of measuring sector allocation?
Thanks.
modified on Friday, January 8, 2010 11:51 AM
|
|
|
|
|
Wow, that is some amazing research you've done.
I know there have been numerous posts on Microsoft's Optical Platform Discussion Forum asking how to determine the exact number of sectors that a burn will use and there has not been any good answers. You may want to post your findings on their forum to see if they can confirm or deny your findings.
If you don't mind, I would like to incorporate your findings into my program too.
Thanks,
Eric
|
|
|
|
|
Thanks for the suggestion, posted over there too.
Sure, you've helped me loads.
(Updated a slight error in the first post, 30th and 90th file, not 31st and 91st - added one when typing thinking my test output was 0-indexed but I adjusted for that in the output anyway -_-)
|
|
|
|
|
Hi Eric,
It throws following Unhandled exception as soon as i press Detect Media Button.
System.InvalidCastException: Unable to cast COM object of type 'IMAPI2.Interop.MsftFileSystemImageClass' to interface type 'IMAPI2.Interop.MsftFileSystemImage'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{7CFF842C-7E97-4807-8304-910DD8F7C051}' failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).
at BurnMedia.MainForm.buttonDetectMedia_Click(Object sender, EventArgs e)
I have tried IMAPI 2.0. i am Using standard application of BurnMedia from code project (http://www.codeproject.com/KB/miscctrl/imapi2.aspx).
My OS is XP SP3 so i have insatlled updates Image Mastering API v2.0 (IMAPIv2.0) for Windows XP (KB932716) package from
http://support.microsoft.com/default.aspx/kb/KB932716
but IMAPI 2.0 is not working on the XP.
As per Microsoft IMPAI 2.0 should work on XP also .
Please suggest something.
|
|
|
|
|
Hi Prashant,
Try opening the Command Prompt as administrator and typing in the following commands in the System32 directory:
regsvr32 imapi2.dll
regsvr32 imapi2fs.dll
You should get a message after each one that it was successful, then try running the program again. If you are running an x64 OS, you will need to do the same thing in the SysWow64 directory.
If that doesn't work, go into explorer and find these dlls and look to see if they match the size, version, and date of the dlls listed on http://support.microsoft.com/default.aspx/kb/KB932716[^]
Let me know what happens.
Eric
|
|
|
|
|
Hi Eric,
Thanks for responding quickly.
I have executed
regsvr32 imapi2.dll
regsvr32 imapi2fs.dll
but that didn't work.
but when i checked file verstions and creation dates as you have suggested....they are not matching. like
for 32 bit XP
for file Cdrom.sys file version should be 5.1.2600.3126 but our version is 5.1.2600.3364 and date should be 25-Apr-2007 but our created date is Tuesday, February 28, 2006, 5:30:00 PM ........only size matches. this perticular file exists in C folder at more than one location.
for file Imapi2.dll file version should be 5.1.2600.3126 but our version is 5.1.2600.3364 and date should be 25-Apr-2007 but our created date is Thursday, December 24, 2009, 3:25:45 PM ........only size matches.
for file Imapi2fs.dll file version should be 5.1.2600.3126 but our version is 5.1.2600.3364 and date should be 25-Apr-2007 but our created date is Thursday, December 24, 2009, 3:25:45 PM ........only size matches.
Do i need to change the these files scince versions are not matching ? if yes from where should i get correct files because i have downloaded correct updates from the same page suggested by you. i have taken these downloads : Download the Image Mastering API v2.0 (IMAPIv2.0) for Windows XP (KB932716) package now.
|
|
|
|
|