Win32 API 日本語リファレンス
ホームDevices.Geolocation › GNSS_FIXDATA_2

GNSS_FIXDATA_2

構造体
サイズx64: 2272 バイト / x86: 2272 バイト

サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。

フィールド

フィールドサイズx64x86説明
SizeDWORD4+0+0この構造体のサイズをバイト単位で示すDWORD。
VersionDWORD4+4+4構造体のバージョンを示すDWORD。
FixSessionIDDWORD4+8+8この測位結果が属するセッションを識別するDWORD。
FixTimeStampFILETIME8+12+12測位を行った時刻を示すFILETIME。
IsFinalFixBOOL4+20+20このセッションにおける最終測位結果かを示すBOOL。
FixStatusNTSTATUS4+24+24測位処理の結果ステータスを示すNTSTATUS。
FixLevelOfDetailsDWORD4+28+28含まれる測位データの詳細度を示すDWORD。
BasicDataGNSS_FIXDATA_BASIC_256+32+32基本測位データ(楕円体高度含む)を保持するGNSS_FIXDATA_BASIC_2。
AccuracyDataGNSS_FIXDATA_ACCURACY_2120+88+88測位精度データ(GDOP/TDOP含む)を保持するGNSS_FIXDATA_ACCURACY_2。
SatelliteDataGNSS_FIXDATA_SATELLITE2064+208+208使用衛星情報を保持するGNSS_FIXDATA_SATELLITE。

各言語での定義

#include <windows.h>

// FILETIME  (x64 8 / x86 8 バイト)
typedef struct FILETIME {
    DWORD dwLowDateTime;
    DWORD dwHighDateTime;
} FILETIME;

// GNSS_FIXDATA_BASIC_2  (x64 56 / x86 56 バイト)
typedef struct GNSS_FIXDATA_BASIC_2 {
    DWORD Size;
    DWORD Version;
    DOUBLE Latitude;
    DOUBLE Longitude;
    DOUBLE Altitude;
    DOUBLE Speed;
    DOUBLE Heading;
    DOUBLE AltitudeEllipsoid;
} GNSS_FIXDATA_BASIC_2;

// GNSS_FIXDATA_ACCURACY_2  (x64 120 / x86 120 バイト)
typedef struct GNSS_FIXDATA_ACCURACY_2 {
    DWORD Size;
    DWORD Version;
    DOUBLE HorizontalAccuracy;
    DOUBLE HorizontalErrorMajorAxis;
    DOUBLE HorizontalErrorMinorAxis;
    DOUBLE HorizontalErrorAngle;
    DOUBLE HeadingAccuracy;
    DOUBLE AltitudeAccuracy;
    DOUBLE SpeedAccuracy;
    DWORD HorizontalConfidence;
    DWORD HeadingConfidence;
    DWORD AltitudeConfidence;
    DWORD SpeedConfidence;
    DOUBLE PositionDilutionOfPrecision;
    DOUBLE HorizontalDilutionOfPrecision;
    DOUBLE VerticalDilutionOfPrecision;
    DOUBLE GeometricDilutionOfPrecision;
    DOUBLE TimeDilutionOfPrecision;
} GNSS_FIXDATA_ACCURACY_2;

// GNSS_SATELLITEINFO  (x64 32 / x86 32 バイト)
typedef struct GNSS_SATELLITEINFO {
    DWORD SatelliteId;
    BOOL UsedInPositiong;
    DOUBLE Elevation;
    DOUBLE Azimuth;
    DOUBLE SignalToNoiseRatio;
} GNSS_SATELLITEINFO;

// GNSS_FIXDATA_SATELLITE  (x64 2064 / x86 2064 バイト)
typedef struct GNSS_FIXDATA_SATELLITE {
    DWORD Size;
    DWORD Version;
    DWORD SatelliteCount;
    GNSS_SATELLITEINFO SatelliteArray[64];
} GNSS_FIXDATA_SATELLITE;

