You need to use 64-bit structures instead 32-bit ones for a 64-bit process:
Code:
Private Type HDITEM64
    Mask       As Long
    cxy        As Long
    pszText    As Currency
    hbm        As Currency
    cchTextMax As Long
    fmt        As Long
    lParam     As Currency
    iImage     As Long
    iOrder     As Long
    type       As Long
    lPad       As Long
    pvFilter   As Currency
    state      As Long
End Type

Private Type LVITEM64
    Mask       As Long
    iItem      As Long
    iSubItem   As Long
    state      As Long
    StateMask  As Long
    lPad       As Long
    pszText    As Currency
    cchTextMax As Long
    iImage     As Long
    lParam     As Currency
    iIndent    As Long
    iGroupId   As Long
    cColumns   As Long
    lPad2      As Long
    puColumns  As Currency
    piColFmt   As Currency
    iGroup     As Long
End Type
Currency = a pointer. Don't forget to translate Long->Currency, for example:
Code:
PutMem4 tHDI.pszText, lngBuffer