ネイティブ構造体

概要

ネイティブ関数を呼び出すときの構造体を表す種類です。
ネイティブ構造体は、格納したい変数を順番に定義した種類から継承することで利用します。

ネイティブ構造体を継承した種類のオブジェクトを作成すると、構造体の変数のサイズに応じたメモリ領域が確保されます。
ネイティブ関数に構造体を渡した際に、オブジェクトの変数の値がメモリ領域に格納され、ネイティブ関数の実行後、値が変数に格納されます。

注意! この機能を利用するには、C/C++言語など他のプログラミング言語の知識が必要になります。この機能を利用した外部DLLの呼び出し方法については、利用するライブラリの情報をご参照ください。

抽象種類

手順

自分を初期化する

自分の種類から構造体のサイズを計算して構造体を確定します。
この手順は、継承した種類のはじめの手順で必ず実行する必要があります。

【変数名】を【データ型】に設定する

この種類を継承した種類内での、指定した変数のデータ型を.NET Frameworkのデータ型で指定します。
プロデルで使用できないデータ型を指定する必要がある場合に使用します。

【変数名】を【文字数】文字設定する

この種類を継承した種類内での、指定した変数で確保する文字数を指定します。
構造体を確定する際に、文字列変数については、ここで指定した文字数が確保されます。

自分をバイナリ化する:バイナリデータ

この構造体を表現するバイナリデータを返します。

自分を【バイナリデータ】から構築する

バイナリデータからこの構造体に合わせて値を代入します。

設定項目

設定項目   説明
構造体バイト数 整数 構造体のサイズをバイト数で表します
ポインタ値 整数 ポインタそのものの値を表します

サンプルコード

GetCursorPos関数を呼び出す

Win32APIのGetCursorPos関数を呼び出して、マウスカーソルの座標を取得します。

カーソル座標取得は、ネイティブ関数(ファイル名「user32.dll」,関数名「GetCursorPos」)を作る
カーソル座標取得の戻り値型は、整数
カーソル座標取得の引数型一覧は、{POINT}

PTというPOINTを作る
カーソル座標取得を{PT}で呼び出す
{PTのX,PTのY}を報告

POINTとは
	ネイティブ構造体を受け継ぐ
	+x:整数
	+y:整数

	はじめの手順
		自分で初期化する
	終わり
終わり

GetVersionEx関数を呼び出す

GetVersionEx関数を呼び出して、Windowsのバージョン情報を取得します。

OSバージョン取得は、ネイティブ関数(ファイル名「kernel32.dll」,関数名「GetVersionExW」)を作る
OSバージョン取得の戻り値型は、整数
OSバージョン取得の引数型一覧は、{OSVERSIONINFOEX}

EXというOSVERSIONINFOEXを作る
EXのdwOSVersionInfoSizeは、EXの構造体バイト数
OSバージョン取得を{EX}で呼び出す
{EXのdwMajorVersion,EXのdwMinorVersion,EXのdwBuildNumber}を報告

OSVERSIONINFOEXとは
	ネイティブ構造体を受け継ぐ
	+dwOSVersionInfoSize:整数
	+dwMajorVersion:整数
	+dwMinorVersion:整数
	+dwBuildNumber:整数
	+dwPlatformId:整数
	+szCSDVersion:文字列
	+wServicePackMajor:短整数
	+wServicePackMinor:短整数
	+wSuiteMask:短整数
	+wProductType:短整数
	+wReserved:短整数
	はじめの手順
		自分で初期化する
		「szCSDVersion」を128文字設定する
		「wProductType」を「System.SByte」に設定する
		「wReserved」を「System.SByte」に設定する
	終わり
終わり

ページ先頭へ