当前位置: 首页>>代码示例>>C++>>正文


C++ PDOKAN_OPERATIONS::GetDiskFreeSpace方法代码示例

本文整理汇总了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;
}
开发者ID:Liryna,项目名称:dokany,代码行数:54,代码来源:volume.c

示例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;
}
开发者ID:joepperkins,项目名称:dokany,代码行数:45,代码来源:volume.c


注:本文中的PDOKAN_OPERATIONS::GetDiskFreeSpace方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。