// GNSS_FIXDATA_2  (x64 2272 / x86 2272 バイト)
typedef struct GNSS_FIXDATA_2 {
    DWORD Size;
    DWORD Version;
    DWORD FixSessionID;
    FILETIME FixTimeStamp;
    BOOL IsFinalFix;
    NTSTATUS FixStatus;
    DWORD FixLevelOfDetails;
    GNSS_FIXDATA_BASIC_2 BasicData;
    GNSS_FIXDATA_ACCURACY_2 AccuracyData;
    GNSS_FIXDATA_SATELLITE SatelliteData;
} GNSS_FIXDATA_2;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct FILETIME
{
    public uint dwLowDateTime;
    public uint dwHighDateTime;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct GNSS_FIXDATA_BASIC_2
{
    public uint Size;
    public uint Version;
    public double Latitude;
    public double Longitude;
    public double Altitude;
    public double Speed;
    public double Heading;
    public double AltitudeEllipsoid;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct GNSS_FIXDATA_ACCURACY_2
{
    public uint Size;
    public uint Version;
    public double HorizontalAccuracy;
    public double HorizontalErrorMajorAxis;
    public double HorizontalErrorMinorAxis;
    public double HorizontalErrorAngle;
    public double HeadingAccuracy;
    public double AltitudeAccuracy;
    public double SpeedAccuracy;
    public uint HorizontalConfidence;
    public uint HeadingConfidence;
    public uint AltitudeConfidence;
    public uint SpeedConfidence;
    public double PositionDilutionOfPrecision;
    public double HorizontalDilutionOfPrecision;
    public double VerticalDilutionOfPrecision;
    public double GeometricDilutionOfPrecision;
    public double TimeDilutionOfPrecision;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct GNSS_SATELLITEINFO
{
    public uint SatelliteId;
    [MarshalAs(UnmanagedType.Bool)] public bool UsedInPositiong;
    public double Elevation;
    public double Azimuth;
    public double SignalToNoiseRatio;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct GNSS_FIXDATA_SATELLITE
{
    public uint Size;
    public uint Version;
    public uint SatelliteCount;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)] public GNSS_SATELLITEINFO[] SatelliteArray;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct GNSS_FIXDATA_2
{
    public uint Size;
    public uint Version;
    public uint FixSessionID;
    public FILETIME FixTimeStamp;
    [MarshalAs(UnmanagedType.Bool)] public bool IsFinalFix;
    public int FixStatus;
    public uint FixLevelOfDetails;
    public GNSS_FIXDATA_BASIC_2 BasicData;
    public GNSS_FIXDATA_ACCURACY_2 AccuracyData;
    public GNSS_FIXDATA_SATELLITE SatelliteData;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure FILETIME
    Public dwLowDateTime As UInteger
    Public dwHighDateTime As UInteger
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure GNSS_FIXDATA_BASIC_2
    Public Size As UInteger
    Public Version As UInteger
    Public Latitude As Double
    Public Longitude As Double
    Public Altitude As Double
    Public Speed As Double
    Public Heading As Double
    Public AltitudeEllipsoid As Double
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure GNSS_FIXDATA_ACCURACY_2
    Public Size As UInteger
    Public Version As UInteger
    Public HorizontalAccuracy As Double
    Public HorizontalErrorMajorAxis As Double
    Public HorizontalErrorMinorAxis As Double
    Public HorizontalErrorAngle As Double
    Public HeadingAccuracy As Double
    Public AltitudeAccuracy As Double
    Public SpeedAccuracy As Double
    Public HorizontalConfidence As UInteger
    Public HeadingConfidence As UInteger
    Public AltitudeConfidence As UInteger
    Public SpeedConfidence As UInteger
    Public PositionDilutionOfPrecision As Double
    Public HorizontalDilutionOfPrecision As Double
    Public VerticalDilutionOfPrecision As Double
    Public GeometricDilutionOfPrecision As Double
    Public TimeDilutionOfPrecision As Double
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure GNSS_SATELLITEINFO
    Public SatelliteId As UInteger
    <MarshalAs(UnmanagedType.Bool)> Public UsedInPositiong As Boolean
    Public Elevation As Double
    Public Azimuth As Double
    Public SignalToNoiseRatio As Double
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure GNSS_FIXDATA_SATELLITE
    Public Size As UInteger
    Public Version As UInteger
    Public SatelliteCount As UInteger
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=64)> Public SatelliteArray() As GNSS_SATELLITEINFO
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure GNSS_FIXDATA_2
    Public Size As UInteger
    Public Version As UInteger
    Public FixSessionID As UInteger
    Public FixTimeStamp As FILETIME
    <MarshalAs(UnmanagedType.Bool)> Public IsFinalFix As Boolean
    Public FixStatus As Integer
    Public FixLevelOfDetails As UInteger
    Public BasicData As GNSS_FIXDATA_BASIC_2
    Public AccuracyData As GNSS_FIXDATA_ACCURACY_2
    Public SatelliteData As GNSS_FIXDATA_SATELLITE
End Structure
import ctypes
from ctypes import wintypes

class FILETIME(ctypes.Structure):
    _fields_ = [
        ("dwLowDateTime", wintypes.DWORD),
        ("dwHighDateTime", wintypes.DWORD),
    ]

class GNSS_FIXDATA_BASIC_2(ctypes.Structure):
    _fields_ = [
        ("Size", wintypes.DWORD),
        ("Version", wintypes.DWORD),
        ("Latitude", ctypes.c_double),
        ("Longitude", ctypes.c_double),
        ("Altitude", ctypes.c_double),
        ("Speed", ctypes.c_double),
        ("Heading", ctypes.c_double),
        ("AltitudeEllipsoid", ctypes.c_double),
    ]

class GNSS_FIXDATA_ACCURACY_2(ctypes.Structure):
    _fields_ = [
        ("Size", wintypes.DWORD),
        ("Version", wintypes.DWORD),
        ("HorizontalAccuracy", ctypes.c_double),
        ("HorizontalErrorMajorAxis", ctypes.c_double),
        ("HorizontalErrorMinorAxis", ctypes.c_double),
        ("HorizontalErrorAngle", ctypes.c_double),
        ("HeadingAccuracy", ctypes.c_double),
        ("AltitudeAccuracy", ctypes.c_double),
        ("SpeedAccuracy", ctypes.c_double),
        ("HorizontalConfidence", wintypes.DWORD),
        ("HeadingConfidence", wintypes.DWORD),
        ("AltitudeConfidence", wintypes.DWORD),
        ("SpeedConfidence", wintypes.DWORD),
        ("PositionDilutionOfPrecision", ctypes.c_double),
        ("HorizontalDilutionOfPrecision", ctypes.c_double),
        ("VerticalDilutionOfPrecision", ctypes.c_double),
        ("GeometricDilutionOfPrecision", ctypes.c_double),
        ("TimeDilutionOfPrecision", ctypes.c_double),
    ]

class GNSS_SATELLITEINFO(ctypes.Structure):
    _fields_ = [
        ("SatelliteId", wintypes.DWORD),
        ("UsedInPositiong", wintypes.BOOL),
        ("Elevation", ctypes.c_double),
        ("Azimuth", ctypes.c_double),
        ("SignalToNoiseRatio", ctypes.c_double),
    ]

class GNSS_FIXDATA_SATELLITE(ctypes.Structure):
    _fields_ = [
        ("Size", wintypes.DWORD),
        ("Version", wintypes.DWORD),
        ("SatelliteCount", wintypes.DWORD),
        ("SatelliteArray", GNSS_SATELLITEINFO * 64),
    ]

class GNSS_FIXDATA_2(ctypes.Structure):
    _fields_ = [
        ("Size", wintypes.DWORD),
        ("Version", wintypes.DWORD),
        ("FixSessionID", wintypes.DWORD),
        ("FixTimeStamp", FILETIME),
        ("IsFinalFix", wintypes.BOOL),
        ("FixStatus", ctypes.c_int),
        ("FixLevelOfDetails", wintypes.DWORD),
        ("BasicData", GNSS_FIXDATA_BASIC_2),
        ("AccuracyData", GNSS_FIXDATA_ACCURACY_2),
        ("SatelliteData", GNSS_FIXDATA_SATELLITE),
    ]
#[repr(C)]
pub struct FILETIME {
    pub dwLowDateTime: u32,
    pub dwHighDateTime: u32,
}

#[repr(C)]
pub struct GNSS_FIXDATA_BASIC_2 {
    pub Size: u32,
    pub Version: u32,
    pub Latitude: f64,
    pub Longitude: f64,
    pub Altitude: f64,
    pub Speed: f64,
    pub Heading: f64,
    pub AltitudeEllipsoid: f64,
}

#[repr(C)]
pub struct GNSS_FIXDATA_ACCURACY_2 {
    pub Size: u32,
    pub Version: u32,
    pub HorizontalAccuracy: f64,
    pub HorizontalErrorMajorAxis: f64,
    pub HorizontalErrorMinorAxis: f64,
    pub HorizontalErrorAngle: f64,
    pub HeadingAccuracy: f64,
    pub AltitudeAccuracy: f64,
    pub SpeedAccuracy: f64,
    pub HorizontalConfidence: u32,
    pub HeadingConfidence: u32,
    pub AltitudeConfidence: u32,
    pub SpeedConfidence: u32,
    pub PositionDilutionOfPrecision: f64,
    pub HorizontalDilutionOfPrecision: f64,
    pub VerticalDilutionOfPrecision: f64,
    pub GeometricDilutionOfPrecision: f64,
    pub TimeDilutionOfPrecision: f64,
}

#[repr(C)]
pub struct GNSS_SATELLITEINFO {
    pub SatelliteId: u32,
    pub UsedInPositiong: i32,
    pub Elevation: f64,
    pub Azimuth: f64,
    pub SignalToNoiseRatio: f64,
}

#[repr(C)]
pub struct GNSS_FIXDATA_SATELLITE {
    pub Size: u32,
    pub Version: u32,
    pub SatelliteCount: u32,
    pub SatelliteArray: [GNSS_SATELLITEINFO; 64],
}

#[repr(C)]
pub struct GNSS_FIXDATA_2 {
    pub Size: u32,
    pub Version: u32,
    pub FixSessionID: u32,
    pub FixTimeStamp: FILETIME,
    pub IsFinalFix: i32,
    pub FixStatus: i32,
    pub FixLevelOfDetails: u32,
    pub BasicData: GNSS_FIXDATA_BASIC_2,
    pub AccuracyData: GNSS_FIXDATA_ACCURACY_2,
    pub SatelliteData: GNSS_FIXDATA_SATELLITE,
}
import "golang.org/x/sys/windows"

type FILETIME struct {
	dwLowDateTime uint32
	dwHighDateTime uint32
}

type GNSS_FIXDATA_BASIC_2 struct {
	Size uint32
	Version uint32
	Latitude float64
	Longitude float64
	Altitude float64
	Speed float64
	Heading float64
	AltitudeEllipsoid float64
}

type GNSS_FIXDATA_ACCURACY_2 struct {
	Size uint32
	Version uint32
	HorizontalAccuracy float64
	HorizontalErrorMajorAxis float64
	HorizontalErrorMinorAxis float64
	HorizontalErrorAngle float64
	HeadingAccuracy float64
	AltitudeAccuracy float64
	SpeedAccuracy float64
	HorizontalConfidence uint32
	HeadingConfidence uint32
	AltitudeConfidence uint32
	SpeedConfidence uint32
	PositionDilutionOfPrecision float64
	HorizontalDilutionOfPrecision float64
	VerticalDilutionOfPrecision float64
	GeometricDilutionOfPrecision float64
	TimeDilutionOfPrecision float64
}

type GNSS_SATELLITEINFO struct {
	SatelliteId uint32
	UsedInPositiong int32
	Elevation float64
	Azimuth float64
	SignalToNoiseRatio float64
}

type GNSS_FIXDATA_SATELLITE struct {
	Size uint32
	Version uint32
	SatelliteCount uint32
	SatelliteArray [64]GNSS_SATELLITEINFO
}

type GNSS_FIXDATA_2 struct {
	Size uint32
	Version uint32
	FixSessionID uint32
	FixTimeStamp FILETIME
	IsFinalFix int32
	FixStatus int32
	FixLevelOfDetails uint32
	BasicData GNSS_FIXDATA_BASIC_2
	AccuracyData GNSS_FIXDATA_ACCURACY_2
	SatelliteData GNSS_FIXDATA_SATELLITE
}
type
  FILETIME = record
    dwLowDateTime: DWORD;
    dwHighDateTime: DWORD;
  end;

  GNSS_FIXDATA_BASIC_2 = record
    Size: DWORD;
    Version: DWORD;
    Latitude: Double;
    Longitude: Double;
    Altitude: Double;
    Speed: Double;
    Heading: Double;
    AltitudeEllipsoid: Double;
  end;

  GNSS_FIXDATA_ACCURACY_2 = record
    Size: DWORD;
    Version: DWORD;
    HorizontalAccuracy: Double;
    HorizontalErrorMajorAxis: Double;
    HorizontalErrorMinorAxis: Double;
    HorizontalErrorAngle: Double;
    HeadingAccuracy: Double;
    AltitudeAccuracy: Double;
    SpeedAccuracy: Double;
    HorizontalConfidence: DWORD;
    HeadingConfidence: DWORD;
    AltitudeConfidence: DWORD;
    SpeedConfidence: DWORD;
    PositionDilutionOfPrecision: Double;
    HorizontalDilutionOfPrecision: Double;
    VerticalDilutionOfPrecision: Double;
    GeometricDilutionOfPrecision: Double;
    TimeDilutionOfPrecision: Double;
  end;

  GNSS_SATELLITEINFO = record
    SatelliteId: DWORD;
    UsedInPositiong: BOOL;
    Elevation: Double;
    Azimuth: Double;
    SignalToNoiseRatio: Double;
  end;

  GNSS_FIXDATA_SATELLITE = record
    Size: DWORD;
    Version: DWORD;
    SatelliteCount: DWORD;
    SatelliteArray: array[0..63] of GNSS_SATELLITEINFO;
  end;

  GNSS_FIXDATA_2 = record
    Size: DWORD;
    Version: DWORD;
    FixSessionID: DWORD;
    FixTimeStamp: FILETIME;
    IsFinalFix: BOOL;
    FixStatus: Integer;
    FixLevelOfDetails: DWORD;
    BasicData: GNSS_FIXDATA_BASIC_2;
    AccuracyData: GNSS_FIXDATA_ACCURACY_2;
    SatelliteData: GNSS_FIXDATA_SATELLITE;
  end;
const FILETIME = extern struct {
    dwLowDateTime: u32,
    dwHighDateTime: u32,
};

const GNSS_FIXDATA_BASIC_2 = extern struct {
    Size: u32,
    Version: u32,
    Latitude: f64,
    Longitude: f64,
    Altitude: f64,
    Speed: f64,
    Heading: f64,
    AltitudeEllipsoid: f64,
};

const GNSS_FIXDATA_ACCURACY_2 = extern struct {
    Size: u32,
    Version: u32,
    HorizontalAccuracy: f64,
    HorizontalErrorMajorAxis: f64,
    HorizontalErrorMinorAxis: f64,
    HorizontalErrorAngle: f64,
    HeadingAccuracy: f64,
    AltitudeAccuracy: f64,
    SpeedAccuracy: f64,
    HorizontalConfidence: u32,
    HeadingConfidence: u32,
    AltitudeConfidence: u32,
    SpeedConfidence: u32,
    PositionDilutionOfPrecision: f64,
    HorizontalDilutionOfPrecision: f64,
    VerticalDilutionOfPrecision: f64,
    GeometricDilutionOfPrecision: f64,
    TimeDilutionOfPrecision: f64,
};

const GNSS_SATELLITEINFO = extern struct {
    SatelliteId: u32,
    UsedInPositiong: i32,
    Elevation: f64,
    Azimuth: f64,
    SignalToNoiseRatio: f64,
};

const GNSS_FIXDATA_SATELLITE = extern struct {
    Size: u32,
    Version: u32,
    SatelliteCount: u32,
    SatelliteArray: [64]GNSS_SATELLITEINFO,
};

const GNSS_FIXDATA_2 = extern struct {
    Size: u32,
    Version: u32,
    FixSessionID: u32,
    FixTimeStamp: FILETIME,
    IsFinalFix: i32,
    FixStatus: i32,
    FixLevelOfDetails: u32,
    BasicData: GNSS_FIXDATA_BASIC_2,
    AccuracyData: GNSS_FIXDATA_ACCURACY_2,
    SatelliteData: GNSS_FIXDATA_SATELLITE,
};
type
  FILETIME {.bycopy.} = object
    dwLowDateTime: uint32
    dwHighDateTime: uint32

  GNSS_FIXDATA_BASIC_2 {.bycopy.} = object
    Size: uint32
    Version: uint32
    Latitude: float64
    Longitude: float64
    Altitude: float64
    Speed: float64
    Heading: float64
    AltitudeEllipsoid: float64

  GNSS_FIXDATA_ACCURACY_2 {.bycopy.} = object
    Size: uint32
    Version: uint32
    HorizontalAccuracy: float64
    HorizontalErrorMajorAxis: float64
    HorizontalErrorMinorAxis: float64
    HorizontalErrorAngle: float64
    HeadingAccuracy: float64
    AltitudeAccuracy: float64
    SpeedAccuracy: float64
    HorizontalConfidence: uint32
    HeadingConfidence: uint32
    AltitudeConfidence: uint32
    SpeedConfidence: uint32
    PositionDilutionOfPrecision: float64
    HorizontalDilutionOfPrecision: float64
    VerticalDilutionOfPrecision: float64
    GeometricDilutionOfPrecision: float64
    TimeDilutionOfPrecision: float64

  GNSS_SATELLITEINFO {.bycopy.} = object
    SatelliteId: uint32
    UsedInPositiong: int32
    Elevation: float64
    Azimuth: float64
    SignalToNoiseRatio: float64

  GNSS_FIXDATA_SATELLITE {.bycopy.} = object
    Size: uint32
    Version: uint32
    SatelliteCount: uint32
    SatelliteArray: array[64, GNSS_SATELLITEINFO]

  GNSS_FIXDATA_2 {.bycopy.} = object
    Size: uint32
    Version: uint32
    FixSessionID: uint32
    FixTimeStamp: FILETIME
    IsFinalFix: int32
    FixStatus: int32
    FixLevelOfDetails: uint32
    BasicData: GNSS_FIXDATA_BASIC_2
    AccuracyData: GNSS_FIXDATA_ACCURACY_2
    SatelliteData: GNSS_FIXDATA_SATELLITE
struct FILETIME
{
    uint dwLowDateTime;
    uint dwHighDateTime;
}

struct GNSS_FIXDATA_BASIC_2
{
    uint Size;
    uint Version;
    double Latitude;
    double Longitude;
    double Altitude;
    double Speed;
    double Heading;
    double AltitudeEllipsoid;
}

struct GNSS_FIXDATA_ACCURACY_2
{
    uint Size;
    uint Version;
    double HorizontalAccuracy;
    double HorizontalErrorMajorAxis;
    double HorizontalErrorMinorAxis;
    double HorizontalErrorAngle;
    double HeadingAccuracy;
    double AltitudeAccuracy;
    double SpeedAccuracy;
    uint HorizontalConfidence;
    uint HeadingConfidence;
    uint AltitudeConfidence;
    uint SpeedConfidence;
    double PositionDilutionOfPrecision;
    double HorizontalDilutionOfPrecision;
    double VerticalDilutionOfPrecision;
    double GeometricDilutionOfPrecision;
    double TimeDilutionOfPrecision;
}

struct GNSS_SATELLITEINFO
{
    uint SatelliteId;
    int UsedInPositiong;
    double Elevation;
    double Azimuth;
    double SignalToNoiseRatio;
}

struct GNSS_FIXDATA_SATELLITE
{
    uint Size;
    uint Version;
    uint SatelliteCount;
    GNSS_SATELLITEINFO[64] SatelliteArray;
}

struct GNSS_FIXDATA_2
{
    uint Size;
    uint Version;
    uint FixSessionID;
    FILETIME FixTimeStamp;
    int IsFinalFix;
    int FixStatus;
    uint FixLevelOfDetails;
    GNSS_FIXDATA_BASIC_2 BasicData;
    GNSS_FIXDATA_ACCURACY_2 AccuracyData;
    GNSS_FIXDATA_SATELLITE SatelliteData;
}

HSP用 定義

HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; GNSS_FIXDATA_2 サイズ: 2272 バイト(x64)
dim st, 568    ; 4byte整数×568(構造体サイズ 2272 / 4 切り上げ)
; Size : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; Version : DWORD (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; FixSessionID : DWORD (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; FixTimeStamp : FILETIME (+12, 8byte)  varptr(st)+12 を基点に操作(8byte:入れ子/配列)
; IsFinalFix : BOOL (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; FixStatus : NTSTATUS (+24, 4byte)  st.6 = 値  /  値 = st.6   (lpoke/lpeek も可)
; FixLevelOfDetails : DWORD (+28, 4byte)  st.7 = 値  /  値 = st.7   (lpoke/lpeek も可)
; BasicData : GNSS_FIXDATA_BASIC_2 (+32, 56byte)  varptr(st)+32 を基点に操作(56byte:入れ子/配列)
; AccuracyData : GNSS_FIXDATA_ACCURACY_2 (+88, 120byte)  varptr(st)+88 を基点に操作(120byte:入れ子/配列)
; SatelliteData : GNSS_FIXDATA_SATELLITE (+208, 2064byte)  varptr(st)+208 を基点に操作(2064byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global FILETIME
    #field int dwLowDateTime
    #field int dwHighDateTime
#endstruct

#defstruct global GNSS_FIXDATA_BASIC_2
    #field int Size
    #field int Version
    #field double Latitude
    #field double Longitude
    #field double Altitude
    #field double Speed
    #field double Heading
    #field double AltitudeEllipsoid
#endstruct

#defstruct global GNSS_FIXDATA_ACCURACY_2
    #field int Size
    #field int Version
    #field double HorizontalAccuracy
    #field double HorizontalErrorMajorAxis
    #field double HorizontalErrorMinorAxis
    #field double HorizontalErrorAngle
    #field double HeadingAccuracy
    #field double AltitudeAccuracy
    #field double SpeedAccuracy
    #field int HorizontalConfidence
    #field int HeadingConfidence
    #field int AltitudeConfidence
    #field int SpeedConfidence
    #field double PositionDilutionOfPrecision
    #field double HorizontalDilutionOfPrecision
    #field double VerticalDilutionOfPrecision
    #field double GeometricDilutionOfPrecision
    #field double TimeDilutionOfPrecision
#endstruct

#defstruct global GNSS_SATELLITEINFO
    #field int SatelliteId
    #field bool UsedInPositiong
    #field double Elevation
    #field double Azimuth
    #field double SignalToNoiseRatio
#endstruct

#defstruct global GNSS_FIXDATA_SATELLITE
    #field int Size
    #field int Version
    #field int SatelliteCount
    #field GNSS_SATELLITEINFO SatelliteArray 64
#endstruct

#defstruct global GNSS_FIXDATA_2
    #field int Size
    #field int Version
    #field int FixSessionID
    #field FILETIME FixTimeStamp
    #field bool IsFinalFix
    #field int FixStatus
    #field int FixLevelOfDetails
    #field GNSS_FIXDATA_BASIC_2 BasicData
    #field GNSS_FIXDATA_ACCURACY_2 AccuracyData
    #field GNSS_FIXDATA_SATELLITE SatelliteData
#endstruct

stdim st, GNSS_FIXDATA_2        ; NSTRUCT 変数を確保
st->Size = 100
mes "Size=" + st->Size