本文整理汇总了C++中PDOKAN_OPERATIONS::GetDiskFreeSpace方法的典型用法代码示例。如果您正苦于以下问题:C++ PDOKAN_OPERATIONS::GetDiskFreeSpace方法的具体用法?C++ PDOKAN_OPERATIONS::GetDiskFreeSpace怎么用?C++ PDOKAN_OPERATIONS::GetDiskFreeSpace使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PDOKAN_OPERATIONS
的用法示例。
在下文中一共展示了PDOKAN_OPERATIONS::GetDiskFreeSpace方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: sizeof
NTSTATUS
DokanFsFullSizeInformation(PEVENT_INFORMATION EventInfo,
PEVENT_CONTEXT EventContext,
PDOKAN_FILE_INFO FileInfo,
PDOKAN_OPERATIONS DokanOperations) {
ULONGLONG freeBytesAvailable = 0;
ULONGLONG totalBytes = 0;
ULONGLONG freeBytes = 0;
NTSTATUS status = STATUS_NOT_IMPLEMENTED;
ULONG allocationUnitSize = FileInfo->DokanOptions->AllocationUnitSize;
ULONG sectorSize = FileInfo->DokanOptions->SectorSize;
PFILE_FS_FULL_SIZE_INFORMATION sizeInfo =
(PFILE_FS_FULL_SIZE_INFORMATION)EventInfo->Buffer;
if (EventContext->Operation.Volume.BufferLength <
sizeof(FILE_FS_FULL_SIZE_INFORMATION)) {
return STATUS_BUFFER_OVERFLOW;
}
if (DokanOperations->GetDiskFreeSpace) {
status = DokanOperations->GetDiskFreeSpace(
&freeBytesAvailable, // FreeBytesAvailable
&totalBytes, // TotalNumberOfBytes
&freeBytes, // TotalNumberOfFreeBytes
FileInfo);
}
if (status == STATUS_NOT_IMPLEMENTED) {
status = DokanGetDiskFreeSpace(&freeBytesAvailable, // FreeBytesAvailable
&totalBytes, // TotalNumberOfBytes
&freeBytes, // TotalNumberOfFreeBytes
FileInfo);
}
if (status != STATUS_SUCCESS) {
return status;
}
sizeInfo->TotalAllocationUnits.QuadPart =
totalBytes / allocationUnitSize;
sizeInfo->ActualAvailableAllocationUnits.QuadPart =
freeBytes / allocationUnitSize;
sizeInfo->CallerAvailableAllocationUnits.QuadPart =
freeBytesAvailable / allocationUnitSize;
sizeInfo->SectorsPerAllocationUnit =
allocationUnitSize / sectorSize;
sizeInfo->BytesPerSector = sectorSize;
EventInfo->BufferLength = sizeof(FILE_FS_FULL_SIZE_INFORMATION);
return STATUS_SUCCESS;
}
示例2: sizeof
ULONG
DokanFsFullSizeInformation(
PEVENT_INFORMATION EventInfo,
PEVENT_CONTEXT EventContext,
PDOKAN_FILE_INFO FileInfo,
PDOKAN_OPERATIONS DokanOperations)
{
ULONGLONG freeBytesAvailable = 0;
ULONGLONG totalBytes = 0;
ULONGLONG freeBytes = 0;
int status = -1;
PFILE_FS_FULL_SIZE_INFORMATION sizeInfo = (PFILE_FS_FULL_SIZE_INFORMATION)EventInfo->Buffer;
if (!DokanOperations->GetDiskFreeSpace) {
DokanOperations->GetDiskFreeSpace = DokanGetDiskFreeSpace;
//return STATUS_NOT_IMPLEMENTED;
}
if (EventContext->Operation.Volume.BufferLength < sizeof(FILE_FS_FULL_SIZE_INFORMATION)) {
return STATUS_BUFFER_OVERFLOW;
}
status = DokanOperations->GetDiskFreeSpace(
&freeBytesAvailable, // FreeBytesAvailable
&totalBytes, // TotalNumberOfBytes
&freeBytes, // TotalNumberOfFreeBytes
FileInfo);
if (status < 0) {
return STATUS_INVALID_PARAMETER;
}
sizeInfo->TotalAllocationUnits.QuadPart = totalBytes / DOKAN_ALLOCATION_UNIT_SIZE;
sizeInfo->ActualAvailableAllocationUnits.QuadPart = freeBytes / DOKAN_ALLOCATION_UNIT_SIZE;
sizeInfo->CallerAvailableAllocationUnits.QuadPart = freeBytesAvailable / DOKAN_ALLOCATION_UNIT_SIZE;
sizeInfo->SectorsPerAllocationUnit = DOKAN_ALLOCATION_UNIT_SIZE / DOKAN_SECTOR_SIZE;
sizeInfo->BytesPerSector = DOKAN_SECTOR_SIZE;
EventInfo->BufferLength = sizeof(FILE_FS_FULL_SIZE_INFORMATION);
return STATUS_SUCCESS;
}