in reply to Re^6: Use Windows wimgapi dll
in thread Use Windows wimgapi dll

I added GetLastError ... here is my errormsg. it die when trying to call WIMCreateFile. The paramter is incorrect
use Win32::API; use Data::Dumper; use Win32; use strict; use warnings; use Encode qw( encode ); my $filehandler = encode('UCS-2le', "C:\\test.wim\0"); my $wimfile = new Win32::API("wimgapi", "WIMCreateFile", ['P','C','C', +'C','C','N'], 'C')or die Win32::FormatMessage(Win32::GetLastError); my $LLHandle = $wimfile->Call($filehandler, 'WIM_GENERIC_WRITE', 'WIM_CREATE_NEW', 0, 0, 0)or die Win32::FormatMessage(Win32::GetLas +tError); print $LLHandle;
any ideas =) THANK YOU

Replies are listed 'Best First'.
Re^8: Use Windows wimgapi dll
by Anonymous Monk on Aug 04, 2008 at 19:15 UTC
    ok i made it ... i had to replace C with N for Dwords. Thanks for your help ...
Re^8: Use Windows wimgapi dll
by Anonymous Monk on Aug 06, 2008 at 11:27 UTC
    What using strict/warning should have pointed out is that WIM_GENERIC_WRITE, WIM_CREATE_NEW are undefined. Changing that to
    'WIM_GENERIC_WRITE', 'WIM_CREATE_NEW',
    is garbage (probably turned into 0). You need actual numbers, like
    #!/usr/bin/perl -- use strict; use warnings; use constant WIM_Flag_Verify => 0x00000002; use constant WIM_Flag_Index => 0x00000004; use constant WIM_Flag_No_Apply => 0x00000008; use constant WIM_Generic_Read => 0x80000000; use constant WIM_Generic_Write => 0x40000000; use constant WIM_Open_Existing => 0x00000003; use constant WIM_Flag_Share_Write => 0x00000040; use constant WIM_Flag_FileInfo => 0x00000080; use constant WIM_Compress_None => 0x00000000; use constant WIM_Create_New => 0x00000001; use constant WIM_Create_Always => 0x00000002; die WIM_Generic_Write; __END__ 1073741824 at - line 16.
      Yeah i defined them using constants but i´m missing flags like wim_compress_max ...