ホーム › Storage.FileSystem › NTMS_PMIDINFORMATIONA
NTMS_PMIDINFORMATIONA
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 | ||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| CurrentLibrary | GUID | 16 | +0 | +0 | メディアが格納されているライブラリの一意の ID です。 | ||||||
| MediaPool | GUID | 16 | +16 | +16 | メディアが割り当てられているメディア プールの一意の ID です。 | ||||||
| Location | GUID | 16 | +32 | +32 | メディアの物理的な場所を表すオブジェクトの一意の ID です。 | ||||||
| LocationType | DWORD | 4 | +48 | +48 | 物理メディアの現在の場所の種類です。このメンバーには NTMS_STORAGESLOT、NTMS_DRIVE、NTMS_IEPORT のいずれかを設定できます。(オフラインのメディアはスロットに格納されます。) | ||||||
| MediaType | GUID | 16 | +52 | +52 | メディアの種類オブジェクトの一意の ID です。 | ||||||
| HomeSlot | GUID | 16 | +68 | +68 | メディアが格納されるライブラリ記憶域スロットの一意の ID です。 | ||||||
| szBarCode | CHAR | 64 | +84 | +84 | 物理メディアのバー コード ラベルに記録されたバー コード値と一致する文字列です。 | ||||||
| BarCodeState | DWORD | 4 | +148 | +148 | バー コードの現在の状態です。次のいずれかの値になります。
| ||||||
| szSequenceNumber | CHAR | 32 | +152 | +152 | 指定されたメディアに割り当てられた連続番号です。人が読める値であり、オフライン ライブラリ内でメディアを見つけられるように、ユーザーがメディア上に書き写す必要があります。 | ||||||
| MediaState | DWORD | 4 | +184 | +184 | 物理メディアの現在の状態です。次のいずれかの値になります。 | ||||||
| dwNumberOfPartitions | DWORD | 4 | +188 | +188 | メディアの面の数です。 | ||||||
| dwMediaTypeCode | DWORD | 4 | +192 | +192 | SCSI メディア タイプ コードです。 | ||||||
| dwDensityCode | DWORD | 4 | +196 | +196 | SCSI 密度コードです。 | ||||||
| MountedPartition | GUID | 16 | +200 | +200 | 現在マウントされているメディアの面のグローバル一意 ID です。 |
公式ドキュメント
[リムーバブル記憶域マネージャー は Windows 7 および Windows Server 2008 R2 以降では使用できません。]
NTMS_PMIDINFORMATION 構造体は、物理メディア オブジェクトに固有のプロパティを定義します。
解説(Remarks)
NTMS_PMIDINFORMATION 構造体は、 NTMS_OBJECTINFORMATION 構造体に含まれます。
メモ
ntmsapi.h ヘッダーは、UNICODE プリプロセッサ定数の定義に基づいてこの関数の ANSI 版または Unicode 版を自動的に選択するエイリアスとして NTMS_PMIDINFORMATION を定義します。エンコードに依存しないエイリアスを、エンコードに依存するコードと混在させると、不一致が生じてコンパイル エラーや実行時エラーの原因となることがあります。詳細については、関数プロトタイプの規則を参照してください。
出典・ライセンス: 上記「公式ドキュメント」の内容は 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_PMIDINFORMATIONA (x64 216 / x86 216 バイト)
typedef struct NTMS_PMIDINFORMATIONA {
GUID CurrentLibrary;
GUID MediaPool;
GUID Location;
DWORD LocationType;
GUID MediaType;
GUID HomeSlot;
CHAR szBarCode[64];
DWORD BarCodeState;
CHAR szSequenceNumber[32];
DWORD MediaState;
DWORD dwNumberOfPartitions;
DWORD dwMediaTypeCode;
DWORD dwDensityCode;
GUID MountedPartition;
} NTMS_PMIDINFORMATIONA;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct NTMS_PMIDINFORMATIONA
{
public Guid CurrentLibrary;
public Guid MediaPool;
public Guid Location;
public uint LocationType;
public Guid MediaType;
public Guid HomeSlot;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 64)] public sbyte[] szBarCode;
public uint BarCodeState;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 32)] public sbyte[] szSequenceNumber;
public uint MediaState;
public uint dwNumberOfPartitions;
public uint dwMediaTypeCode;
public uint dwDensityCode;
public Guid MountedPartition;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure NTMS_PMIDINFORMATIONA
Public CurrentLibrary As Guid
Public MediaPool As Guid
Public Location As Guid
Public LocationType As UInteger
Public MediaType As Guid
Public HomeSlot As Guid
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=64)> Public szBarCode() As SByte
Public BarCodeState As UInteger
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=32)> Public szSequenceNumber() As SByte
Public MediaState As UInteger
Public dwNumberOfPartitions As UInteger
Public dwMediaTypeCode As UInteger
Public dwDensityCode As UInteger
Public MountedPartition As Guid
End Structureimport ctypes
from ctypes import wintypes
class NTMS_PMIDINFORMATIONA(ctypes.Structure):
_fields_ = [
("CurrentLibrary", GUID),
("MediaPool", GUID),
("Location", GUID),
("LocationType", wintypes.DWORD),
("MediaType", GUID),
("HomeSlot", GUID),
("szBarCode", ctypes.c_byte * 64),
("BarCodeState", wintypes.DWORD),
("szSequenceNumber", ctypes.c_byte * 32),
("MediaState", wintypes.DWORD),
("dwNumberOfPartitions", wintypes.DWORD),
("dwMediaTypeCode", wintypes.DWORD),
("dwDensityCode", wintypes.DWORD),
("MountedPartition", GUID),
]#[repr(C)]
pub struct NTMS_PMIDINFORMATIONA {
pub CurrentLibrary: GUID,
pub MediaPool: GUID,
pub Location: GUID,
pub LocationType: u32,
pub MediaType: GUID,
pub HomeSlot: GUID,
pub szBarCode: [i8; 64],
pub BarCodeState: u32,
pub szSequenceNumber: [i8; 32],
pub MediaState: u32,
pub dwNumberOfPartitions: u32,
pub dwMediaTypeCode: u32,
pub dwDensityCode: u32,
pub MountedPartition: GUID,
}import "golang.org/x/sys/windows"
type NTMS_PMIDINFORMATIONA struct {
CurrentLibrary windows.GUID
MediaPool windows.GUID
Location windows.GUID
LocationType uint32
MediaType windows.GUID
HomeSlot windows.GUID
szBarCode [64]int8
BarCodeState uint32
szSequenceNumber [32]int8
MediaState uint32
dwNumberOfPartitions uint32
dwMediaTypeCode uint32
dwDensityCode uint32
MountedPartition windows.GUID
}type
NTMS_PMIDINFORMATIONA = record
CurrentLibrary: TGUID;
MediaPool: TGUID;
Location: TGUID;
LocationType: DWORD;
MediaType: TGUID;
HomeSlot: TGUID;
szBarCode: array[0..63] of Shortint;
BarCodeState: DWORD;
szSequenceNumber: array[0..31] of Shortint;
MediaState: DWORD;
dwNumberOfPartitions: DWORD;
dwMediaTypeCode: DWORD;
dwDensityCode: DWORD;
MountedPartition: TGUID;
end;const NTMS_PMIDINFORMATIONA = extern struct {
CurrentLibrary: GUID,
MediaPool: GUID,
Location: GUID,
LocationType: u32,
MediaType: GUID,
HomeSlot: GUID,
szBarCode: [64]i8,
BarCodeState: u32,
szSequenceNumber: [32]i8,
MediaState: u32,
dwNumberOfPartitions: u32,
dwMediaTypeCode: u32,
dwDensityCode: u32,
MountedPartition: GUID,
};type
NTMS_PMIDINFORMATIONA {.bycopy.} = object
CurrentLibrary: GUID
MediaPool: GUID
Location: GUID
LocationType: uint32
MediaType: GUID
HomeSlot: GUID
szBarCode: array[64, int8]
BarCodeState: uint32
szSequenceNumber: array[32, int8]
MediaState: uint32
dwNumberOfPartitions: uint32
dwMediaTypeCode: uint32
dwDensityCode: uint32
MountedPartition: GUIDstruct NTMS_PMIDINFORMATIONA
{
GUID CurrentLibrary;
GUID MediaPool;
GUID Location;
uint LocationType;
GUID MediaType;
GUID HomeSlot;
byte[64] szBarCode;
uint BarCodeState;
byte[32] szSequenceNumber;
uint MediaState;
uint dwNumberOfPartitions;
uint dwMediaTypeCode;
uint dwDensityCode;
GUID MountedPartition;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; NTMS_PMIDINFORMATIONA サイズ: 216 バイト(x64)
dim st, 54 ; 4byte整数×54(構造体サイズ 216 / 4 切り上げ)
; CurrentLibrary : GUID (+0, 16byte) varptr(st)+0 を基点に操作(16byte:入れ子/配列)
; MediaPool : GUID (+16, 16byte) varptr(st)+16 を基点に操作(16byte:入れ子/配列)
; Location : GUID (+32, 16byte) varptr(st)+32 を基点に操作(16byte:入れ子/配列)
; LocationType : DWORD (+48, 4byte) st.12 = 値 / 値 = st.12 (lpoke/lpeek も可)
; MediaType : GUID (+52, 16byte) varptr(st)+52 を基点に操作(16byte:入れ子/配列)
; HomeSlot : GUID (+68, 16byte) varptr(st)+68 を基点に操作(16byte:入れ子/配列)
; szBarCode : CHAR (+84, 64byte) varptr(st)+84 を基点に操作(64byte:入れ子/配列)
; BarCodeState : DWORD (+148, 4byte) st.37 = 値 / 値 = st.37 (lpoke/lpeek も可)
; szSequenceNumber : CHAR (+152, 32byte) varptr(st)+152 を基点に操作(32byte:入れ子/配列)
; MediaState : DWORD (+184, 4byte) st.46 = 値 / 値 = st.46 (lpoke/lpeek も可)
; dwNumberOfPartitions : DWORD (+188, 4byte) st.47 = 値 / 値 = st.47 (lpoke/lpeek も可)
; dwMediaTypeCode : DWORD (+192, 4byte) st.48 = 値 / 値 = st.48 (lpoke/lpeek も可)
; dwDensityCode : DWORD (+196, 4byte) st.49 = 値 / 値 = st.49 (lpoke/lpeek も可)
; MountedPartition : GUID (+200, 16byte) varptr(st)+200 を基点に操作(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_PMIDINFORMATIONA
#field GUID CurrentLibrary
#field GUID MediaPool
#field GUID Location
#field int LocationType
#field GUID MediaType
#field GUID HomeSlot
#field byte szBarCode 64
#field int BarCodeState
#field byte szSequenceNumber 32
#field int MediaState
#field int dwNumberOfPartitions
#field int dwMediaTypeCode
#field int dwDensityCode
#field GUID MountedPartition
#endstruct
stdim st, NTMS_PMIDINFORMATIONA ; NSTRUCT 変数を確保
st->LocationType = 100
mes "LocationType=" + st->LocationType