ntdll: Add a stub implementation of FSCTL_GET_RETRIEVAL_POINTERS.
diff --git a/dlls/ntdll/file.c b/dlls/ntdll/file.c index 3dc5358..68bed0e 100644 --- a/dlls/ntdll/file.c +++ b/dlls/ntdll/file.c
@@ -1495,6 +1495,28 @@ status = STATUS_SUCCESS; break; + case FSCTL_GET_RETRIEVAL_POINTERS: + { + RETRIEVAL_POINTERS_BUFFER *buffer = (RETRIEVAL_POINTERS_BUFFER *)out_buffer; + + FIXME("stub: FSCTL_GET_RETRIEVAL_POINTERS\n"); + + if (out_size >= sizeof(RETRIEVAL_POINTERS_BUFFER)) + { + buffer->ExtentCount = 1; + buffer->StartingVcn.QuadPart = 1; + buffer->Extents[0].NextVcn.QuadPart = 0; + buffer->Extents[0].Lcn.QuadPart = 0; + io->Information = sizeof(RETRIEVAL_POINTERS_BUFFER); + status = STATUS_SUCCESS; + } + else + { + io->Information = 0; + status = STATUS_BUFFER_TOO_SMALL; + } + break; + } case FSCTL_PIPE_LISTEN: case FSCTL_PIPE_WAIT: default:
diff --git a/include/winioctl.h b/include/winioctl.h index 8765cdf..d1c3376 100644 --- a/include/winioctl.h +++ b/include/winioctl.h
@@ -376,6 +376,15 @@ DISK_EXTENT Extents[1]; } VOLUME_DISK_EXTENTS; +typedef struct RETRIEVAL_POINTERS_BUFFER { + DWORD ExtentCount; + LARGE_INTEGER StartingVcn; + struct { + LARGE_INTEGER NextVcn; + LARGE_INTEGER Lcn; + } Extents[1]; +} RETRIEVAL_POINTERS_BUFFER, *PRETRIEVAL_POINTERS_BUFFER; + /* End: _WIN32_WINNT >= 0x0400 */ /*