ホーム › Storage.FileSystem › NTMS_CHANGERINFORMATIONW
NTMS_CHANGERINFORMATIONW
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| Number | DWORD | 4 | +0 | +0 | ライブラリ内におけるチェンジャーの番号です。 |
| ChangerType | GUID | 16 | +4 | +4 | このチェンジャーのチェンジャー種別を示す識別子です。 |
| szSerialNumber | WCHAR | 64 | +20 | +20 | チェンジャーのシリアル番号を文字列で表したものです。シリアル番号をサポートしないデバイスでは、このメンバーには NULL が報告されます。 |
| szRevision | WCHAR | 64 | +84 | +84 | チェンジャーのリビジョンを文字列で表したものです。 |
| szDeviceName | WCHAR | 128 | +148 | +148 | チェンジャーへのアクセスに使用されるデバイスの名前です。 |
| ScsiPort | WORD | 2 | +276 | +276 | チェンジャーが接続されている SCSI ホスト アダプターです。 |
| ScsiBus | WORD | 2 | +278 | +278 | チェンジャーが接続されている SCSI バスです。 |
| ScsiTarget | WORD | 2 | +280 | +280 | チェンジャーの SCSI ターゲット ID です。 |
| ScsiLun | WORD | 2 | +282 | +282 | チェンジャーの SCSI 論理ユニット ID です。 |
| Library | GUID | 16 | +284 | +284 | チェンジャーを含むライブラリの一意の識別子です。 |
公式ドキュメント
[リムーバブル記憶域マネージャー は、Windows 7 および Windows Server 2008 R2 以降では利用できません。]
NTMS_CHANGERINFORMATION 構造体は、ロボット式チェンジャー オブジェクトに固有のプロパティを定義します。
解説(Remarks)
NTMS_CHANGERINFORMATION 構造体は、 NTMS_OBJECTINFORMATION 構造体に含まれます。
メモ
ntmsapi.h ヘッダーは、UNICODE プリプロセッサ定数の定義に応じて、この関数の ANSI 版と Unicode 版を自動的に選択するエイリアスとして NTMS_CHANGERINFORMATION を定義します。エンコード中立のエイリアスを、エンコード中立でないコードと混在して使用すると、不一致が生じてコンパイル エラーや実行時エラーの原因となる場合があります。詳細については、関数プロトタイプの規則 を参照してください。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
各言語での定義
#include <windows.h>
// NTMS_CHANGERINFORMATIONW (x64 300 / x86 300 バイト)
typedef struct NTMS_CHANGERINFORMATIONW {
DWORD Number;
GUID ChangerType;
WCHAR szSerialNumber[32];
WCHAR szRevision[32];
WCHAR szDeviceName[64];
WORD ScsiPort;
WORD ScsiBus;
WORD ScsiTarget;
WORD ScsiLun;
GUID Library;
} NTMS_CHANGERINFORMATIONW;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct NTMS_CHANGERINFORMATIONW
{
public uint Number;
public Guid ChangerType;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] public string szSerialNumber;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 32)] public string szRevision;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 64)] public string szDeviceName;
public ushort ScsiPort;
public ushort ScsiBus;
public ushort ScsiTarget;
public ushort ScsiLun;
public Guid Library;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure NTMS_CHANGERINFORMATIONW
Public Number As UInteger
Public ChangerType As Guid
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=32)> Public szSerialNumber As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=32)> Public szRevision As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=64)> Public szDeviceName As String
Public ScsiPort As UShort
Public ScsiBus As UShort
Public ScsiTarget As UShort
Public ScsiLun As UShort
Public Library As Guid
End Structureimport ctypes
from ctypes import wintypes
class NTMS_CHANGERINFORMATIONW(ctypes.Structure):
_fields_ = [
("Number", wintypes.DWORD),
("ChangerType", GUID),
("szSerialNumber", ctypes.c_wchar * 32),
("szRevision", ctypes.c_wchar * 32),
("szDeviceName", ctypes.c_wchar * 64),
("ScsiPort", ctypes.c_ushort),
("ScsiBus", ctypes.c_ushort),
("ScsiTarget", ctypes.c_ushort),
("ScsiLun", ctypes.c_ushort),
("Library", GUID),
]#[repr(C)]
pub struct NTMS_CHANGERINFORMATIONW {
pub Number: u32,
pub ChangerType: GUID,
pub szSerialNumber: [u16; 32],
pub szRevision: [u16; 32],
pub szDeviceName: [u16; 64],
pub ScsiPort: u16,
pub ScsiBus: u16,
pub ScsiTarget: u16,
pub ScsiLun: u16,
pub Library: GUID,
}import "golang.org/x/sys/windows"
type NTMS_CHANGERINFORMATIONW struct {
Number uint32
ChangerType windows.GUID
szSerialNumber [32]uint16
szRevision [32]uint16
szDeviceName [64]uint16
ScsiPort uint16
ScsiBus uint16
ScsiTarget uint16
ScsiLun uint16
Library windows.GUID
}type
NTMS_CHANGERINFORMATIONW = record
Number: DWORD;
ChangerType: TGUID;
szSerialNumber: array[0..31] of WideChar;
szRevision: array[0..31] of WideChar;
szDeviceName: array[0..63] of WideChar;
ScsiPort: Word;
ScsiBus: Word;
ScsiTarget: Word;
ScsiLun: Word;
Library: TGUID;
end;const NTMS_CHANGERINFORMATIONW = extern struct {
Number: u32,
ChangerType: GUID,
szSerialNumber: [32]u16,
szRevision: [32]u16,
szDeviceName: [64]u16,
ScsiPort: u16,
ScsiBus: u16,
ScsiTarget: u16,
ScsiLun: u16,
Library: GUID,
};type
NTMS_CHANGERINFORMATIONW {.bycopy.} = object
Number: uint32
ChangerType: GUID
szSerialNumber: array[32, uint16]
szRevision: array[32, uint16]
szDeviceName: array[64, uint16]
ScsiPort: uint16
ScsiBus: uint16
ScsiTarget: uint16
ScsiLun: uint16
Library: GUIDstruct NTMS_CHANGERINFORMATIONW
{
uint Number;
GUID ChangerType;
wchar[32] szSerialNumber;
wchar[32] szRevision;
wchar[64] szDeviceName;
ushort ScsiPort;
ushort ScsiBus;
ushort ScsiTarget;
ushort ScsiLun;
GUID Library;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; NTMS_CHANGERINFORMATIONW サイズ: 300 バイト(x64)
dim st, 75 ; 4byte整数×75(構造体サイズ 300 / 4 切り上げ)
; Number : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; ChangerType : GUID (+4, 16byte) varptr(st)+4 を基点に操作(16byte:入れ子/配列)
; szSerialNumber : WCHAR (+20, 64byte) varptr(st)+20 を基点に操作(64byte:入れ子/配列)
; szRevision : WCHAR (+84, 64byte) varptr(st)+84 を基点に操作(64byte:入れ子/配列)
; szDeviceName : WCHAR (+148, 128byte) varptr(st)+148 を基点に操作(128byte:入れ子/配列)
; ScsiPort : WORD (+276, 2byte) wpoke st,276,値 / 値 = wpeek(st,276)
; ScsiBus : WORD (+278, 2byte) wpoke st,278,値 / 値 = wpeek(st,278)
; ScsiTarget : WORD (+280, 2byte) wpoke st,280,値 / 値 = wpeek(st,280)
; ScsiLun : WORD (+282, 2byte) wpoke st,282,値 / 値 = wpeek(st,282)
; Library : GUID (+284, 16byte) varptr(st)+284 を基点に操作(16byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global GUID, pack=1
#field int Data1
#field short Data2
#field short Data3
#field byte Data4 8
#endstruct
#defstruct global NTMS_CHANGERINFORMATIONW
#field int Number
#field GUID ChangerType
#field wchar szSerialNumber 32
#field wchar szRevision 32
#field wchar szDeviceName 64
#field short ScsiPort
#field short ScsiBus
#field short ScsiTarget
#field short ScsiLun
#field GUID Library
#endstruct
stdim st, NTMS_CHANGERINFORMATIONW ; NSTRUCT 変数を確保
st->Number = 100
mes "Number=" + st->Number