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ライブラリの種類を示す値。スタンドアロン/チェンジャー等。
CleanerSlotGUID16+4+4クリーナーカートリッジが置かれるスロットのGUID。
CleanerSlotDefaultGUID16+20+20既定のクリーナースロットのGUID。
LibrarySupportsDriveCleaningBOOL4+36+36ドライブクリーニング対応かを示すブール値。
BarCodeReaderInstalledBOOL4+40+40バーコードリーダーが搭載されているかを示すブール値。
InventoryMethodDWORD4+44+44インベントリ(在庫確認)の方式を示す値。
dwCleanerUsesRemainingDWORD4+48+48クリーナーの残り使用可能回数。
FirstDriveNumberDWORD4+52+52最初のドライブ番号。
dwNumberOfDrivesDWORD4+56+56ライブラリ内のドライブ総数。
FirstSlotNumberDWORD4+60+60最初のスロット番号。
dwNumberOfSlotsDWORD4+64+64ライブラリ内のスロット総数。
FirstDoorNumberDWORD4+68+68最初のドア番号。
dwNumberOfDoorsDWORD4+72+72ライブラリ内のドア総数。
FirstPortNumberDWORD4+76+76最初のポート(I/Eポート)番号。
dwNumberOfPortsDWORD4+80+80ライブラリ内のポート総数。
FirstChangerNumberDWORD4+84+84最初のチェンジャー番号。
dwNumberOfChangersDWORD4+88+88ライブラリ内のチェンジャー総数。
dwNumberOfMediaDWORD4+92+92ライブラリ内のメディア総数。
dwNumberOfMediaTypesDWORD4+96+96ライブラリが扱うメディア種別の数。
dwNumberOfLibRequestsDWORD4+100+100保留中のライブラリ要求の数。
ReservedGUID16+104+104予約フィールド。GUID形式。
AutoRecoveryBOOL4+120+120自動回復が有効かを示すブール値。
dwFlagsDWORD4+124+124ライブラリの状態や属性を示すフラグ。

各言語での定義

#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