ホーム › Storage.FileSystem › NTMS_LIBRARYINFORMATION
NTMS_LIBRARYINFORMATION
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| LibraryType | DWORD | 4 | +0 | +0 | ライブラリの種類オブジェクトです。次のいずれかの値を指定できます。
| ||||||||||
| CleanerSlot | GUID | 16 | +4 | +4 | 各ライブラリについて、クリーナーカートリッジに割り当てられたスロットを表します。このメンバーが NULL の場合、このライブラリにはクリーナースロットが定義されていません。 | ||||||||||
| CleanerSlotDefault | GUID | 16 | +20 | +20 | ライブラリの既定または優先されるクリーナースロットを表します。NULL の場合、優先されるスロットはありません。 | ||||||||||
| LibrarySupportsDriveCleaning | BOOL | 4 | +36 | +36 | ロボット制御下でのクリーニングを必要とするドライブで使用されます。TRUE の場合、ドライブの自動クリーニング操作が有効になります。 | ||||||||||
| BarCodeReaderInstalled | BOOL | 4 | +40 | +40 | ライブラリにバーコードリーダーが取り付けられている場合は TRUE を返します。それ以外の場合は FALSE を返します。 | ||||||||||
| InventoryMethod | DWORD | 4 | +44 | +44 | このライブラリのインベントリを実行するための既定またはユーザーが選択した方法です。(このメンバーは書き込み可能です。) 次のいずれかの値を指定できます。 | ||||||||||
| dwCleanerUsesRemaining | DWORD | 4 | +48 | +48 | ライブラリ内のクリーナーの残り使用回数です。クリーナーが存在しない場合、またはライブラリがクリーニングをサポートしていない場合、このメンバーは 0 になります。 | ||||||||||
| FirstDriveNumber | DWORD | 4 | +52 | +52 | ライブラリ内の最初のドライブの番号です。 | ||||||||||
| dwNumberOfDrives | DWORD | 4 | +56 | +56 | ライブラリ内のドライブの数です。 | ||||||||||
| FirstSlotNumber | DWORD | 4 | +60 | +60 | ライブラリ内の最初のスロットの番号です。 | ||||||||||
| dwNumberOfSlots | DWORD | 4 | +64 | +64 | ライブラリ内のスロットの数です。 | ||||||||||
| FirstDoorNumber | DWORD | 4 | +68 | +68 | ライブラリ内の最初のアクセスドアの番号です。 | ||||||||||
| dwNumberOfDoors | DWORD | 4 | +72 | +72 | ライブラリ内のアクセスドアの数です。 | ||||||||||
| FirstPortNumber | DWORD | 4 | +76 | +76 | ライブラリ内の最初の挿入/排出ポートの番号です。 | ||||||||||
| dwNumberOfPorts | DWORD | 4 | +80 | +80 | ライブラリ内の挿入/排出ポートの数です。 | ||||||||||
| FirstChangerNumber | DWORD | 4 | +84 | +84 | ライブラリ内の最初のチェンジャーの番号です。 | ||||||||||
| dwNumberOfChangers | DWORD | 4 | +88 | +88 | ライブラリ内のチェンジャーの数です。 | ||||||||||
| dwNumberOfMedia | DWORD | 4 | +92 | +92 | オンラインまたはオフラインのライブラリ内のメディアの数です。 | ||||||||||
| dwNumberOfMediaTypes | DWORD | 4 | +96 | +96 | ライブラリがサポートするメディアの種類の数です。 | ||||||||||
| dwNumberOfLibRequests | DWORD | 4 | +100 | +100 | 現在のライブラリ要求の数です。 | ||||||||||
| Reserved | GUID | 16 | +104 | +104 | 予約済みです。 | ||||||||||
| AutoRecovery | BOOL | 4 | +120 | +120 | このメンバーが TRUE の場合、マウントが失敗したときに完全インベントリが実行されます。失敗の原因は、ハードウェアの問題またはラベルの不一致のいずれかです。ATAPI CD ライブラリの場合、このパラメーターを無効にすることはできません。既定値は TRUE です。大規模なライブラリの所有者は、この機能を無効にすることをお勧めします。 | ||||||||||
| dwFlags | DWORD | 4 | +124 | +124 | このメンバーには、次の値の 1 つ以上を指定できます。 |
公式ドキュメント
[Removable Storage Manager は Windows 7 および Windows Server 2008 R2 以降では利用できません。]
NTMS_LIBRARYINFORMATION 構造体は、ライブラリオブジェクトに固有のプロパティを定義します。
解説(Remarks)
オフラインライブラリでは、LibraryType と dwNumberOfMedia のみが報告されます。その他のすべての値は無視してください。
NTMS_LIBRARYINFORMATION 構造体は、 NTMS_OBJECTINFORMATION 構造体に含まれています。
出典・ライセンス: 上記「公式ドキュメント」の内容は 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_LIBRARYINFORMATION (x64 128 / x86 128 バイト)
typedef struct NTMS_LIBRARYINFORMATION {
DWORD LibraryType;
GUID CleanerSlot;
GUID CleanerSlotDefault;
BOOL LibrarySupportsDriveCleaning;
BOOL BarCodeReaderInstalled;
DWORD InventoryMethod;
DWORD dwCleanerUsesRemaining;
DWORD FirstDriveNumber;
DWORD dwNumberOfDrives;
DWORD FirstSlotNumber;
DWORD dwNumberOfSlots;
DWORD FirstDoorNumber;
DWORD dwNumberOfDoors;
DWORD FirstPortNumber;
DWORD dwNumberOfPorts;
DWORD FirstChangerNumber;
DWORD dwNumberOfChangers;
DWORD dwNumberOfMedia;
DWORD dwNumberOfMediaTypes;
DWORD dwNumberOfLibRequests;
GUID Reserved;
BOOL AutoRecovery;
DWORD dwFlags;
} NTMS_LIBRARYINFORMATION;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct NTMS_LIBRARYINFORMATION
{
public uint LibraryType;
public Guid CleanerSlot;
public Guid CleanerSlotDefault;
[MarshalAs(UnmanagedType.Bool)] public bool LibrarySupportsDriveCleaning;
[MarshalAs(UnmanagedType.Bool)] public bool BarCodeReaderInstalled;
public uint InventoryMethod;
public uint dwCleanerUsesRemaining;
public uint FirstDriveNumber;
public uint dwNumberOfDrives;
public uint FirstSlotNumber;
public uint dwNumberOfSlots;
public uint FirstDoorNumber;
public uint dwNumberOfDoors;
public uint FirstPortNumber;
public uint dwNumberOfPorts;
public uint FirstChangerNumber;
public uint dwNumberOfChangers;
public uint dwNumberOfMedia;
public uint dwNumberOfMediaTypes;
public uint dwNumberOfLibRequests;
public Guid Reserved;
[MarshalAs(UnmanagedType.Bool)] public bool AutoRecovery;
public uint dwFlags;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure NTMS_LIBRARYINFORMATION
Public LibraryType As UInteger
Public CleanerSlot As Guid
Public CleanerSlotDefault As Guid
<MarshalAs(UnmanagedType.Bool)> Public LibrarySupportsDriveCleaning As Boolean
<MarshalAs(UnmanagedType.Bool)> Public BarCodeReaderInstalled As Boolean
Public InventoryMethod As UInteger
Public dwCleanerUsesRemaining As UInteger
Public FirstDriveNumber As UInteger
Public dwNumberOfDrives As UInteger
Public FirstSlotNumber As UInteger
Public dwNumberOfSlots As UInteger
Public FirstDoorNumber As UInteger
Public dwNumberOfDoors As UInteger
Public FirstPortNumber As UInteger
Public dwNumberOfPorts As UInteger
Public FirstChangerNumber As UInteger
Public dwNumberOfChangers As UInteger
Public dwNumberOfMedia As UInteger
Public dwNumberOfMediaTypes As UInteger
Public dwNumberOfLibRequests As UInteger
Public Reserved As Guid
<MarshalAs(UnmanagedType.Bool)> Public AutoRecovery As Boolean
Public dwFlags As UInteger
End Structureimport ctypes
from ctypes import wintypes
class NTMS_LIBRARYINFORMATION(ctypes.Structure):
_fields_ = [
("LibraryType", wintypes.DWORD),
("CleanerSlot", GUID),
("CleanerSlotDefault", GUID),
("LibrarySupportsDriveCleaning", wintypes.BOOL),
("BarCodeReaderInstalled", wintypes.BOOL),
("InventoryMethod", wintypes.DWORD),
("dwCleanerUsesRemaining", wintypes.DWORD),
("FirstDriveNumber", wintypes.DWORD),
("dwNumberOfDrives", wintypes.DWORD),
("FirstSlotNumber", wintypes.DWORD),
("dwNumberOfSlots", wintypes.DWORD),
("FirstDoorNumber", wintypes.DWORD),
("dwNumberOfDoors", wintypes.DWORD),
("FirstPortNumber", wintypes.DWORD),
("dwNumberOfPorts", wintypes.DWORD),
("FirstChangerNumber", wintypes.DWORD),
("dwNumberOfChangers", wintypes.DWORD),
("dwNumberOfMedia", wintypes.DWORD),
("dwNumberOfMediaTypes", wintypes.DWORD),
("dwNumberOfLibRequests", wintypes.DWORD),
("Reserved", GUID),
("AutoRecovery", wintypes.BOOL),
("dwFlags", wintypes.DWORD),
]#[repr(C)]
pub struct NTMS_LIBRARYINFORMATION {
pub LibraryType: u32,
pub CleanerSlot: GUID,
pub CleanerSlotDefault: GUID,
pub LibrarySupportsDriveCleaning: i32,
pub BarCodeReaderInstalled: i32,
pub InventoryMethod: u32,
pub dwCleanerUsesRemaining: u32,
pub FirstDriveNumber: u32,
pub dwNumberOfDrives: u32,
pub FirstSlotNumber: u32,
pub dwNumberOfSlots: u32,
pub FirstDoorNumber: u32,
pub dwNumberOfDoors: u32,
pub FirstPortNumber: u32,
pub dwNumberOfPorts: u32,
pub FirstChangerNumber: u32,
pub dwNumberOfChangers: u32,
pub dwNumberOfMedia: u32,
pub dwNumberOfMediaTypes: u32,
pub dwNumberOfLibRequests: u32,
pub Reserved: GUID,
pub AutoRecovery: i32,
pub dwFlags: u32,
}import "golang.org/x/sys/windows"
type NTMS_LIBRARYINFORMATION struct {
LibraryType uint32
CleanerSlot windows.GUID
CleanerSlotDefault windows.GUID
LibrarySupportsDriveCleaning int32
BarCodeReaderInstalled int32
InventoryMethod uint32
dwCleanerUsesRemaining uint32
FirstDriveNumber uint32
dwNumberOfDrives uint32
FirstSlotNumber uint32
dwNumberOfSlots uint32
FirstDoorNumber uint32
dwNumberOfDoors uint32
FirstPortNumber uint32
dwNumberOfPorts uint32
FirstChangerNumber uint32
dwNumberOfChangers uint32
dwNumberOfMedia uint32
dwNumberOfMediaTypes uint32
dwNumberOfLibRequests uint32
Reserved windows.GUID
AutoRecovery int32
dwFlags uint32
}type
NTMS_LIBRARYINFORMATION = record
LibraryType: DWORD;
CleanerSlot: TGUID;
CleanerSlotDefault: TGUID;
LibrarySupportsDriveCleaning: BOOL;
BarCodeReaderInstalled: BOOL;
InventoryMethod: DWORD;
dwCleanerUsesRemaining: DWORD;
FirstDriveNumber: DWORD;
dwNumberOfDrives: DWORD;
FirstSlotNumber: DWORD;
dwNumberOfSlots: DWORD;
FirstDoorNumber: DWORD;
dwNumberOfDoors: DWORD;
FirstPortNumber: DWORD;
dwNumberOfPorts: DWORD;
FirstChangerNumber: DWORD;
dwNumberOfChangers: DWORD;
dwNumberOfMedia: DWORD;
dwNumberOfMediaTypes: DWORD;
dwNumberOfLibRequests: DWORD;
Reserved: TGUID;
AutoRecovery: BOOL;
dwFlags: DWORD;
end;const NTMS_LIBRARYINFORMATION = extern struct {
LibraryType: u32,
CleanerSlot: GUID,
CleanerSlotDefault: GUID,
LibrarySupportsDriveCleaning: i32,
BarCodeReaderInstalled: i32,
InventoryMethod: u32,
dwCleanerUsesRemaining: u32,
FirstDriveNumber: u32,
dwNumberOfDrives: u32,
FirstSlotNumber: u32,
dwNumberOfSlots: u32,
FirstDoorNumber: u32,
dwNumberOfDoors: u32,
FirstPortNumber: u32,
dwNumberOfPorts: u32,
FirstChangerNumber: u32,
dwNumberOfChangers: u32,
dwNumberOfMedia: u32,
dwNumberOfMediaTypes: u32,
dwNumberOfLibRequests: u32,
Reserved: GUID,
AutoRecovery: i32,
dwFlags: u32,
};type
NTMS_LIBRARYINFORMATION {.bycopy.} = object
LibraryType: uint32
CleanerSlot: GUID
CleanerSlotDefault: GUID
LibrarySupportsDriveCleaning: int32
BarCodeReaderInstalled: int32
InventoryMethod: uint32
dwCleanerUsesRemaining: uint32
FirstDriveNumber: uint32
dwNumberOfDrives: uint32
FirstSlotNumber: uint32
dwNumberOfSlots: uint32
FirstDoorNumber: uint32
dwNumberOfDoors: uint32
FirstPortNumber: uint32
dwNumberOfPorts: uint32
FirstChangerNumber: uint32
dwNumberOfChangers: uint32
dwNumberOfMedia: uint32
dwNumberOfMediaTypes: uint32
dwNumberOfLibRequests: uint32
Reserved: GUID
AutoRecovery: int32
dwFlags: uint32struct NTMS_LIBRARYINFORMATION
{
uint LibraryType;
GUID CleanerSlot;
GUID CleanerSlotDefault;
int LibrarySupportsDriveCleaning;
int BarCodeReaderInstalled;
uint InventoryMethod;
uint dwCleanerUsesRemaining;
uint FirstDriveNumber;
uint dwNumberOfDrives;
uint FirstSlotNumber;
uint dwNumberOfSlots;
uint FirstDoorNumber;
uint dwNumberOfDoors;
uint FirstPortNumber;
uint dwNumberOfPorts;
uint FirstChangerNumber;
uint dwNumberOfChangers;
uint dwNumberOfMedia;
uint dwNumberOfMediaTypes;
uint dwNumberOfLibRequests;
GUID Reserved;
int AutoRecovery;
uint dwFlags;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; NTMS_LIBRARYINFORMATION サイズ: 128 バイト(x64)
dim st, 32 ; 4byte整数×32(構造体サイズ 128 / 4 切り上げ)
; LibraryType : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; CleanerSlot : GUID (+4, 16byte) varptr(st)+4 を基点に操作(16byte:入れ子/配列)
; CleanerSlotDefault : GUID (+20, 16byte) varptr(st)+20 を基点に操作(16byte:入れ子/配列)
; LibrarySupportsDriveCleaning : BOOL (+36, 4byte) st.9 = 値 / 値 = st.9 (lpoke/lpeek も可)
; BarCodeReaderInstalled : BOOL (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; InventoryMethod : DWORD (+44, 4byte) st.11 = 値 / 値 = st.11 (lpoke/lpeek も可)
; dwCleanerUsesRemaining : DWORD (+48, 4byte) st.12 = 値 / 値 = st.12 (lpoke/lpeek も可)
; FirstDriveNumber : DWORD (+52, 4byte) st.13 = 値 / 値 = st.13 (lpoke/lpeek も可)
; dwNumberOfDrives : DWORD (+56, 4byte) st.14 = 値 / 値 = st.14 (lpoke/lpeek も可)
; FirstSlotNumber : DWORD (+60, 4byte) st.15 = 値 / 値 = st.15 (lpoke/lpeek も可)
; dwNumberOfSlots : DWORD (+64, 4byte) st.16 = 値 / 値 = st.16 (lpoke/lpeek も可)
; FirstDoorNumber : DWORD (+68, 4byte) st.17 = 値 / 値 = st.17 (lpoke/lpeek も可)
; dwNumberOfDoors : DWORD (+72, 4byte) st.18 = 値 / 値 = st.18 (lpoke/lpeek も可)
; FirstPortNumber : DWORD (+76, 4byte) st.19 = 値 / 値 = st.19 (lpoke/lpeek も可)
; dwNumberOfPorts : DWORD (+80, 4byte) st.20 = 値 / 値 = st.20 (lpoke/lpeek も可)
; FirstChangerNumber : DWORD (+84, 4byte) st.21 = 値 / 値 = st.21 (lpoke/lpeek も可)
; dwNumberOfChangers : DWORD (+88, 4byte) st.22 = 値 / 値 = st.22 (lpoke/lpeek も可)
; dwNumberOfMedia : DWORD (+92, 4byte) st.23 = 値 / 値 = st.23 (lpoke/lpeek も可)
; dwNumberOfMediaTypes : DWORD (+96, 4byte) st.24 = 値 / 値 = st.24 (lpoke/lpeek も可)
; dwNumberOfLibRequests : DWORD (+100, 4byte) st.25 = 値 / 値 = st.25 (lpoke/lpeek も可)
; Reserved : GUID (+104, 16byte) varptr(st)+104 を基点に操作(16byte:入れ子/配列)
; AutoRecovery : BOOL (+120, 4byte) st.30 = 値 / 値 = st.30 (lpoke/lpeek も可)
; dwFlags : DWORD (+124, 4byte) st.31 = 値 / 値 = st.31 (lpoke/lpeek も可)
; ※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_LIBRARYINFORMATION
#field int LibraryType
#field GUID CleanerSlot
#field GUID CleanerSlotDefault
#field bool LibrarySupportsDriveCleaning
#field bool BarCodeReaderInstalled
#field int InventoryMethod
#field int dwCleanerUsesRemaining
#field int FirstDriveNumber
#field int dwNumberOfDrives
#field int FirstSlotNumber
#field int dwNumberOfSlots
#field int FirstDoorNumber
#field int dwNumberOfDoors
#field int FirstPortNumber
#field int dwNumberOfPorts
#field int FirstChangerNumber
#field int dwNumberOfChangers
#field int dwNumberOfMedia
#field int dwNumberOfMediaTypes
#field int dwNumberOfLibRequests
#field GUID Reserved
#field bool AutoRecovery
#field int dwFlags
#endstruct
stdim st, NTMS_LIBRARYINFORMATION ; NSTRUCT 変数を確保
st->LibraryType = 100
mes "LibraryType=" + st->LibraryType