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 |