다음을 통해 공유


IOCTL_SCSI_MINIPORT_NVCACHE IOCTL(ntddscsi.h)

여기에 정의된 NV 캐시 관리 작업은 DeviceIoControl 및 IOCTL_SCSI_MINIPORT 제어 코드를 사용하여 관리자 권한으로 실행되는 사용자 모드 애플리케이션 코드에서 호출할 수 있습니다. 또는 호출자는 IoBuildDeviceIoControlRequest 및 IOCTL_SCSI_MINIPORT 제어 코드를 사용하는 커널 모드 드라이버 코드일 수 있습니다.

NV 캐시 관리 함수 요청은 NVCACHE_REQUEST_BLOCK 구조의 필드에 지정됩니다. IOCTL_SCSI_MINIPORT 입력은 SRB_IO_CONTROL 구조와 NVCACHE_REQUEST_BLOCK구조가 포함된 사용자 정의 데이터 구조입니다. 추가 함수별 데이터는 필요에 따라 NVCACHE_REQUEST_BLOCK 구조를 따를 수 있습니다.

NV 캐시 관리 기능에 사용되는 인터페이스는 두 계층으로 구성됩니다. 첫 번째 계층은 호출자와 포트 드라이버 간의 인터페이스이며 IOCTL_SCSI_MINIPORT 정의됩니다. 두 번째 계층은 ATA8-ACS 사양 및 IOCTL_SCSI_MINIPORT_NVCACHE 정의된 호출자와 디바이스 간의 인터페이스입니다. 사용자 모드 애플리케이션 코드에 대한 API는 DeviceIoControl 인터페이스입니다. 커널 모드 드라이버 코드에 대한 API는 IOCTL_SCSI_MINIPORT 사용하는 IoBuildDeviceIoControlRequest 인터페이스입니다.

주 코드

IRP_MJ_DEVICE_CONTROL

입력 버퍼

Irp-AssociatedIrp.SystemBuffer>의 버퍼에는 서명 필드가 "HYBRDISK"로 설정된 SRB_IO_CONTROL 구조체와 ControlCode 필드가 IOCTL_SCSI_MINIPORT_NVCACHE. NVCACHE_REQUEST_BLOCK 구조체는 SRB_IO_CONTROL 구조체 바로 뒤를 따릅니다. 선택적 함수별 데이터 버퍼는 NVCACHE_REQUEST_BLOCK 구조 바로 뒤를 따릅니다.

입력 버퍼 길이

Parameters.DeviceIoControl.InputBufferLength 는 모든 입력 데이터의 크기(바이트)를 나타냅니다( SRB_IO_CONTROL, NVCACHE_REQUEST_BLOCK 및 함수별 데이터 버퍼 결합). 데이터 버퍼의 존재 또는 부재는 NVCACHE_REQUEST_BLOCK****DataBufSize 필드로 표시됩니다.

출력 버퍼

업데이트된 SRB_IO_CONTROLSRB_IO_CONTROL**]() 및 NVCACHE_REQUEST_BLOCK 구조체와 선택적 함수별 데이터 버퍼는 Irp-AssociatedIrp.SystemBuffer>에서 버퍼로 반환됩니다.

출력 버퍼 길이

버퍼의 길이입니다.

상태 블록

정보 필드에는 출력 버퍼에 반환된 바이트 수가 포함됩니다. 상태 필드는 작업의 결과를 나타냅니다.

요구 사항

요구 사항
헤더 ntddscsi.h(Ntddscsi.h 포함)

추가 정보

IOCTL_SCSI_MINIPORT

IoBuildDeviceIoControlRequest

NVCACHE_REQUEST_BLOCK

SRB_IO_CONTROL