Win32 API 日本語リファレンス
ホームStorage.FileSystem › NTMS_LIBRARYINFORMATION

NTMS_LIBRARYINFORMATION

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

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

フィールド

フィールドサイズx64x86説明
LibraryTypeDWORD4+0+0

ライブラリの種類オブジェクトです。次のいずれかの値を指定できます。

意味
NTMS_LIBRARYTYPE_ONLINE
1 台以上のドライブへのメディアのマウントおよびマウント解除を自動化するロボット要素です。
NTMS_LIBRARYTYPE_STANDALONE
RSM において、ドライブを 1 台持つライブラリとしてモデル化されたスタンドアロンドライブです。
NTMS_LIBRARYTYPE_OFFLINE
ライブラリ内に存在しないメディアは、オフラインライブラリに属します。
NTMS_LIBRARYTYPE_UNKNOWN
ライブラリの種類を特定できません。
CleanerSlotGUID16+4+4各ライブラリについて、クリーナーカートリッジに割り当てられたスロットを表します。このメンバーが NULL の場合、このライブラリにはクリーナースロットが定義されていません。
CleanerSlotDefaultGUID16+20+20ライブラリの既定または優先されるクリーナースロットを表します。NULL の場合、優先されるスロットはありません。
LibrarySupportsDriveCleaningBOOL4+36+36ロボット制御下でのクリーニングを必要とするドライブで使用されます。TRUE の場合、ドライブの自動クリーニング操作が有効になります。
BarCodeReaderInstalledBOOL4+40+40ライブラリにバーコードリーダーが取り付けられている場合は TRUE を返します。それ以外の場合は FALSE を返します。
InventoryMethodDWORD4+44+44

このライブラリのインベントリを実行するための既定またはユーザーが選択した方法です。(このメンバーは書き込み可能です。) 次のいずれかの値を指定できます。

意味
NTMS_INVENTORY_FAST
ライブラリにバーコードリーダーが取り付けられている場合、この値によりバーコードインベントリが実行されます。ライブラリにバーコードリーダーがない場合、このフラグにより差分インベントリが実行されます (空から満杯へ遷移したスロットが分類されます)。
NTMS_INVENTORY_OMID
完全インベントリでは、ライブラリ内の各面をマウントし、メディアからオンメディア識別情報を読み取ります。この種類のインベントリは、一部のライブラリユニットでは非常に時間がかかることがあります。
NTMS_INVENTORY_NONE
ライブラリのドアが閉じられた後、インベントリは実行されません。マウント時のラベルチェックが失敗した場合は、インベントリが必要になることがあります。
dwCleanerUsesRemainingDWORD4+48+48ライブラリ内のクリーナーの残り使用回数です。クリーナーが存在しない場合、またはライブラリがクリーニングをサポートしていない場合、このメンバーは 0 になります。
FirstDriveNumberDWORD4+52+52ライブラリ内の最初のドライブの番号です。
dwNumberOfDrivesDWORD4+56+56ライブラリ内のドライブの数です。
FirstSlotNumberDWORD4+60+60ライブラリ内の最初のスロットの番号です。
dwNumberOfSlotsDWORD4+64+64ライブラリ内のスロットの数です。
FirstDoorNumberDWORD4+68+68ライブラリ内の最初のアクセスドアの番号です。
dwNumberOfDoorsDWORD4+72+72ライブラリ内のアクセスドアの数です。
FirstPortNumberDWORD4+76+76ライブラリ内の最初の挿入/排出ポートの番号です。
dwNumberOfPortsDWORD4+80+80ライブラリ内の挿入/排出ポートの数です。
FirstChangerNumberDWORD4+84+84ライブラリ内の最初のチェンジャーの番号です。
dwNumberOfChangersDWORD4+88+88ライブラリ内のチェンジャーの数です。
dwNumberOfMediaDWORD4+92+92オンラインまたはオフラインのライブラリ内のメディアの数です。
dwNumberOfMediaTypesDWORD4+96+96ライブラリがサポートするメディアの種類の数です。
dwNumberOfLibRequestsDWORD4+100+100現在のライブラリ要求の数です。
ReservedGUID16+104+104予約済みです。
AutoRecoveryBOOL4+120+120このメンバーが TRUE の場合、マウントが失敗したときに完全インベントリが実行されます。失敗の原因は、ハードウェアの問題またはラベルの不一致のいずれかです。ATAPI CD ライブラリの場合、このパラメーターを無効にすることはできません。既定値は TRUE です。大規模なライブラリの所有者は、この機能を無効にすることをお勧めします。
dwFlagsDWORD4+124+124

このメンバーには、次の値の 1 つ以上を指定できます。

意味
NTMS_LIBRARYFLAG_FIXEDOFFLINE
このライブラリは、存在しないライブラリではなく、オフラインライブラリです。
NTMS_LIBRARYFLAG_CLEANERPRESENT
チェンジャー内にクリーナーが存在します。
NTMS_LIBRARYFLAG_IGNORECLEANERUSESREMAINING
残りのクリーニング回数を管理する代わりに、クリーナーカートリッジはドライブをクリーニングできなくなるまで使用されます。 このフラグを直接設定しないでください。 このフラグは dwCleanerUsesRemaining の値に基づいて設定または解除されます。 dwCleanerUsesRemaining が 0xFFFFFFFF の場合に設定され、それ以外の場合は解除されます。
NTMS_LIBRARYFLAG_RECOGNIZECLEANERBARCODE
CLN をプレフィックスとして持つバーコード付きカートリッジは、ドライブにマウントして識別する代わりに、クリーナーカートリッジとして扱います。

公式ドキュメント

[Removable Storage Manager は Windows 7 および Windows Server 2008 R2 以降では利用できません。]

NTMS_LIBRARYINFORMATION 構造体は、ライブラリオブジェクトに固有のプロパティを定義します。

解説(Remarks)

オフラインライブラリでは、LibraryTypedwNumberOfMedia のみが報告されます。その他のすべての値は無視してください。

NTMS_LIBRARYINFORMATION 構造体は、 NTMS_OBJECTINFORMATION 構造体に含まれています。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
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 Structure
import 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: uint32
struct 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