다음을 통해 공유


IOCTL_STORAGE_GET_DEVICE_INTERNAL_LOG IOCTL(ntddstor.h)

드라이버는 IOCTL_STORAGE_GET_DEVICE_INTERNAL_LOG 사용하여 디바이스에서 내부 상태 데이터를 가져올 수 있습니다.

주 코드

IRP_MJ_INTERNAL_DEVICE_CONTROL

입력 버퍼

쿼리할 데이터 형식을 식별하는 GET_DEVICE_INTERNAL_STATUS_DATA_REQUEST 구조체입니다.

입력 버퍼 길이

Parameters.DeviceIoControl.InputBufferLengthIrp->AssociatedIrp.SystemBuffer매개 변수 버퍼의 크기를 바이트 단위로 나타내며, >= sizeof(GET_DEVICE_INTERNAL_STATUS_DATA_REQUEST).

출력 버퍼

드라이버는 Irp->AssociatedIrp.SystemBuffer버퍼에 출력을 반환합니다. 이 버퍼는 디바이스의 내부 상태의 DEVICE_INTERNAL_STATUS_DATA 구조를 포함합니다.

출력 버퍼 길이

I/O 스택 위치의 parameters.DeviceIoControl.OutputBufferLength 매개 변수 버퍼의 크기(바이트)를 나타내며, 매개 변수 버퍼의 크기는 >= DEVICE_INTERNAL_STATUS_DATA(sizeof).

입력/출력 버퍼

n/a

입력/출력 버퍼 길이

n/a

상태 블록

Irp->IoStatus.Status 요청이 성공하면 STATUS_SUCCESS 설정됩니다. 그렇지 않으면 상태가 NTSTATUS 코드로 적절한 오류 조건으로 설정됩니다. 자세한 내용은 NTSTATUS 값참조하세요.

발언

IOCTL_STORAGE_GET_DEVICE_INTERNAL_LOG 모든 스토리지 디바이스에서 호스트 시작 디바이스 원격 분석 로그를 반환합니다. 다음 의사 코드는 원격 분석 데이터 헤더를 요청하는 방법을 보여 줍니다.

// Allocate a GET_DEVICE_INTERNAL_STATUS_DATA_REQUEST structure, then
// initialize it with a data header request:
//   request.Version = sizeof(GET_DEVICE_INTERNAL_STATUS_DATA_REQUEST);
//   request.Size = sizeof(GET_DEVICE_INTERNAL_STATUS_DATA_REQUEST);
//   request.RequestDataType = DeviceCurrentInternalStatusDataHeader;

// Allocate a DEVICE_INTERNAL_STATUS_DATA structure in which
// to return the header data, with outputBufferLength set to
// (sizeof(DEVICE_INTERNAL_STATUS_DATA) + 512).

// Get the device internal status data.
BOOL result = TRUE;
ULONG returnedLength = 0;
result = DeviceIoControl(deviceHandle,
            IOCTL_STORAGE_GET_DEVICE_INTERNAL_LOG,
            &request,
            sizeof(GET_DEVICE_INTERNAL_STATUS_DATA_REQUEST),
            &outputBuffer,
            outputBufferLength,
            &returnedLength,
            NULL);

요구 사항

요구
지원되는 최소 클라이언트 Windows 10 버전 2004
헤더 ntddstor.h

참고 항목

DEVICE_INTERNAL_STATUS_DATA

GET_DEVICE_INTERNAL_STATUS_DATA_REQUEST