使用windows系统服务程序调用GetDiskFreeSpaceEx获取网络映射空间大小失败!
提示错误码3,
盘符里可以看到映射的空间。
大神帮忙解决怎么破啊!!!

解决方案 »

  1.   

    应该是这个API需要在用户态权限程序执行才能拿到网络映射空间
      

  2.   

    @oyljerry 
    请问,Windows操作系统怎么设置,才能上服务获取这个权限啊?
      

  3.   

    GetDiskFreeSpaceEx
    The GetDiskFreeSpaceEx function obtains information about the amount of space available on a disk volume: the total amount of space, the total amount of free space, and the total amount of free space available to the user associated with the calling thread. BOOL GetDiskFreeSpaceEx(
      LPCTSTR lpDirectoryName,                 // pointer to the directory name
      PULARGE_INTEGER lpFreeBytesAvailableToCaller, // receives the number of bytes on
                                                    // disk available to the caller
      PULARGE_INTEGER lpTotalNumberOfBytes,    // receives the number of bytes on disk
      PULARGE_INTEGER lpTotalNumberOfFreeBytes // receives the free bytes on disk
    );
     
    Parameters
    lpDirectoryName 
    Pointer to a null-terminated string that specifies a directory on the disk of interest. This string can be a UNC name. If this parameter is a UNC name, you must follow it with an additional backslash. For example, you would specify \\MyServer\MyShare as \\MyServer\MyShare\. 
    If lpDirectoryName is NULL, the GetDiskFreeSpaceEx function obtains information about the disk that contains the current directory. Note that lpDirectoryName does not have to specify the root directory on a disk. The function accepts any directory on the disk. lpFreeBytesAvailableToCaller 
    Pointer to a variable to receive the total number of free bytes on the disk that are available to the user associated with the calling thread. 
    Windows NT 5.0 and later: If per-user quotas are in use, this value may be less than the total number of free bytes on the disk. lpTotalNumberOfBytes 
    Pointer to a variable to receive the total number of bytes on the disk that are available to the user associated with the calling thread. 
    Windows NT 5.0 and later: If per-user quotas are in use, this value may be less than the total number of bytes on the disk. lpTotalNumberOfFreeBytes 
    Pointer to a variable to receive the total number of free bytes on the disk. 
    This parameter can be NULL. Return Values
    If the function succeeds, the return value is nonzero. If the function fails, the return value is zero. To get extended error information, call GetLastError. Res
    Note that the values obtained by this function are of type ULARGE_INTEGER. Be careful not to truncate these values to 32 bits.Windows 95 OSR2: The GetDiskFreeSpaceEx function is available on Windows 95 systems beginning with OEM Service Release 2 (OSR2). To determine whether GetDiskFreeSpaceEx is available, call the LoadLibrary or LoadLibraryEx function to load the KERNEL32.DLL file, then call the GetProcAddress function to obtain an address for GetDiskFreeSpaceEx. If GetProcAddress fails, or if GetDiskFreeSpaceEx fails with the ERROR_CALL_NOT_IMPLEMENTED code, use the GetDiskFreeSpace function instead of GetDiskFreeSpaceEx.QuickInfo
      Windows NT: Requires version 4.0 or later.
      Windows: Requires Windows 95 OSR2 or later.
      Windows CE: Unsupported.
      Header: Declared in winbase.h.
      Import Library: Use kernel32.lib.
      Unicode: Implemented as Unicode and ANSI versions on Windows NT.See Also
    File I/O Overview, File Functions, GetDiskFreeSpace