Esempio n. 1
0
File: Net.cpp Progetto: BIAINC/7Zip
DWORD GetResourceInformation(const CResourceW &resource,
    CResourceW &destResource, UString &systemPathPart)
{
  if (g_IsNT)
  {
    CByteBuffer byteBuffer;
    const DWORD kBufferSize = 16384;
    byteBuffer.SetCapacity(kBufferSize);
    LPNETRESOURCEW lpnrLocal = (LPNETRESOURCEW) (BYTE *)(byteBuffer);
    ZeroMemory(lpnrLocal, kBufferSize);
    DWORD bufferSize = kBufferSize;
    NETRESOURCEW netResource;
    ConvertCResourceToNETRESOURCE(resource, netResource);
    LPWSTR lplpSystem;
    DWORD result = ::WNetGetResourceInformationW(&netResource,
      lpnrLocal, &bufferSize, &lplpSystem);
    if (result != NO_ERROR)
      return result;
    if (lplpSystem != 0)
      systemPathPart = lplpSystem;
    ConvertNETRESOURCEToCResource(lpnrLocal[0], destResource);
    return result;
  }
  CResource resourceA, destResourceA;
  ConvertResourceWToResource(resource, resourceA);
  AString systemPathPartA;
  DWORD result = GetResourceInformation(resourceA, destResourceA, systemPathPartA);
  ConvertResourceToResourceW(destResourceA, destResource);
  systemPathPart = GetUnicodeString(systemPathPartA);
  return result;
}
Esempio n. 2
0
DWORD GetResourceParent(const CResourceW &resource, CResourceW &parentResource)
{
  if (g_IsNT)
  {
    const DWORD kBufferSize = 16384;
    CByteArr byteBuffer(kBufferSize);
    LPNETRESOURCEW lpnrLocal = (LPNETRESOURCEW) (BYTE *)(byteBuffer);
    ZeroMemory(lpnrLocal, kBufferSize);
    DWORD bufferSize = kBufferSize;
    NETRESOURCEW netResource;
    ConvertCResourceToNETRESOURCE(resource, netResource);
    DWORD result = ::WNetGetResourceParentW(&netResource, lpnrLocal, &bufferSize);
    if (result != NO_ERROR)
      return result;
    ConvertNETRESOURCEToCResource(lpnrLocal[0], parentResource);
    return result;
  }
  CResource resourceA, parentResourceA;
  ConvertResourceWToResource(resource, resourceA);
  DWORD result = GetResourceParent(resourceA, parentResourceA);
  ConvertResourceToResourceW(parentResourceA, parentResource);
  return result;
}
Esempio n. 3
0
DWORD CEnum::Next(CResourceW &resource)
{
  if (g_IsNT)
  {
    const DWORD kBufferSize = 16384;
    CByteArr byteBuffer(kBufferSize);
    LPNETRESOURCEW lpnrLocal = (LPNETRESOURCEW) (BYTE *)(byteBuffer);
    ZeroMemory(lpnrLocal, kBufferSize);
    DWORD bufferSize = kBufferSize;
    DWORD numEntries = 1;
    DWORD result = NextW(&numEntries, lpnrLocal, &bufferSize);
    if (result != NO_ERROR)
      return result;
    if (numEntries != 1)
      return (DWORD)E_FAIL;
    ConvertNETRESOURCEToCResource(lpnrLocal[0], resource);
    return result;
  }
  CResource resourceA;
  DWORD result = Next(resourceA);
  ConvertResourceToResourceW(resourceA, resource);
  return result;
}