// winioctl.h
// CTL_CODE(0x0009, 0x08d, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_GET_RETRIEVAL_POINTER_BASE 0x00090234
View the official Win32 API reference// ntifs.h
// CTL_CODE(0x0009, 0x08d, METHOD_BUFFERED, FILE_ANY_ACCESS)
#define FSCTL_GET_RETRIEVAL_POINTER_BASE 0x00090234
View the official Windows hardware development documentationNo description available.
Returns the sector offset to the first logical cluster number (LCN) of the file system relative to the start of the volume.
To perform this operation, call the DeviceIoControl function with the following parameters.
BOOL DeviceIoControl(
(HANDLE) hDevice, // handle to volume
FSCTL_GET_RETRIEVAL_POINTER_BASE, // dwIoControlCode
(LPVOID) NULL, // input buffer
(DWORD) 0, // size of input buffer
(LPVOID) lpOutBuffer, // output buffer
(DWORD) nOutBufferSize, // size of output buffer
(LPDWORD) lpBytesReturned, // number of bytes returned
(LPOVERLAPPED) lpOverlapped // OVERLAPPED structure
);
Irp->IoStatus.Status is set to STATUS_SUCCESS if the request is successful.
Otherwise, Status to the appropriate error condition as a NTSTATUS code.
For more information, see NTSTATUS Values.
Adding the value retrieved by FSCTL_GET_RETRIEVAL_POINTER_BASE to the value retrieved by the FSCTL_GET_RETRIEVAL_POINTERS control code results in a volume-relative file extent offset.
In Windows 8 and Windows Server 2012, this code is supported by the following technologies.
| Technology | Supported |
|---|---|
| Server Message Block (SMB) 3.0 protocol | No |
| SMB 3.0 Transparent Failover (TFO) | No |
| SMB 3.0 with Scale-out File Shares (SO) | No |
| Cluster Shared Volume File System (CsvFS) | Yes |
The FSCTL_GET_RETRIEVAL_POINTER_BASE returns the sector offset to the first logical cluster number (LCN) of the file system relative to the start of the volume.
To perform this operation, call the FltFsControlFile function or ZwFsControlFile function with the following parameters.
FileObject [in]: FltFsControlFile only. A file object pointer for the volume for which FSCTL_GET_RETRIEVAL_POINTER_BASE is to retrieve the base. This parameter is required and cannot be NULL.
FileHandle [in]: ZwFsControlFile only. A file handle for the volume for which FSCTL_GET_RETRIEVAL_POINTER_BASE is to retrieve the base. This parameter is required and cannot be NULL.
This handle must be opened with the SE_MANAGE_VOLUME_NAME access rights. For more information, see File Security and Access Rights.
FsControlCode [in]: A control code for the operation. Use FSCTL_GET_RETRIEVAL_POINTER_BASE for this operation.
InputBuffer [in]: Not used with this operation. Set to NULL.
InputBufferLength [in]: Not used with this operation. Set to zero.
OutputBuffer [out]: A pointer to a LARGE_INTEGER, which receives the sector offset to the first LCN of the file system relative to the start of the volume.
OutputBufferLength [out]: The size of the output buffer, in bytes. This value must be 8.
FltFsControlFile or ZwFsControlFile returns STATUS_SUCCESS or an appropriate NTSTATUS value such as one of the following:
| Code | Meaning |
|---|---|
| STATUS_SUCCESS | The operation was successful. OutputBuffer contains the sector offset to the first LCN of the file system relative to the start of the volume. |
| STATUS_ACCESS_DENIED | The user does not have SE_MANAGE_VOLUME access. |
| STATUS_BUFFER_TOO_SMALL | OutputBuffer is not large enough for the result. No information has been written to the buffer. |
| STATUS_INVALID_PARAMETER | A parameter was not valid; for example, the handle used is not a valid volume handle. |
Adding the value retrieved by FSCTL_GET_RETRIEVAL_POINTER_BASE to the value retrieved by the FSCTL_GET_RETRIEVAL_POINTERS control code results in a volume-relative file extent offset.
The FSCTL_GET_RETRIEVAL_POINTER_BASE control code can be used on FastFAT and exFAT devices. This capability supports the use of BitLocker for devices such as flash drives.
| Requirement type | Requirement |
|---|---|
| Minimum supported client | Windows 7 |
| Minimum supported server | Windows Server 2008 R2 |
| Header | Ntifs.h (include Ntifs.h or Fltkernel.h) |