Opened 6 months ago

Closed 6 months ago

#3971 closed Bug (No Bug)

Integer not handled properly when calling object method

Reported by: BiatuAutMiahn@… Owned by:
Milestone: Component: AutoIt
Version: Severity: None
Keywords: Cc:

Description (last modified by mLipok)

#include <WinAPIError.au3>
Global $oErrorHandler = ObjEvent("AutoIt.Error", "COMErrorHandler")

Func COMErrorHandler()
    Local $errorDescription = $oErrorHandler.description
    ConsoleWrite("COM Error occurred: " & @error & @CRLF & "Description: " & $errorDescription)

$wbemFlagReturnImmediately = 0x10
$wbemFlagForwardOnly = 0x20
$colItems = ""

$Output = $Output & "Computer: " & $strComputer  & @CRLF
$Output = $Output & "==========================================" & @CRLF
$objWMIService = ObjGet("winmgmts:\\.\root\Microsoft\Windows\Storage")
$colItems = $objWMIService.ExecQuery('SELECT * FROM MSFT_Disk', "WQL", _
                                          $wbemFlagReturnImmediately + $wbemFlagForwardOnly)

Local $iMBytes=1024*1024
Local $iGBytes=1024*$iMBytes
Local $iSizeEfi=512*$iMBytes
Local $iSizeMsr=128*$iMBytes
Local $iSizeRec=$iGBytes

If IsObj($colItems) then
   For $objItem In $colItems
      If $objItem.Path<>"\\?\usbstor#disk&ven_iodd&prod__vhdd_gadget_1&rev_#230603390000000092&3#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}" Then ContinueLoop
      $objItem.CreatePartition($iSizeEfi); works
      $objItem.CreatePartition($iSizeMsr); works
      $objItem.CreatePartition(2147483647)&@CRLF); Works
      $objItem.CreatePartition(2147483648)&@CRLF); Fails
      $objItem.CreatePartition(16*$iGBytes)&@CRLF); Fails
   Msgbox(0,"WMI Output","No WMI Objects Found for class: " & "MSFT_Disk" )

Func ConvertSize($iSize, $iPrecision = 2)
    Local Const $aUnits = StringSplit("|K|M|G|T|P|E|Z|Y",'|',2)
    Local $iUnit = Int(Log($iSize)/Log(1024))
    Return String(Round($iSize / 1024 ^ $iUnit, $iPrecision)) & ' ' & $aUnits[$iUnit] & "B"

Calling CreatePartition with any integer greater than 2147483647 fails with Type Mismatch.

Attachments (0)

Change History (3)

comment:1 Changed 6 months ago by BiatuAutMiahn@…

Decided to port to C++, but in the process I ran into an issue where The Size property of MSFT_Disk was being return as a string instead of UInt32 as states in MSFN, eventually I ran into this, where they mention windows returns a string on purpose, then I had the thought...what if I pass the partition size as a string? Well that did it.

comment:2 Changed 6 months ago by mLipok

  • Description modified (diff)

comment:3 Changed 6 months ago by Jpm

  • Resolution set to No Bug
  • Status changed from new to closed

I close the ticket as no bug

Guidelines for posting comments:

  • You cannot re-open a ticket but you may still leave a comment if you have additional information to add.
  • In-depth discussions should take place on the forum.

For more information see the full version of the ticket guidelines here.

Add Comment

Modify Ticket

as closed The ticket will remain with no owner.

E-mail address and user name can be saved in the Preferences.

Note: See TracTickets for help on using tickets.