VPB 구조체(wdm.h)

VPB(볼륨 매개 변수 블록) 구조는 탑재된 파일 시스템 볼륨을 나타내는 디바이스 개체를 실제 또는 가상 디스크 디바이스를 나타내는 디바이스 개체에 매핑하는 데 사용됩니다.

구문

typedef struct _VPB {
  CSHORT                Type;
  CSHORT                Size;
  USHORT                Flags;
  USHORT                VolumeLabelLength;
  struct _DEVICE_OBJECT *DeviceObject;
  struct _DEVICE_OBJECT *RealDevice;
  ULONG                 SerialNumber;
  ULONG                 ReferenceCount;
  WCHAR                 VolumeLabel[MAXIMUM_VOLUME_LABEL_LENGTH / sizeof(WCHAR)];
} VPB, *PVPB;

멤버

Type

시스템에서 구조체가 VPB 개체임을 나타내는 데 사용되는 읽기 전용 멤버입니다.

Size

시스템에서 구조체가 VPB 개체임을 나타내는 데 사용되는 읽기 전용 멤버입니다.

Flags

의미
VPB_MOUNTED 이 비트는 파일 시스템이 논리 볼륨을 탑재했음을 나타내기 위해 I/O 관리자에 의해 설정됩니다.
VPB_LOCKED 논리 볼륨을 탑재한 파일 시스템 드라이버에서 이 비트를 설정하거나 지울 수 있습니다. 설정하면 I/O 관리자가 논리 볼륨을 대상으로 하는 모든 후속 만들기/열기 요청이 실패합니다. 파일 시스템은 볼륨을 잠그는 애플리케이션 요청에 대한 응답으로 또는 생성/열린 요청이 계속되지 않도록 일시적으로 하려는 경우 이 멤버를 설정하도록 선택할 수 있습니다.
VPB_PERSISTENT 이 비트는 파일 시스템 드라이버에서 설정하거나 지울 수 있습니다. 설정된 경우 I/O 관리자는 ReferenceCount 가 0인 경우에도 VPB 구조를 삭제하지 않습니다.
VPB_REMOVE_PENDING 기본 디바이스가 제거되고 있음을 나타내기 위해 PnP(플러그 앤 플레이) 관리자가 설정합니다.
VPB_RAW_MOUNT RAW 파일 시스템만 디바이스에 탑재할 수 있음을 나타냅니다.
VPB_DIRECT_WRITES_ALLOWED 볼륨에 대한 직접 쓰기 작업이 허용됨을 나타냅니다. 이 플래그는 RAW 파일 시스템이 탑재될 때 I/O 관리자 또는 볼륨을 안전하게 쓸 수 있다고 판단할 때 파일 시스템 자체에 의해 설정됩니다. 일반적으로 파일 시스템이 분리될 때 볼륨에 쓰는 것이 안전합니다.

VolumeLabelLength

볼륨 레이블의 길이를 바이트 단위로 지정하는 읽기/쓰기 멤버입니다. 이 멤버는 파일 시스템 드라이버에서 설정해야 합니다. 볼륨에 레이블이 없으면 이 멤버를 0으로 설정해야 합니다.

DeviceObject

파일 시스템 드라이버에서 설정한 읽기/쓰기 멤버로, FILE_DEVICE_DISK_FILE_SYSTEM 형식의 디바이스 개체를 가리킵니다. 이 디바이스 개체는 탑재된 볼륨을 나타내기 위해 파일 시스템 드라이버에 의해 만들어집니다.

RealDevice

I/O 관리자가 설정한 읽기 전용 멤버로, 탑재 가능한 논리 볼륨( DeviceObject가 가리키는)이 포함된 물리적 또는 가상 디스크 디바이스의 디바이스 개체를 가리킵니다.

SerialNumber

파일 시스템 볼륨과 연결된 일련 번호를 지정하는 읽기/쓰기 멤버입니다. 이 멤버는 파일 시스템 드라이버(사용 가능한 경우)에 의해 설정되어야 합니다.

ReferenceCount

VPB 구조체에 대한 참조 수를 지정하는 읽기 전용 멤버입니다. VPB 구조체에 대한 참조 수가 0보다 크면 I/O 관리자가 VPB 구조체의 할당을 취소하지 않습니다. 파일 시스템 드라이버가 해제 요청을 처리하기 위해 볼륨을 유지해야 하는 경우 ReferenceCount 는 읽기/쓰기 멤버로 간주될 수 있습니다.

VolumeLabel[MAXIMUM_VOLUME_LABEL_LENGTH / sizeof(WCHAR)]

탑재된 볼륨의 레이블을 지정하는 파일 시스템 드라이버에서 설정한 읽기/쓰기 멤버입니다. 볼륨 레이블의 길이는 32자 이하여야 합니다. 현재 MAXIMUM_VOLUME_LABEL_LENGTH 다음과 같이 정의됩니다.

#define MAXIMUM_VOLUME_LABEL_LENGTH  (32 * sizeof(WCHAR));

설명

VPB(볼륨 매개 변수 블록) 개체는 실제 디스크 디바이스 개체와 논리 볼륨 디바이스 개체 간의 연결을 만드는 데 사용됩니다. 즉, VPB는 파일 시스템의 볼륨 디바이스 개체를 볼륨이 탑재된 디바이스 또는 파티션에 매핑합니다. VPB 개체는 탑재할 수 있는 물리적 미디어, 가상 미디어 또는 논리 미디어를 나타내는 디바이스 개체에 대해서만 존재합니다.

I/O 관리자는 비페이지 풀에서 VPB 구조에 대한 메모리를 할당하고 할당을 취소합니다. 이 할당(또는 할당 취소)은 IoCreateDevice 또는 IoVerifyVolume 함수를 호출하여 디바이스 개체(앞에서 설명한 대로)를 만들 때 발생합니다. 즉, 만들어진 디바이스 개체는 다음 유형 중 하나여야 합니다.

  • FILE_DEVICE_DISK

  • FILE_DEVICE_CD_ROM

  • FILE_DEVICE_TAPE

  • FILE_DEVICE_VIRTUAL_DISK

디바이스 개체 유형에 대한 자세한 내용은 디바이스 유형 지정을 참조하세요.

드라이버는 VPB 개체의 적용 가능한 멤버에 액세스하기 전에 IoAcquireVpbSpinLock 을 호출해야 합니다.

불투명 멤버는 액세스할 수 없는 것으로 간주되어야 합니다. 개체 멤버 위치에 대한 종속성 또는 불투명 멤버에 대한 액세스 권한이 있는 드라이버는 시간이 지남에 따라 이식 가능하고 다른 드라이버와 상호 운용되지 않을 수 있습니다.

드라이버는 읽기 전용 멤버를 사용하여 관련 정보를 얻을 수 있습니다. 드라이버는 멤버가 포인터인 경우 읽기 전용 멤버 또는 멤버가 가리키는 개체를 수정해서는 안됩니다.

요구 사항

요구 사항
헤더 wdm.h(Wdm.h, Ntddk.h, Ntifs.h, FltKernel.h 포함)

추가 정보

DEVICE_OBJECT

FILE_OBJECT

볼륨 탑재 방법