If StringLeft(_ArrayToString(DllCall("Ole32.dll", 'int', 'StgIsStorageFile', 'wstr', $cUsrFile1c), "#"),2) <> "0#" Then Exit MsgBox(16, '<Error!>', $cUsrFile1c & " == if NOT iStorage-file !");
MsgBox(64, '<Ok>', $cUsrFile1c & " is iStorage-file ...");
Local $iMode = BitOR(0x00400000, 0, 0x00000040);
Local $cMsg=""
Local $aStgOpened = DllCall("Ole32.dll", 'LONG', 'StgOpenStorage', 'wstr', $cUsrFile1c, 'ptr', 0, 'int', $iMode, 'ptr', 0, 'int', 0, 'ptr*', 0)
If @error Or Not IsArray($aStgOpened) Then Exit MsgBox(16, 'debug: <StgOpenStorage>', 'DllCall ошибка ' & @error)
If Not $aStgOpened[0] = $S_OK Then Exit MsgBox(16, 'debug: <StgOpenStorage>', 'Результат не $S_OK ' & Hex($aStgOpened[0]))
Local $pIStorage = $aStgOpened[6]
MsgBox(64, 'debug: <StgOpenStorage>', 'Указатель на IStorage ' & $pIStorage)
If Not IsArray($aStgOpened) Then Exit MsgBox (16, "debug: <StgOpenStorage>", $cMsg & @CRLF & "(ERROR) Return(" & VarGetType($aStgOpened) & ") = " & $aStgOpened )
$cMsg &= @CRLF & "Return Array = " & UBound($aStgOpened)
If UBound($aStgOpened) = 0 Then Exir MsgBox (16, "debug: <StgOpenStorage ERROR>", $cMsg)
MsgBox (64, "debug: <StgOpenStorage>", $cMsg & " " & $aStgOpened[0])
_ArrayDisplay( $aStgOpened, 'debug: <StgOpenStorage>')
$cMsg = ""
Local $cStreamName = "Container.Contents" & ChrW(0x0000)
Local $aStreamOpened = DllCall("Ole32.dll", 'LONG', 'OpenStream', 'wstr', $cStreamName, 'ptr', 0, 'int', $iMode, 'ptr', 0, 'ptr*', 0)
If @error Or Not IsArray($StreamOpened) Then Exit MsgBox(16, 'debug: <OpenStream>', 'DllCall ошибка ' & @error) ; ТУТ: DllCall ошибка 3