You need a Sub instead of a Function:
_dbObj.GetRowData("select * from mytable where myfield = @myfield", param,
Sub(reader As IDataReader)
While reader.Read()
foo.p1 = reader.GetString(reader.GetOrdinal("field1"))
foo.p2 = reader.GetInt32(reader.GetOrdinal("field2"))
foo.p3 = reader.GetInt32(reader.GetOrdinal("field3"))
End While
End Sub)