class TurboRex::MSRPC::MIDL::TypeFormatString::CommonPtr
Constants
- FC_ALLOCATE_ALL_NODES
- FC_ALLOCED_ON_STACK
- FC_DONT_FREE
- FC_POINTER_DEREF
- FC_SIMPLE_POINTER
Public Instance Methods
decompile()
click to toggle source
# File lib/turborex/msrpc/midl.rb, line 539 def decompile raw = @typefs_stream.read(4) header = @cparser.decode_c_struct('CommonPtr_Header_t', raw) case header.PointerType when FC_RP pointer_type = :ref when FC_UP pointer_type = :unique when FC_FP pointer_type = :full when FC_OP pointer_type = :unknown # Not Implement end if (header.PointerAttributes & FC_SIMPLE_POINTER) == FC_SIMPLE_POINTER struct = @cparser.decode_c_struct('CommonPtr_Simple_t', raw) simple_type = struct.SimpleType _stream = @typefs_stream.dup _stream.base_drift(2) pointee = SimpleType.new(_stream, @cparser).decompile return DataType::Pointer.new(pointee, pointer_type) else cstruct = @cparser.find_c_struct('CommonPtr_Complex_t') struct = @cparser.decode_c_struct('CommonPtr_Complex_t', raw) desc_offset = struct.Offset _stream = @typefs_stream.dup _stream.base_drift(cstruct.offsetof(@cparser, 'Offset')+desc_offset) return TypeFormatString.new(_stream, @cparser).decompile end end