GithubHelp home page GithubHelp logo

azure / azure-storage-cpp Goto Github PK

View Code? Open in Web Editor NEW
129.0 46.0 146.0 32.33 MB

Microsoft Azure Storage Client Library for C++

Home Page: http://azure.github.io/azure-storage-cpp

License: Apache License 2.0

CMake 0.82% C++ 99.10% C 0.08%

azure-storage-cpp's Introduction

Azure Storage Client Library for C++ (7.5.0) (Deprecated)

For more details on the retirement and alternatives to using this project, visit Retirement notice: The legacy Azure Storage C++ client libraries will be retired on 29 March 2025.

The Azure Storage Client Library for C++ allows you to build applications against Microsoft Azure Storage. For an overview of Azure Storage, see Introduction to Microsoft Azure Storage.

Features

  • Tables
    • Create/Delete Tables
    • Query/Create/Read/Update/Delete Entities
  • Blobs
    • Create/Read/Update/Delete Blobs
  • Queues
    • Create/Delete Queues
    • Insert/Peek Queue Messages
    • Advanced Queue Operations
  • Files
    • Create/Delete/Resize Shares
    • Create/Delete Directories
    • Create/Read/Update/Delete Files

Getting started

For the best development experience, we recommend that developers use the vcpkg as the cross-platform library manager.

Requirements

To call Azure services, you must first have an Azure subscription. Sign up for a free trial or use your MSDN subscriber benefits.

Need Help?

Be sure to check out the Azure Storage Forum on MSDN if you need help, or use StackOverflow.

Collaborate & Contribute

We gladly accept community contributions.

For general suggestions about Azure, use our Azure feedback forum.

Download & Install

Build from Source

To build with source code, there are three ways to install dependencies:

  • Via vcpkg

    You can manage the dependencies with vcpkg, and use Visual Studio 2015 update 3 or Visual Studio 2017 for development environment. Simply installing Casablanca via vcpkg will setup everything needed.

    C:\src\vcpkg> .\vcpkg install cpprestsdk

    If you want to build and run test code, you can install UnitTest++ via vcpkg:

    C:\src\vcpkg> .\vcpkg install unittest-cpp
  • Via NuGet

    Because Casablanca does not release NuGet packages anywhere anymore, Starting from 5.1.0, this repository cannot be built with pre-built Casablanca NuGet packages. However, you can export your own version of Casablanca NuGet packages to install dependencies of this project:

    C:\src\vcpkg> .\vcpkg install cpprestsdk
    C:\src\vcpkg> .\vcpkg export --nuget cpprestsdk --nuget-id=Casablanca --nuget-version=2.10.18
  • Manage dependencies by yourself

    It is not recommended to manage dependencies by yourself. However, you can still build Casablanca by yourself by following these instructions and specify the include directories and link binaries.

To create a local clone of the source for the Azure Storage Client Library for C++ via git, type:

git clone https://github.com/Azure/azure-storage-cpp.git
cd azure-storage-cpp

Follow Getting Started on Linux or Getting Started on macOS to build on these two platforms.

To build on Windows, directly open the solution file with Visual Studio in project root directory.

Visual Studio Version

Starting from version 6.1.0, Azure Storage Client Library for C++ supports Visual Studio 2015 and Visual Studio 2017. In case you have the need to use Visual Studio 2013, please get version 6.0.0, to use Visual Studio 2012, please get version 2.0.0.

Via NuGet

To install the binaries for the Azure Storage Client Library for C++, you can export a NuGet package with vcpkg and put it into your local NuGet feed. For more information about how to export a NuGet package, please see Binary Export.

Normally, exporting NuGet package is done with the following command:

C:\src\vcpkg> .\vcpkg export --nuget azure-storage-cpp --nuget-id=Microsoft.Azure.Storage.CPP --nuget-version=7.1.0

Via vcpkg

To install the Azure Storage Client Library for C++ through vcpkg, you need vcpkg installed first. Please follow the instructions(https://github.com/Microsoft/vcpkg#quick-start) to install vcpkg.

Install package with:

C:\src\vcpkg> .\vcpkg install azure-storage-cpp

Dependencies

C++ REST SDK

The Azure Storage Client Library for C++ depends on the C++ REST SDK (codename "Casablanca") It can be installed through vcpkg (vcpkg install cpprestsdk) or downloaded directly from GitHub.

The validated Casablanca version for each major or recent release on different platforms can be found in the following chart:

azure-storage-cpp's version Casablanca version for Windows Casablanca version for Linux
1.0.0 2.4.0 2.4.0
2.0.0 2.4.0 2.4.0
3.0.0 2.9.1 2.9.1
4.0.0 2.9.1 2.9.1
5.0.0 2.9.1 2.9.1
5.0.1 2.9.1 2.9.1
5.1.0 2.10.6 2.10.3
5.1.1 2.10.6 2.10.3
5.2.0 2.10.6 2.10.3
6.0.0 2.10.10 2.10.10
6.1.0 2.10.13 2.10.13
7.0.0 2.10.14 2.10.14
7.1.0 2.10.14 2.10.14
7.2.0 2.10.14 2.10.14
7.3.0 2.10.15 2.10.15
7.3.1 2.10.15 2.10.15
7.4.0 2.10.16 2.10.16
7.5.0 2.10.18 2.10.18

Code Samples

To get started with the coding, please visit the following articles:

To accomplish specific tasks, please find the code samples at samples folder.

Getting Started on Linux

Getting Started on Ubuntu

As mentioned above, the Azure Storage Client Library for C++ depends on Casablanca. Follow these instructions to compile it.

Once this is complete, then:

  • Clone the project using git:
git clone https://github.com/Azure/azure-storage-cpp.git

The project is cloned to a folder called azure-storage-cpp. Always use the master branch, which contains the latest release.

  • Install additional dependencies:
sudo apt-get install libxml2-dev uuid-dev
  • Build the SDK for Release:
cd azure-storage-cpp/Microsoft.WindowsAzure.Storage
mkdir build.release
cd build.release
CASABLANCA_DIR=<path to Casablanca> CXX=g++-5.1 cmake .. -DCMAKE_BUILD_TYPE=Release
make

In the above command, replace <path to Casablanca> to point to your local installation of Casablanca. For example, if the file libcpprest.so exists at location ~/Github/Casablanca/cpprestsdk/Release/build.release/Binaries/libcpprest.so, then your cmake command should be:

CASABLANCA_DIR=~/Github/Casablanca/cpprestsdk CXX=g++-5.1 cmake .. -DCMAKE_BUILD_TYPE=Release

The library is generated under azure-storage-cpp/Microsoft.WindowsAzure.Storage/build.release/Binaries/.

To build and run unit tests:

  • Install UnitTest++ library:
sudo apt-get install libunittest++-dev
  • Build the test code:
CASABLANCA_DIR=<path to Casablanca> CXX=g++-5.1 cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=ON
make
  • Run unit tests
cd Binaries
vi test_configurations.json # modify test config file to include your storage account credentials
./azurestoragetest

To build sample code:

vi ../samples/SamplesCommon/samples_common.h # modify connection string to include your storage account credentials
CASABLANCA_DIR=<path to Casablanca> CXX=g++-5.1 cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_SAMPLES=ON
make

To run the samples:

cd Binaries
./azurestoragesample

Please note the current build script is only tested on Ubuntu 16.04. Please update the script accordingly for other distributions.

Please note that starting from 2.10.0, Casablanca requires a minimum version of CMake v3.1, so the default CMake on Ubuntu 14.04 cannot support Casablanca build. User can upgrade CMake by themselves to build Casablanca. If default CMake (2.8) for Ubuntu 14.04 must be used, 5.0.1 with Casablanca version v2.9.1 is recommended.

Getting Started on SLES12

Please note the following build script is only tested on SLES12 SP3. The script may need to be updated accordingly for other distributions.

Before building the Azure Storage Client Library on C++, some prerequisites need to be installed first:

  • Install prerequisites:
sudo zypper install git gcc-c++ boost-devel cmake libopenssl-devel libxml2-devel libuuid-devel

The Azure Storage Client Library for C++ depends on Casablanca, following are instructions to build and install Casablanca:

  • Clone the project using git:
git clone https://github.com/Microsoft/cpprestsdk.git
  • Checkout the version on which Azure Storage Client Library for C++ depends:
git checkout tags/v2.10.18 -b v2.10.18
  • Build the project in Release mode
cd cpprestsdk/Release
git submodule update --init
mkdir build.release
cd build.release
CXX=g++-5.1 cmake .. -DCMAKE_BUILD_TYPE=Release -DWERROR=OFF -DBUILD_SAMPLES=OFF -DBUILD_TESTS=OFF
sudo make install

To build the Azure Storage Client Library for C++ project:

  • Clone the project using git:
git clone https://github.com/Azure/azure-storage-cpp.git

The project is cloned to a folder called azure-storage-cpp. Always use the master branch, which contains the latest release.

  • Build the SDK in Release mode:
cd azure-storage-cpp/Microsoft.WindowsAzure.Storage
mkdir build.release
cd build.release
CXX=g++-5.1 cmake .. -DCMAKE_BUILD_TYPE=Release
make

The library is generated under azure-storage-cpp/Microsoft.WindowsAzure.Storage/build.release/Binaries/.

The Azure Storage Client Library for C++ project depends on Unitest++ for unit test:

To build and install Unitest++:

  • Clone the project using git:
git clone https://github.com/unittest-cpp/unittest-cpp.git
  • Build and install the project:
cd unittest-cpp/builds/
CXX=g++-5.1 cmake ..
sudo make install

Build and run unit test against Azure Storage Client Library for C++:

  • Build the test code:
CXX=g++-5.1 cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=ON
make
  • Run unit tests
cd Binaries
vi test_configurations.json # modify test config file to include your storage account credentials
./azurestoragetest

To build sample code:

vi ../samples/SamplesCommon/samples_common.h # modify connection string to include your storage account credentials
CXX=g++-5.1 cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_SAMPLES=ON
make

To run the samples:

cd Binaries
./azurestoragesample

Getting Started on CentOS 6/7

Please note the following build script is only tested on CentOS 6.10 and 7.6. The script may need to be updated accordingly for other distributions.

Before building the Azure Storage Client Library on C++, some prerequisites need to be installed first:

  • Install prerequisites:
sudo yum install epel-release centos-release-scl
sudo yum install git cmake3 make openssl-devel libxml2-devel libuuid-devel
  • Install and enable to use gcc-c++. Note that devtoolset-4 may be not available on some platforms, you can choose to install whichever newer than that, like devtoolset-8.
sudo yum install devtoolset-4-gcc-c++
scl enable devtoolset-4 bash
  • Download and install boost
wget https://dl.bintray.com/boostorg/release/1.68.0/source/boost_1_68_0.tar.gz
tar xvf boost_1_68_0.tar.gz
cd boost_1_68_0
./bootstrap.sh
sudo ./b2 install

The Azure Storage Client Library for C++ depends on Casablanca, following are instructions to build and install Casablanca:

  • Clone the project using git:
git clone https://github.com/Microsoft/cpprestsdk.git
  • Checkout the version on which Azure Storage Client Library for C++ depends:
cd cpprestsdk
git checkout tags/v2.10.18 -b v2.10.18
  • Build the project in Release mode
git submodule update --init
mkdir Release/build.release
cd Release/build.release
cmake3 .. -DCMAKE_BUILD_TYPE=Release -DWERROR=OFF -DBUILD_SAMPLES=OFF -DBUILD_TESTS=OFF
sudo make install

To build the Azure Storage Client Library for C++ project:

  • Clone the project using git:
git clone https://github.com/Azure/azure-storage-cpp.git

The project is cloned to a folder called azure-storage-cpp. Always use the master branch, which contains the latest release.

  • Build the SDK in Release mode:
cd azure-storage-cpp/Microsoft.WindowsAzure.Storage
mkdir build.release
cd build.release
cmake3 .. -DCMAKE_BUILD_TYPE=Release
make

The library is generated under azure-storage-cpp/Microsoft.WindowsAzure.Storage/build.release/Binaries/.

The Azure Storage Client Library for C++ project depends on Unitest++ for unit test:

To build and install Unitest++:

  • Clone the project using git:
git clone https://github.com/unittest-cpp/unittest-cpp.git
  • Build and install the project:
cd unittest-cpp/builds/
cmake3 ..
sudo make install

Build and run unit test against Azure Storage Client Library for C++:

  • Build the test code:
cmake3 .. -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=ON
make
  • Run unit tests
cd Binaries
vi test_configurations.json # modify test config file to include your storage account credentials
./azurestoragetest
  • To build sample code:
vi ../samples/SamplesCommon/samples_common.h # modify connection string to include your storage account credentials
cmake3 .. -DCMAKE_BUILD_TYPE=Release -DBUILD_SAMPLES=ON
make
  • To run the samples:
cd Binaries
./azurestoragesample

Getting Started on macOS

Note that macOS is not officially supported yet, but it has been seen to work, YMMV. This build has been tested to work when the dependencies are installed via homebrew, YMMV if using FINK or MacPorts

Install dependecies with homebrew:

brew install libxml2 ossp-uuid openssl

As mentioned above, the Azure Storage Client Library for C++ depends on Casablanca. If you are using homebrew you can install it from there:

brew install cpprestsdk

Otherwise, you may need to build it. Follow these instructions to compile it.

Once this is complete, then:

  • Clone the project using git:
git clone https://github.com/Azure/azure-storage-cpp.git

The project is cloned to a folder called azure-storage-cpp. Always use the master branch, which contains the latest release.

Some notes about building:

  • If you're using homebrew, there seems to be an issue with the pkg-config files, which means that, by default, a -L flag to tell the linker where libintl lives is left out. We've accounted for this in our CMAKE file, by looking in the usual directory that homebrew puts those libs. If you are not using homebrew, you will get an error stating that you need to tell us where those libs live.

  • Similarly, for openssl, you don't want to use the version that comes with macOS, it is old. We've accounted for this in the CMAKE script by setting the search paths to where homebrew puts openssl, so if you're not using homebrew you'll need to tell us where a more recent version of openssl lives.

  • Build the SDK for Release if you are using hombrew:

cd azure-storage-cpp/Microsoft.WIndowsAzure.Storage
mkdir build.release
cd build.release
cmake .. -DCMAKE_BUILD_TYPE=Release
make
  • OR, Build the SDK for Release if you are not using homebrew
cd azure-storage-cpp/Microsoft.WindowsAzure.Storage
mkdir build.release
cd build.release
CASABLANCA_DIR=<path to casablanca> cmake .. -DCMAKE_BUILD_TYPE=Release -DOPENSSL_ROOT_DIR=<path to openssl> -DGETTEXT_LIB_DIR=<path to gettext lib dir>
make

In the above command, replace:

  • <path to Casablanca> to point to your local installation of Casablanca. For example, if the file libcpprest.so exists at location ~/Github/Casablanca/cpprestsdk/Release/build.release/Binaries/libcpprest.dylib, then should be ~/Github/Casablanca/cpprestsdk
  • <path to openssl> to your local openssl, it is recommended not to use the version that comes with macOS, rather use one from Homebrew or the like. This should be the path that contains the lib and include directories
  • <path to gettext lib dir> is the directory which contains libintl.dylib

For example you might use:

CASABLANCA_DIR=~/Github/Casablanca/cpprestsdk cmake .. -DCMAKE_BUILD_TYPE=Release -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl -DGETTEXT_LIB_DIR=/usr/local/opt/gettext/lib

The library is generated under azure-storage-cpp/Microsoft.WindowsAzure.Storage/build.release/Binaries/.

To build and run unit tests:

  • Install UnitTest++ library:
brew install unittest-cpp
  • Build the test code:
cmake .. -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS=ON
make
  • Run unit tests
cd Binaries
vi test_configurations.json # modify test config file to include your storage account credentials
./azurestoragetest

Learn More

azure-storage-cpp's People

Contributors

asorrin-msft avatar blaubaron avatar chakrab-msft avatar chwarr avatar derdanu avatar emmazhu avatar ghalliday avatar hanzhumsft avatar jasonyang-msft avatar jasonzio avatar jinming-hu avatar johnbuffer avatar katmsft avatar mfishermsft avatar microsoft-github-policy-service[bot] avatar mildwolf avatar rahuldutta90 avatar ras0219-msft avatar seanmcc-msft avatar shippymsft avatar slepox avatar smlu avatar tamram avatar tschoonj avatar vinaysh-msft avatar vincent81-jiang avatar vinjiang avatar will-tong avatar wlad-fox avatar zhimingyuan avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

azure-storage-cpp's Issues

Compilation error for BlobsGettingStarted

/home/root/azure-storage-cpp/Microsoft.WindowsAzure.Storage/samples/BlobsGettingStarted/Application.cpp:104:25: error: 'class azure::storage::cloud_append_blob' has no member named 'create'
append_blob.create();

I fixed it by replacing with append_blob.create_or_replace();

undefined reference to `azure::storage::cloud_blob_client::get_container_reference(std::string)

Hello,

I have built the library but am having a trouble when trying to use any function that takes a string_t. I'm getting:

testCpp/d5xdhpiaz0ugo43hs4g0p9nsf/main.o: In function `main':
src/main/test/main.cpp:274: undefined reference to `azure::storage::cloud_storage_account::parse(std::string const&)'
src/main/test/main.cpp:278: undefined reference to `azure::storage::cloud_blob_client::get_container_reference(std::string) const'
src/main/test/main.cpp:288: undefined reference to `azure::storage::cloud_blob_container::get_block_blob_reference(std::string) const'

Added /usr/loca/include/UnitTest++ for centos 7 from git

I had /usr/local/include/UnitTest++ add /usr/local/lib for the compile to work with -DBUILD_TESTS=ON:

find UnitTest++

exports:

UnitTest++_FOUND

UnitTest++_INCLUDE_DIRS

UnitTest++_LIBRARIES

include(FindPkgConfig)
include(FindPackageHandleStandardArgs)

Use pkg-config to get hints about paths

#pkg_check_modules(UnitTest++_PKGCONF REQUIRED unittest++)

find UnitTest++

exports:

UnitTest++_FOUND

UnitTest++_INCLUDE_DIRS

UnitTest++_LIBRARIES

include(FindPkgConfig)
include(FindPackageHandleStandardArgs)

Use pkg-config to get hints about paths

#pkg_check_modules(UnitTest++_PKGCONF REQUIRED unittest++)

Include dir

find_path(UnitTest++_INCLUDE_DIR
NAMES UnitTest++.h
PATHS
${UnitTest++_PKGCONF_INCLUDE_DIRS}
${CMAKE_SOURCE_DIR}/tests/UnitTest++/src
/usr/local/include/UnitTest++

Library

find_library(UnitTest++_LIBRARY
NAMES UnitTest++
PATHS
${UnitTest++_PKGCONF_LIBRARY_DIRS}
${CMAKE_SOURCE_DIR}/tests/UnitTest++
/usr/local/lib

set(UnitTest++_PROCESS_LIBS UnitTest++_LIBRARY)
set(UnitTest++_PROCESS_INCLUDES UnitTest++_INCLUDE_DIR)
libfind_process(UnitTest++)

Debug Assertion Expression: _pFirstBlock == pHead

The following assertion error is triggered after updating to version 0.3, but it does not happen with the version 0.2 build.

Debug Assertion Failed!
Program: F:\0Main\Tools\AzureTester\Debug\AzureTester.exe
File: f:\dd\vctools\crt\crtw32\misc\dbgheap.c
Line: 1424
Expression: _pFirstBlock == pHead

The code that triggers this assertion is:
azure::storage::cloud_storage_account storage_account = azure::storage::cloud_storage_account::parse(storage_connection_string);
azure::storage::cloud_table_client table_client = storage_account.create_cloud_table_client();
azure::storage::cloud_table table = table_client.get_table_reference(U("testtable"));

and the only difference between this code and the one used in 0.2 is the change in the namespace from wa::storage to azure::storage. The assertion only appears in the debug build and not in the release build, but in release build it appears to cause failures down the line that results in exceptions that do not happen when using the 0.2 build. Library was downloaded via nuget, I'm using VS2013 on x64,

container.create_if_not_exists() is exceptioned,Error: WinHttpSendRequest: 12002: 鎿嶄綔瓒呮椂

Hi all:
I use Microsoft.WindowsAzure.Storage.BlobsGettingStarted.v120 Samples,the code is
void blobs_getting_started_sample()
{
try
{
// Initialize storage account
azure::storage::cloud_storage_account storage_account = azure::storage::cloud_storage_account::parse(storage_connection_string);

        // Create a blob container
        azure::storage::cloud_blob_client blob_client = storage_account.create_cloud_blob_client();
        //azure::storage::cloud_blob_container container = blob_client.get_container_reference(U("my-sample-container"));           
        azure::storage::cloud_blob_container container = blob_client.get_container_reference(U("test-public-blob"));

        // Return value is true if the container did not exist and was successfully created.
        bool bok = container.create_if_not_exists();
       // Make the blob container publicly accessible
        azure::storage::blob_container_permissions permissions;
        permissions.set_public_access(azure::storage::blob_container_public_access_type::blob);
        container.upload_permissions(permissions);
        .....
         catch (const azure::storage::storage_exception& e)
    {
        ucout << U("Error: ") << e.what() << std::endl;

        azure::storage::request_result result = e.result();
        azure::storage::storage_extended_error extended_error = result.extended_error();
        if (!extended_error.message().empty())
        {
            ucout << extended_error.message() << std::endl;
        }
    }


      when the code run "container.create_if_not_exists();",the Error is "Error: WinHttpSendRequest: 12002: 鎿嶄綔瓒呮椂",my computer is win8 x64,

Error with adding message / peeking message

I'm able to reference the queue properly (so I can create a queue and also reference a pre-existing queue) using the sample code provided for queues on this repo.

However, when peeking at a message or trying to add a message to the queue, the following exception is thrown:

"Error: The Uri for the target storage location is not specified. Please consider changing the request's location mode."

Copy status is always sucess

I'm using the blob.start_copy function to copy a file inside azure and right after it trying to access it,
I'm testing if the blob.copy_state().status() is success before accessing it and it's always returning success, but sometimes when I try to access the file, it's not there, my guess is that the file copy isn't copied yet and blob.copy_state().status() isn't updated.
So, how can I assure the copy is already finished?

pplx tasks fail to end

Hi,

i am encountering again a problem similar to issue #83 .
i am tracking tasks which are pending to complete. i have an environment where tasks working on block blobs get stuck and do no return. most of the operations done by my client are on block blobs so this should not indicate that the problem only appears on block blobs.

Taking a specific PUT request which appeared to be stuck,
i looked at the blob logs of the storage account and saw that the request does not appear in the logs.
all other requests appear as Success.

the code again is the same as appears in #83.
i am now using azure build 2.5.0 and casablanca 2.9.1.

Feedback Request: How about replace libxml++ with libxml2?

Hi Everyone,

This is a discussion thread on replacing libxml++ with libxml2.

Recently we received several requests to link this library in static. But libxml++ with LGPL License make it controversial. So we came up an idea of replacing libxml++ with libxml2 while libxml++ is a C++ wrapper for the libxml XML parser library.

What's your opinion? we want see the potential impact to every one before replacing it.

libxml++ dependency introduces GPL dependency

On UNIX platforms, libxml++ is used for the XML parser instead of XmlLite.

libxml++ has a dependency on glibmm, which depends on glibc, which depends on gettext. gettext is available under the GPL. This is less than ideal when using the Azure SDK in closed source software.

It's possibly to rewrite XmlHelpers.h/.cpp to use a parser without external dependencies and a permissive licence.

Error running build tests - do tests need updating?

azure-storage-cpp/Microsoft.WindowsAzure.Storage/tests/service_properties_test.cpp:264: error:
Failure in blob_service_stats: Unhandled exception: Error resolving address

azure-storage-cpp/Microsoft.WindowsAzure.Storage/tests/service_properties_test.cpp:274: error:
Failure in queue_service_stats: Unhandled exception: Error resolving address

azure-storage-cpp/Microsoft.WindowsAzure.Storage/tests/service_properties_test.cpp:284: error:
Failure in table_service_stats: Unhandled exception: Error resolving address

Given that every other test worked, I don't see how I could have provided flawed input in the JSON file. So, I'm wondering about the test code and derived URLs.

This is run on Debian Linux, latest release.

visual studio 2005

Does it supports visual studio 2005?
It is possible to use this library in VS 2005?
Guys please help.

Use _XPLATSTR instead of U macro

Are there any concerns to switching from the C++ REST SDK's U() macro to _XPLATSTR()? This will allow the storage SDK to be used in projects that define _TURN_OFF_PLATFORM_STRING to avoid conflicts with other uses of U, like as a typename after T.

CC: @jasonzio, @jdubrule

corrupted while run unit tests and samples

Hi, I followed step by step instructions in README.md, "Getting Started on Linux".
Seems all is ok but when run unit tests and samples, I have the following errors:

ubuntu@ip-172-31-31-221:~/mnt/websocketpp-0.6.0/azure-storage-cpp/Microsoft.WindowsAzure.Storage/build.release/Binaries$ ./azurestoragetest
Blob:blob_lease_acquire_infinite: test fixture client request ID: 138D191D-BA95-4F84-9D2B-B99D2DB7B98B
*** Error in `./azurestoragetest': free(): corrupted unsorted chunks: 0x00007ffcd0001bf0 ***
Aborted (core dumped)

ubuntu@ip-172-31-31-221:~/mnt/websocketpp-0.6.0/azure-storage-cpp/Microsoft.WindowsAzure.Storage/build.release/Binaries$ ./samplesblobs
*** Error in `./samplesblobs': corrupted double-linked list: 0x00007fa1f4000c80 ***
Aborted (core dumped)

I run on Ubuntu 14.04.2, have installed casablanca and libboost 1.54.
Thanks for help.

Casablanca_DoubleJsonParsing tests sometimes fail

The Casablanca_DoubleJsonParsing as of commit d37acbd sometimes fail the following assert:

CHECK(output_document.as_object().find(U("DoubleProperty"))->second.is_double());

This is because the test generates random double values, serializes them, and then parses them. However, if the generated double was 0.0 or 1.0, it ends up serialized as 0 or 1, which is no longer treated as a double after parsing.

I'm not sure how you guys want to fix this broken test case, but I'm logging this issue so that there's something about it in case anyone else runs into this problem.

Create a Vcpkg

This is a feature request.
Since there is already a Vcpkg for cpprestsdk the port should be painless.

Missing code in JsonPayloadFormat sample?

I was browsing the sample code...

The JsonPayloadFormat sample creates an options object but never uses it:

            // Set the payload format to reduce the size of the network payload, however, some property types cannot be automatically inferred and need to be set explicitly.
            // For more information about the support for JSON, check the following document: http://blogs.msdn.com/b/windowsazurestorage/archive/2013/12/05/windows-azure-tables-introducing-json.aspx.
            azure::storage::table_request_options options;
            options.set_payload_format(azure::storage::table_payload_format::json_no_metadata);

For example, I would have expected this code to pass in the options:

                azure::storage::table_query_segment segment = table.execute_query_segmented(query, token);

Compilation fails in Linux Raspbian Jessie

Hello Everyone,

I was trying to build the Library for Linux Raspbian Jessie. I followed the steps in "Getting started with Linux", every thing was going very smooth, I installed casablanca and all the dependencies. The last step "make" to build the library was not successful:

Here is the output error:
[ 1%] Building CXX object src/CMakeFiles/azurestorage.dir/xmlhelpers.cpp.o In file included from /home/pi/microsoft/azure-storage-cpp/Microsoft.WindowsAzure.Storage/src/xmlhelpers.cpp:42:0: /home/pi/microsoft/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/stdafx.h:48:33: fatal error: cpprest/http_client.h: No such file or directory #include "cpprest/http_client.h" ^ compilation terminated. src/CMakeFiles/azurestorage.dir/build.make:62: recipe for target 'src/CMakeFiles/azurestorage.dir/xmlhelpers.cpp.o' failed make[2]: *** [src/CMakeFiles/azurestorage.dir/xmlhelpers.cpp.o] Error 1 CMakeFiles/Makefile2:85: recipe for target 'src/CMakeFiles/azurestorage.dir/all' failed make[1]: *** [src/CMakeFiles/azurestorage.dir/all] Error 2 Makefile:138: recipe for target 'all' failed make: *** [all] Error 2
The problem seems that there is an error in one of the inclusion files "#include "cpprest/http_client.h"" !!

The only change I did in the steps was from CXX=g++-4.8 to CXX=g++-4.9 which is the CMake version I have:

cd azure-storage-cpp/Microsoft.WindowsAzure.Storage
mkdir build.release
cd build.release
CASABLANCA_DIR=path to Casablanca CXX=g++-4.9 cmake .. -DCMAKE_BUILD_TYPE=Release
make

Any help please, I am stuck at this point.

Thanks!

Azure Storage C++ SDK (wastorage) does not work with v141 toolset

This issue breaks both builds and intellisense for C++ projects. Robert Schumacher (MSFT) has fixed this issue in the CppREST SDK and can provide guidance here on a fix.

The issue is that the include paths are not being properly set up during installation of the Azure Storage package.

Visual Studio 2010 support

Hi,

Does the current release support VC 2010? We have a strong interest in building and running this under VC10 for legacy reason.

Thanks

Support iOS compilation ?

This is more a question than an issue: since the iOS SDK is in complete standy, is it possible (and is there a guide) to compile this component for iOS ? It seems it is perfectly doable for its cpprestsdk dependency for instance.

Gert "Unhandled exception at 0x77562EEC in xxxxx.exe: Microsoft C++ exception: std::runtime_error at memory location 0x0107B60C." error

I got a error mentioned in the title when I run my own code like below.

#include "stdafx.h"
#include "was/storage_account.h"
#include "was/table.h"
#include "was/queue.h"
#include "was/blob.h"

int _tmain(int argc, _TCHAR* argv[])
{
    // Initialize storage account
    wa::storage::cloud_storage_account storage_account = wa::storage::cloud_storage_account::parse(U("AccountName=;AccountKey=;DefaultEndpointsProtocol=http;")); // the error occur in this line

And detail error is like below

---------------------------
Microsoft Visual C++ Runtime Library
---------------------------
Debug Assertion Failed!

Program: C:\WINDOWS\SYSTEM32\MSVCP120D.dll
File: c:\dev12\vc\include\vector
Line: 1201

Expression: vector subscript out of range

For information on how your program can cause an assertion
failure, see the Visual C++ documentation on asserts.

(Press Retry to debug the application)

There is no an ability to upload file from local read only storage using upload_from_stream method.

There is no an ability to upload file from local read only storage using upload_from_stream method. It's happened because of the issue in the istream class in cpprestsdk. I've got a message on windows 8:
3-29-2016 1-21-41 pm

Link on the issue in cpprestsdk project:
microsoft/cpprestsdk#109

Workaround (changes for the method get_remaining_stream_length in util.cpp file. Replace lines from 75 to 78 by this code):

            auto offset = stream.tell();
            auto end = stream.streambuf().size();
            return static_cast<utility::size64_t>(end - offset);

Facing issue while building library on Mac Machine 10.8 and onwards.

Hi All,

I am facing issue while building library on Mac Machine 10.8 and onwards.
Please provide your solution.
Thanks in advance.

Following errors are logged as below

[ 1%] Building CXX object src/CMakeFiles/azurestorage.dir/xmlhelpers.cpp.o
In file included from /Users/Secom9/CloudLogging/azure-storage-cpp/Microsoft.WindowsAzure.Storage/src/xmlhelpers.cpp:42:
In file included from /Users/Secom9/CloudLogging/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/stdafx.h:37:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/iostream:38:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/ios:216:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__locale:15:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string:436:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cstring:79:9: error: no member named 'strcoll' in the global namespace
using ::strcoll;
~~^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cstring:80:9: error: no member named 'strxfrm' in the global namespace
using ::strxfrm;
~~^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cstring:82:9: error: no member named 'memchr' in the global namespace; did you mean 'wmemchr'?
using ::memchr;
~~^
/usr/include/wchar.h:150:10: note: 'wmemchr' declared here
wchar_t wmemchr(const wchar_t , wchar_t, size_t);
^
In file included from /Users/Secom9/CloudLogging/azure-storage-cpp/Microsoft.WindowsAzure.Storage/src/xmlhelpers.cpp:42:
In file included from /Users/Secom9/CloudLogging/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/stdafx.h:37:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/iostream:38:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/ios:216:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__locale:15:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string:436:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cstring:86:9: error: no member named 'strcspn' in the global namespace
using ::strcspn;
~~^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cstring:88:9: error: no member named 'strpbrk' in the global namespace
using ::strpbrk;
~~^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cstring:90:9: error: no member named 'strrchr' in the global namespace; did you mean 'strchr'?
using ::strrchr;
~~^
/System/Library/Frameworks/Kernel.framework/Headers/string.h:81:14: note: 'strchr' declared here
extern char strchr(const char s, int c);
^
In file included from /Users/Secom9/CloudLogging/azure-storage-cpp/Microsoft.WindowsAzure.Storage/src/xmlhelpers.cpp:42:
In file included from /Users/Secom9/CloudLogging/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/stdafx.h:37:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/iostream:38:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/ios:216:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__locale:15:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string:436:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cstring:92:9: error: no member named 'strspn' in the global namespace
using ::strspn;
~~^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cstring:94:9: error: no member named 'strstr' in the global namespace; did you mean 'strnstr'?
using ::strstr;
~~^
/System/Library/Frameworks/Kernel.framework/Headers/string.h:80:14: note: 'strnstr' declared here
extern char strnstr(char s, const char find, size_t slen);
^
In file included from /Users/Secom9/CloudLogging/azure-storage-cpp/Microsoft.WindowsAzure.Storage/src/xmlhelpers.cpp:42:
In file included from /Users/Secom9/CloudLogging/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/stdafx.h:37:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/iostream:38:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/ios:216:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__locale:15:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string:436:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cstring:99:98: error: no member named 'strpbrk' in the global namespace; did you mean simply 'strpbrk'?
inline _LIBCPP_INLINE_VISIBILITY char
strpbrk( char
__s1, const char
__s2) {return ::strpbrk(__s1, __s2);}
^~
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cstring:99:46: note: 'strpbrk' declared here
inline _LIBCPP_INLINE_VISIBILITY char
strpbrk( char
__s1, const char
__s2) {return ::strpbrk(__s1, __s2);}
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cstring:100:88: error: no member named 'strrchr' in the global namespace; did you mean simply 'strrchr'?
inline _LIBCPP_INLINE_VISIBILITY char
strrchr( char* __s, int __c) {return ::strrchr(__s, __c);}
^~
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cstring:100:46: note: 'strrchr' declared here
inline _LIBCPP_INLINE_VISIBILITY char* strrchr( char* __s, int __c) {return ::strrchr(__s, __c);}
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cstring:101:99: error: no member named 'memchr' in the global namespace; did you mean simply 'memchr'?
inline _LIBCPP_INLINE_VISIBILITY void* memchr( void* __s, int __c, size_t __n) {return ::memchr(__s, __c, __n);}
^~
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cstring:101:46: note: 'memchr' declared here
inline _LIBCPP_INLINE_VISIBILITY void* memchr( void* __s, int __c, size_t __n) {return ::memchr(__s, __c, __n);}
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cstring:102:97: error: no member named 'strstr' in the global namespace; did you mean simply 'strstr'?
inline _LIBCPP_INLINE_VISIBILITY char* strstr( char* __s1, const char* __s2) {return ::strstr(__s1, __s2);}
^~
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cstring:102:46: note: 'strstr' declared here
inline _LIBCPP_INLINE_VISIBILITY char* strstr( char* __s1, const char* __s2) {return ::strstr(__s1, __s2);}
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cstring:105:9: error: no member named 'strtok' in the global namespace
using ::strtok;
~~^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cstring:107:9: error: no member named 'strerror' in the global namespace
using ::strerror;
~~^
In file included from /Users/Secom9/CloudLogging/azure-storage-cpp/Microsoft.WindowsAzure.Storage/src/xmlhelpers.cpp:42:
In file included from /Users/Secom9/CloudLogging/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/stdafx.h:37:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/iostream:38:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/ios:216:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__locale:15:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string:438:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cwchar:192:49: error: declaration conflicts with target of using declaration already in scope
inline _LIBCPP_INLINE_VISIBILITY const wchar_t* wmemchr(const wchar_t* __s, wchar_t __c, size_t __n) {return ::wmemchr(__s, __c, __n);}
^
/usr/include/wchar.h:150:10: note: target of using declaration
wchar_t *wmemchr(const wchar_t , wchar_t, size_t);
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cstring:82:9: note: using declaration
using ::memchr;
^
In file included from /Users/Secom9/CloudLogging/azure-storage-cpp/Microsoft.WindowsAzure.Storage/src/xmlhelpers.cpp:42:
In file included from /Users/Secom9/CloudLogging/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/stdafx.h:37:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/iostream:38:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/ios:216:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/__locale:15:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/string:656:35: error: no matching function for call to 'memchr'
{return (const char_type
)memchr(__s, to_int_type(__a), __n);}
^~~~~~
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/cstring:101:46: note: candidate function not viable: no known conversion from 'const char_type *' (aka 'const char ') to 'void ' for 1st argument; take the address of the argument with &
inline _LIBCPP_INLINE_VISIBILITY void
memchr( void
__s, int __c, size_t __n) {return ::memchr(__s, __c, __n);}
^
In file included from /Users/Secom9/CloudLogging/azure-storage-cpp/Microsoft.WindowsAzure.Storage/src/xmlhelpers.cpp:42:
In file included from /Users/Secom9/CloudLogging/azure-storage-cpp/Microsoft.WindowsAzure.Storage/includes/stdafx.h:37:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/iostream:40:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/istream:156:
In file included from /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/ostream:133:
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/locale:864:44: error: use of undeclared identifier 'errno'
typename remove_reference<decltype(errno)>::type __save_errno = errno;
^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/locale:864:53: error: no type named 'type' in the global namespace
typename remove_reference<decltype(errno)>::type __save_errno = errno;
~~^
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1/locale:864:73: error: use of undeclared identifier 'errno'
typename remove_reference<decltype(errno)>::type __save_errno = errno;
^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.
make[2]: *** [src/CMakeFiles/azurestorage.dir/xmlhelpers.cpp.o] Error 1
make[1]: *** [src/CMakeFiles/azurestorage.dir/all] Error 2
make: *** [all] Error 2

The client sends duplicated requests under high load

Hi,

Please find attached the sample cpp console app file that reproduces the issue we have recently hit in our production system.

ReproWAS.txt

The issue is the following: the code below invoked in parallel by ~100 threads starts producing duplicate requests after some time (from several minutes to several hours):

void CreateSegment(uint64 segmentId, const BYTE* pbBuffer, uint64 cbBufferSize, azure::storage::cloud_blob_directory& m_directory)
{
azure::storage::cloud_append_blob appendBlob;
try
{
utility::string_t blobName = utility::conversions::print_string(segmentId);
appendBlob = m_directory.get_append_blob_reference(blobName);

      appendBlob.create_or_replace(azure::storage::access_condition::generate_if_not_exists_condition(), m_requestOptions, m_context);

    // add header for the segment
    concurrency::streams::rawptr_buffer<BYTE> buf(pbBuffer, size_t(cbBufferSize));
    concurrency::streams::istream uploadStream = buf.create_istream();

    auto offset = appendBlob.append_block(uploadStream,
        U(""),
        azure::storage::access_condition::generate_if_append_position_equal_condition(0),
        m_requestOptions,
        m_context);

    return;
}
catch (const azure::storage::storage_exception& e)                                      
{   
    ucout << U("WAS error occured: ") << e.what() << U(" error code: ") << e.result().http_status_code() << U(" blob: ") << appendBlob.name().c_str() << U(" container ") << appendBlob.container().name().c_str() << std::endl;
    //crash here
    int* crashPtr = nullptr;
    *crashPtr = 0;
}                                                                                       
catch (const std::exception&)                                                         
{                                                                                       
}                                                                                       
catch (...)                                                                             
{                                                                                       
}

//crash here
int* crashPtr = nullptr;
*crashPtr = 0;

}

After sometime, the code produces the following output:

WAS error occured: The specified blob already exists. error code: WAS error occured: The specified blob already exists. error code: 409 blob: 20/25089 container reproWAS error occured: The specified blob already exists. error code: 409 blob: 80/24960 container repro
409 blob: 60/24728 container repro
WAS error occured: The specified blob already exists. error code: 409 blob: 5/25674 container repro
WAS error occured: The specified blob already exists. error code: 409 blob: 48/24805 container repro

WAS error occured: The specified blob already exists. error code: 409 blob: 92/24718 container repro
WAS error occured: The specified blob already exists. error code: 409 blob: 56/25039 container repro
WAS error occured: The specified blob already exists. error code: 409 blob: 32/25101 container repro
WAS error occured: The specified blob already exists. error code: 409 blob: 10/25007 container repro
WAS error occured: The specified blob already exists. error code: 409 blob: 84/24287 container repro
WAS error occured: The specified blob already exists. error code: 409 blob: 52/24900 container repro
WAS error occured: The specified blob already exists. error code: 409 blob: 68/24522 container repro
WAS error occured: The append position condition specified was not met. error code: 412 blob: 28/24865 container repro
WAS error occured: The append position condition specified was not met. error code: 412 blob: 15/24753 container repro
WAS error occured: The append position condition specified was not met. error code: 412 blob: 76/24799 container repro
WAS error occured: The append position condition specified was not met. error code: 412 blob: 96/24647 container repro
WAS error occured: The append position condition specified was not met. error code: 412 blob: 44/24492 container repro
WAS error occured: The append position condition specified was not met. error code: 412 blob: 64/25010 container repro
WAS error occured: The append position condition specified was not met. error code: 412 blob: 72/25116 container repro
WAS error occured: The append position condition specified was not met. error code: 412 blob: 24/25018 container repro

Crash dumps and the project are available upon request, I couldn't attach them here as github does not support .zip files and limits the size of attached files to 10 Mb.

pplx task fails to complete

I have code which performs reads and writes from azure storage.
The code is as follows (simplified):

performIo(vector<Io> ios, bool isPageBlob)
{
  vector<pplx::task<RcStatus> > tasks;

  for(Io& io : ios)
  {
        if(io.isRead())
        {
            read(io, isPageBlob, tasks);
        }
        else // write
        {
            write(io, isPageBlob, tasks);
        }
  }

  auto whenAllDone = pplx::when_all(tasks.begin(), tasks.end());
  whenAllDone.then([tasks](vector<RcStatus> results) mutable 
  {
    Do Something...
  }
}

read(Io& io, bool isPageBlob,vector<pplx::task<RcStatus> >& tasks)
{
   u32 sizeBytes = io.len();
   u8* arr = new array(u8, sizeBytes);
   auto stream = pplx::streams::rawptr_stream<unsigned char>::open_ostream(arr, sizeBytes);

   auto postReadTask = ([arr, io, this](pplx::task<void> prevTask) mutable
    {
        RcStatus rs = RC_ERROR;

        try
        {
            prevTask.get(); // just checking iff there is any exception...
                        //  use array
            rs = RC_SUCCESS;
        }
        catch (azure::storage::storage_exception& e)
        {
                     / /Do something
        }
        catch (exception &e)
        {
            // Do Something
        }
        delete (arr);
        unregister(io);
        return rs;
    });

    register(io);
    if (isPageBlob)
    {
        azure::storage::cloud_page_blob blob = get_page_blob_reference(io.blobName);
        auto ioTask = blob.download_range_to_stream_async(stream, io.offsetBytes, io.sizeBytes).then(postReadTask);
        tasks.push_back(ioTask);
    }
    else
    {
        azure::storage::cloud_block_blob blob = get_block_blob_reference(io.blobName);
        auto ioTask = blob.download_range_to_stream_async(stream, io.offsetBytes, io.sizeBytes).then(postReadTask);
        tasks.push_back(ioTask);
    }
}

write is identical to read, only performs write.

The problem I encountered is that the calling method (performIos) is blocked on whenAllDone.then().
I see that one task has not completed or failed. simply hanging (i register each io before sending to read\write and unregister when done. i poll every minute to check for pending ios and how long they are pending. last time, a read action was pending for over 10 minutes.
any ideas what can cause this?

The problem is not consistent and happened 3 times so far (out of i assume thousands of operations).

create_if_not_exists() doesn't return

Hi, I have a very strange problem. After debug, I changed my program to a very simple one like this,

...
for (int i = 0; i < 10; i++)
{
azure::storage::cloud_blob_container container;
azure::storage::cloud_block_blob text_blob;

	container = blob_client.get_container_reference(s2ws("582ece1e11e6d909002585fd"));
	container.create_if_not_exists();
	
	Sleep(65000);
}

...

I found after I ever used azure blob library, after more than 60 seconds, it won't return when I call it again. For example, in my example code, the first loop (i=0) it works, but in the second loop (i=1), create_if_not_exists() will never return.
And it won't throw any exception.
I debugged, seems it stopped in _M_Impl->_Wait() ( create_if_not_exists_async().get() ).

If every time I call create_if_not_exists() again within 60 seconds (e.g., changed my example code to Sleep(55000)), every loop works.

Could you try an example code like mine to see whether it's a bug or it's because of my environment? Thanks in advance.

SSL ERROR handshake

Hi,

Please I followed the whole steps in the Linux part. I am using Raspberry Pi 3 (Raspbian Jessie)

when I test ./azurestoragetest , I get an error in the SSL handshake:

Blob:blob_lease_acquire_infinite: test fixture client request ID: E91F4BB6-CF0F-4603-BB72-0C7B42AE2F20
/home/pi/microsoft2/azure-storage-cpp-master/Microsoft.WindowsAzure.Storage/tests/blob_lease_test.cpp:98: error: Failure in blob_lease_acquire_infinite: Unhandled exception: Error in SSL handshake

Can some one tell me what is the reason please ?

Thanks in advance

Memory leak with shared DLL MFC projects

There appears to be a memory leak in the Azure library which appears when executed within a shared DLL MFC application. The leak happens without calling any of the Azure library functions, and only happens with shared DLL MFC projects and not statically linked MFC projects. The only thing needed to reproduce this issue is to make a new shared DLL MFC project and to include "was/storage_account.h" into the main file. Alternatvely I have a sample project that demonstrates the leak at https://dl.dropboxusercontent.com/u/4020510/AzureLeak.zip

Leak dump is:

Detected memory leaks!
Dumping objects ->
{546} normal block at 0x012AD9E8, 48 bytes long.
 Data: <R e s p o n s e > 52 00 65 00 73 00 70 00 6F 00 6E 00 73 00 65 00 
{545} normal block at 0x012AD9A0, 8 bytes long.
 Data: <   T    > 80 C2 DA 54 00 00 00 00 
{544} normal block at 0x012AD930, 48 bytes long.
 Data: <W w w - A u t h > 57 00 77 00 77 00 2D 00 41 00 75 00 74 00 68 00 
{543} normal block at 0x012AD8E8, 8 bytes long.
 Data: <d  T    > 64 C2 DA 54 00 00 00 00 
{542} normal block at 0x012AD8A0, 8 bytes long.
 Data: <H  T    > 48 C2 DA 54 00 00 00 00 
{541} normal block at 0x012AD840, 32 bytes long.
 Data: <S e t - C o o k > 53 00 65 00 74 00 2D 00 43 00 6F 00 6F 00 6B 00 
{540} normal block at 0x012AD7F8, 8 bytes long.
 Data: <,  T    > 2C C2 DA 54 00 00 00 00 
{539} normal block at 0x012AD7B0, 8 bytes long.
 Data: <   T    > 10 C2 DA 54 00 00 00 00 
{538} normal block at 0x012AD750, 32 bytes long.
 Data: <R e t r y - A f > 52 00 65 00 74 00 72 00 79 00 2D 00 41 00 66 00 
{537} normal block at 0x012AD708, 8 bytes long.
 Data: <   T    > F4 C1 DA 54 00 00 00 00 
{536} normal block at 0x012AD698, 48 bytes long.
 Data: <P r o x y - A u > 50 00 72 00 6F 00 78 00 79 00 2D 00 41 00 75 00 
{535} normal block at 0x012AD650, 8 bytes long.
 Data: <   T    > D8 C1 DA 54 00 00 00 00 
{534} normal block at 0x012AD5F0, 32 bytes long.
 Data: <L o c a t i o n > 4C 00 6F 00 63 00 61 00 74 00 69 00 6F 00 6E 00 
{533} normal block at 0x012AD5A8, 8 bytes long.
 Data: <   T    > BC C1 DA 54 00 00 00 00 
{532} normal block at 0x012AD560, 8 bytes long.
 Data: <   T    > A0 C1 DA 54 00 00 00 00 
{531} normal block at 0x012AD518, 8 bytes long.
 Data: <   T    > 84 C1 DA 54 00 00 00 00 
{530} normal block at 0x012AD4B8, 32 bytes long.
 Data: <A c c e p t - R > 41 00 63 00 63 00 65 00 70 00 74 00 2D 00 52 00 
{529} normal block at 0x012AD470, 8 bytes long.
 Data: <h  T    > 68 C1 DA 54 00 00 00 00 
{528} normal block at 0x012AD410, 32 bytes long.
 Data: <R e q u e s t - > 52 00 65 00 71 00 75 00 65 00 73 00 74 00 2D 00 
{527} normal block at 0x012AD3C8, 8 bytes long.
 Data: <L  T    > 4C C1 DA 54 00 00 00 00 
{526} normal block at 0x012AD368, 32 bytes long.
 Data: <U s e r - A g e > 55 00 73 00 65 00 72 00 2D 00 41 00 67 00 65 00 
{525} normal block at 0x012AD320, 8 bytes long.
 Data: <0  T    > 30 C1 DA 54 00 00 00 00 
{524} normal block at 0x012AD2C0, 32 bytes long.
 Data: <T r a n s l a t > 54 00 72 00 61 00 6E 00 73 00 6C 00 61 00 74 00 
{523} normal block at 0x012AD278, 8 bytes long.
 Data: <   T    > 14 C1 DA 54 00 00 00 00 
{522} normal block at 0x012AD230, 8 bytes long.
 Data: <   T    > F8 C0 DA 54 00 00 00 00 
{521} normal block at 0x012AD1E8, 8 bytes long.
 Data: <   T    > DC C0 DA 54 00 00 00 00 
{520} normal block at 0x012AD1A0, 8 bytes long.
 Data: <   T    > C0 C0 DA 54 00 00 00 00 
{519} normal block at 0x012AD130, 48 bytes long.
 Data: <P r o x y - A u > 50 00 72 00 6F 00 78 00 79 00 2D 00 41 00 75 00 
{518} normal block at 0x012AD0E8, 8 bytes long.
 Data: <   T    > A4 C0 DA 54 00 00 00 00 
{517} normal block at 0x012AD088, 32 bytes long.
 Data: <M a x - F o r w > 4D 00 61 00 78 00 2D 00 46 00 6F 00 72 00 77 00 
{516} normal block at 0x012AD040, 8 bytes long.
 Data: <   T    > 88 C0 DA 54 00 00 00 00 
{515} normal block at 0x012ACFD0, 48 bytes long.
 Data: <I f - U n m o d > 49 00 66 00 2D 00 55 00 6E 00 6D 00 6F 00 64 00 
{514} normal block at 0x012ACF88, 8 bytes long.
 Data: <l  T    > 6C C0 DA 54 00 00 00 00 
{513} normal block at 0x012ACF28, 32 bytes long.
 Data: <I f - R a n g e > 49 00 66 00 2D 00 52 00 61 00 6E 00 67 00 65 00 
{512} normal block at 0x012ACEE0, 8 bytes long.
 Data: <P  T    > 50 C0 DA 54 00 00 00 00 
{511} normal block at 0x012ACE80, 32 bytes long.
 Data: <I f - N o n e - > 49 00 66 00 2D 00 4E 00 6F 00 6E 00 65 00 2D 00 
{510} normal block at 0x012ACE38, 8 bytes long.
 Data: <4  T    > 34 C0 DA 54 00 00 00 00 
{509} normal block at 0x012ACDC8, 48 bytes long.
 Data: <I f - M o d i f > 49 00 66 00 2D 00 4D 00 6F 00 64 00 69 00 66 00 
{508} normal block at 0x012ACD80, 8 bytes long.
 Data: <   T    > 18 C0 DA 54 00 00 00 00 
{507} normal block at 0x012ACD20, 32 bytes long.
 Data: <I f - M a t c h > 49 00 66 00 2D 00 4D 00 61 00 74 00 63 00 68 00 
{506} normal block at 0x012ACCD8, 8 bytes long.
 Data: <   T    > FC BF DA 54 00 00 00 00 
{505} normal block at 0x012ACC90, 8 bytes long.
 Data: <   T    > E0 BF DA 54 00 00 00 00 
{504} normal block at 0x012ACC48, 8 bytes long.
 Data: <   T    > C4 BF DA 54 00 00 00 00 
{503} normal block at 0x012ACC00, 8 bytes long.
 Data: <   T    > A8 BF DA 54 00 00 00 00 
{502} normal block at 0x012ACBB8, 8 bytes long.
 Data: <   T    > 8C BF DA 54 00 00 00 00 
{501} normal block at 0x012ACB58, 32 bytes long.
 Data: <A u t h o r i z > 41 00 75 00 74 00 68 00 6F 00 72 00 69 00 7A 00 
{500} normal block at 0x012ACB10, 8 bytes long.
 Data: <p  T    > 70 BF DA 54 00 00 00 00 
{499} normal block at 0x012ACAB0, 32 bytes long.
 Data: <A c c e p t - L > 41 00 63 00 63 00 65 00 70 00 74 00 2D 00 4C 00 
{498} normal block at 0x012ACA68, 8 bytes long.
 Data: <T  T    > 54 BF DA 54 00 00 00 00 
{497} normal block at 0x012ACA08, 32 bytes long.
 Data: <A c c e p t - E > 41 00 63 00 63 00 65 00 70 00 74 00 2D 00 45 00 
{496} normal block at 0x012AC9C0, 8 bytes long.
 Data: <8  T    > 38 BF DA 54 00 00 00 00 
{495} normal block at 0x012AC960, 32 bytes long.
 Data: <A c c e p t - C > 41 00 63 00 63 00 65 00 70 00 74 00 2D 00 43 00 
{494} normal block at 0x012AC918, 8 bytes long.
 Data: <   T    > 1C BF DA 54 00 00 00 00 
{493} normal block at 0x012AC8D0, 8 bytes long.
 Data: <   T    > 00 BF DA 54 00 00 00 00 
{492} normal block at 0x012AC870, 32 bytes long.
 Data: <L a s t - M o d > 4C 00 61 00 73 00 74 00 2D 00 4D 00 6F 00 64 00 
{491} normal block at 0x012AC828, 8 bytes long.
 Data: <   T    > E4 BE DA 54 00 00 00 00 
{490} normal block at 0x012AC7E0, 8 bytes long.
 Data: <   T    > C8 BE DA 54 00 00 00 00 
{489} normal block at 0x012AC780, 32 bytes long.
 Data: <C o n t e n t - > 43 00 6F 00 6E 00 74 00 65 00 6E 00 74 00 2D 00 
{488} normal block at 0x012AC738, 8 bytes long.
 Data: <   T    > AC BE DA 54 00 00 00 00 
{487} normal block at 0x012AC6D8, 32 bytes long.
 Data: <C o n t e n t - > 43 00 6F 00 6E 00 74 00 65 00 6E 00 74 00 2D 00 
{486} normal block at 0x012AC690, 8 bytes long.
 Data: <   T    > 90 BE DA 54 00 00 00 00 
{485} normal block at 0x012AC620, 48 bytes long.
 Data: <C o n t e n t - > 43 00 6F 00 6E 00 74 00 65 00 6E 00 74 00 2D 00 
{484} normal block at 0x012AC5D8, 8 bytes long.
 Data: <t  T    > 74 BE DA 54 00 00 00 00 
{483} normal block at 0x012AC568, 48 bytes long.
 Data: <C o n t e n t - > 43 00 6F 00 6E 00 74 00 65 00 6E 00 74 00 2D 00 
{482} normal block at 0x012AC520, 8 bytes long.
 Data: <X  T    > 58 BE DA 54 00 00 00 00 
{481} normal block at 0x012AC4B0, 48 bytes long.
 Data: <C o n t e n t - > 43 00 6F 00 6E 00 74 00 65 00 6E 00 74 00 2D 00 
{480} normal block at 0x012AC468, 8 bytes long.
 Data: <<  T    > 3C BE DA 54 00 00 00 00 
{479} normal block at 0x012AC408, 32 bytes long.
 Data: <C o n t e n t - > 43 00 6F 00 6E 00 74 00 65 00 6E 00 74 00 2D 00 
{478} normal block at 0x012AC3C0, 8 bytes long.
 Data: <   T    > 20 BE DA 54 00 00 00 00 
{477} normal block at 0x012AC360, 32 bytes long.
 Data: <C o n t e n t - > 43 00 6F 00 6E 00 74 00 65 00 6E 00 74 00 2D 00 
{476} normal block at 0x012AC318, 8 bytes long.
 Data: <   T    > 04 BE DA 54 00 00 00 00 
{475} normal block at 0x012AC2D0, 8 bytes long.
 Data: <   T    > E8 BD DA 54 00 00 00 00 
{474} normal block at 0x012AC288, 8 bytes long.
 Data: <   T    > CC BD DA 54 00 00 00 00 
{473} normal block at 0x012AC240, 8 bytes long.
 Data: <   T    > B0 BD DA 54 00 00 00 00 
{472} normal block at 0x012AC1F8, 8 bytes long.
 Data: <   T    > 94 BD DA 54 00 00 00 00 
{471} normal block at 0x012AC188, 48 bytes long.
 Data: <T r a n s f e r > 54 00 72 00 61 00 6E 00 73 00 66 00 65 00 72 00 
{470} normal block at 0x012AC140, 8 bytes long.
 Data: <x  T    > 78 BD DA 54 00 00 00 00 
{469} normal block at 0x012AC0F8, 8 bytes long.
 Data: <\  T    > 5C BD DA 54 00 00 00 00 
{468} normal block at 0x012AC0B0, 8 bytes long.
 Data: <@  T    > 40 BD DA 54 00 00 00 00 
{467} normal block at 0x012AC050, 32 bytes long.
 Data: <K e e p - A l i > 4B 00 65 00 65 00 70 00 2D 00 41 00 6C 00 69 00 
{466} normal block at 0x012AC008, 8 bytes long.
 Data: <$  T    > 24 BD DA 54 00 00 00 00 
{465} normal block at 0x012ABFC0, 8 bytes long.
 Data: <   T    > 08 BD DA 54 00 00 00 00 
{464} normal block at 0x012ABF60, 32 bytes long.
 Data: <C o n n e c t i > 43 00 6F 00 6E 00 6E 00 65 00 63 00 74 00 69 00 
{463} normal block at 0x012ABF18, 8 bytes long.
 Data: <   T    > EC BC DA 54 00 00 00 00 
{462} normal block at 0x012ABEB8, 32 bytes long.
 Data: <C a c h e - C o > 43 00 61 00 63 00 68 00 65 00 2D 00 43 00 6F 00 
{461} normal block at 0x012ABE70, 8 bytes long.
 Data: <   T    > D0 BC DA 54 00 00 00 00 
{460} normal block at 0x012ABE10, 32 bytes long.
 Data: <P L A I N T E X > 50 00 4C 00 41 00 49 00 4E 00 54 00 45 00 58 00 
{459} normal block at 0x012ABDC8, 8 bytes long.
 Data: <4  T    > 34 BC DA 54 00 00 00 00 
{458} normal block at 0x012ABD68, 32 bytes long.
 Data: <H M A C - S H A > 48 00 4D 00 41 00 43 00 2D 00 53 00 48 00 41 00 
{457} normal block at 0x012ABD20, 8 bytes long.
 Data: <   T    > 18 BC DA 54 00 00 00 00 
{456} normal block at 0x012ABCC0, 32 bytes long.
 Data: <o a u t h _ v e > 6F 00 61 00 75 00 74 00 68 00 5F 00 76 00 65 00 
{455} normal block at 0x012ABC78, 8 bytes long.
 Data: <   T    > F8 BB DA 54 00 00 00 00 
{454} normal block at 0x012ABC18, 32 bytes long.
 Data: <o a u t h _ v e > 6F 00 61 00 75 00 74 00 68 00 5F 00 76 00 65 00 
{453} normal block at 0x012ABBD0, 8 bytes long.
 Data: <   T    > DC BB DA 54 00 00 00 00 
{452} normal block at 0x012A1338, 48 bytes long.
 Data: <o a u t h _ t o > 6F 00 61 00 75 00 74 00 68 00 5F 00 74 00 6F 00 
{451} normal block at 0x012A12F0, 8 bytes long.
 Data: <   T    > C0 BB DA 54 00 00 00 00 
{450} normal block at 0x012A1290, 32 bytes long.
 Data: <o a u t h _ t o > 6F 00 61 00 75 00 74 00 68 00 5F 00 74 00 6F 00 
{449} normal block at 0x012A1248, 8 bytes long.
 Data: <   T    > A4 BB DA 54 00 00 00 00 
{448} normal block at 0x012A11E8, 32 bytes long.
 Data: <o a u t h _ t i > 6F 00 61 00 75 00 74 00 68 00 5F 00 74 00 69 00 
{447} normal block at 0x012A11A0, 8 bytes long.
 Data: <   T    > 88 BB DA 54 00 00 00 00 
{445} normal block at 0x012AB720, 48 bytes long.
 Data: <o a u t h _ s i > 6F 00 61 00 75 00 74 00 68 00 5F 00 73 00 69 00 
{444} normal block at 0x012AB6D8, 8 bytes long.
 Data: <l  T    > 6C BB DA 54 00 00 00 00 
{443} normal block at 0x012AB678, 32 bytes long.
 Data: <o a u t h _ s i > 6F 00 61 00 75 00 74 00 68 00 5F 00 73 00 69 00 
{442} normal block at 0x012AB630, 8 bytes long.
 Data: <P  T    > 50 BB DA 54 00 00 00 00 
{441} normal block at 0x012AB5E8, 8 bytes long.
 Data: <4  T    > 34 BB DA 54 00 00 00 00 
{440} normal block at 0x012AB588, 32 bytes long.
 Data: <o a u t h _ n o > 6F 00 61 00 75 00 74 00 68 00 5F 00 6E 00 6F 00 
{439} normal block at 0x012AB540, 8 bytes long.
 Data: <   T    > 18 BB DA 54 00 00 00 00 
{438} normal block at 0x012AB4D0, 48 bytes long.
 Data: <o a u t h _ c o > 6F 00 61 00 75 00 74 00 68 00 5F 00 63 00 6F 00 
{437} normal block at 0x012AB488, 8 bytes long.
 Data: <   T    > FC BA DA 54 00 00 00 00 
{436} normal block at 0x012AB408, 64 bytes long.
 Data: <o a u t h _ c a > 6F 00 61 00 75 00 74 00 68 00 5F 00 63 00 61 00 
{435} normal block at 0x012AB3C0, 8 bytes long.
 Data: <   T    > E0 BA DA 54 00 00 00 00 
{434} normal block at 0x012AB360, 32 bytes long.
 Data: <o a u t h _ c a > 6F 00 61 00 75 00 74 00 68 00 5F 00 63 00 61 00 
{433} normal block at 0x012AB318, 8 bytes long.
 Data: <   T    > C4 BA DA 54 00 00 00 00 
{432} normal block at 0x012A4820, 16 bytes long.
 Data: <                > 00 00 00 00 07 00 00 00 08 00 00 00 0D 00 00 00 
{431} normal block at 0x012A35D0, 8 bytes long.
 Data: <   T    > 0C B4 DA 54 00 00 00 00 
{430} normal block at 0x012A4790, 80 bytes long.
 Data: <ABCDEFGHIJKLMNOP> 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 
{429} normal block at 0x012A3588, 8 bytes long.
 Data: <   T    > C0 B3 DA 54 00 00 00 00 
{428} normal block at 0x012A2DE8, 8 bytes long.
 Data: <   T    > 98 B3 DA 54 00 00 00 00 
{427} normal block at 0x012A36E8, 128 bytes long.
 Data: <A B C D E F G H > 41 00 42 00 43 00 44 00 45 00 46 00 47 00 48 00 
{426} normal block at 0x012A2A98, 8 bytes long.
 Data: <h  T    > 68 B3 DA 54 00 00 00 00 
{305} normal block at 0x012A29D8, 32 bytes long.
 Data: <t o k e n _ t y > 74 00 6F 00 6B 00 65 00 6E 00 5F 00 74 00 79 00 
{304} normal block at 0x012A2990, 8 bytes long.
 Data: <   T    > EC B2 DA 54 00 00 00 00 
{303} normal block at 0x012A2948, 8 bytes long.
 Data: <   T    > D0 B2 DA 54 00 00 00 00 
{302} normal block at 0x012A2900, 8 bytes long.
 Data: <   T    > B4 B2 DA 54 00 00 00 00 
{301} normal block at 0x012A28B8, 8 bytes long.
 Data: <   T    > 98 B2 DA 54 00 00 00 00 
{300} normal block at 0x012A2858, 32 bytes long.
 Data: <r e s p o n s e > 72 00 65 00 73 00 70 00 6F 00 6E 00 73 00 65 00 
{299} normal block at 0x012A2810, 8 bytes long.
 Data: <|  T    > 7C B2 DA 54 00 00 00 00 
{298} normal block at 0x012A27B0, 32 bytes long.
 Data: <r e f r e s h _ > 72 00 65 00 66 00 72 00 65 00 73 00 68 00 5F 00 
{297} normal block at 0x012A2768, 8 bytes long.
 Data: <`  T    > 60 B2 DA 54 00 00 00 00 
{296} normal block at 0x012A2708, 32 bytes long.
 Data: <r e d i r e c t > 72 00 65 00 64 00 69 00 72 00 65 00 63 00 74 00 
{295} normal block at 0x012A26C0, 8 bytes long.
 Data: <D  T    > 44 B2 DA 54 00 00 00 00 
{294} normal block at 0x012A2660, 32 bytes long.
 Data: <g r a n t _ t y > 67 00 72 00 61 00 6E 00 74 00 5F 00 74 00 79 00 
{293} normal block at 0x012A2618, 8 bytes long.
 Data: <(  T    > 28 B2 DA 54 00 00 00 00 
{292} normal block at 0x012A25B8, 32 bytes long.
 Data: <e x p i r e s _ > 65 00 78 00 70 00 69 00 72 00 65 00 73 00 5F 00 
{291} normal block at 0x012A2570, 8 bytes long.
 Data: <   T    > 0C B2 DA 54 00 00 00 00 
{290} normal block at 0x012A2528, 8 bytes long.
 Data: <   T    > F0 B1 DA 54 00 00 00 00 
{289} normal block at 0x012A24C8, 32 bytes long.
 Data: <c l i e n t _ s > 63 00 6C 00 69 00 65 00 6E 00 74 00 5F 00 73 00 
{288} normal block at 0x012A2480, 8 bytes long.
 Data: <   T    > D4 B1 DA 54 00 00 00 00 
{287} normal block at 0x012A2420, 32 bytes long.
 Data: <c l i e n t _ i > 63 00 6C 00 69 00 65 00 6E 00 74 00 5F 00 69 00 
{286} normal block at 0x012A23D8, 8 bytes long.
 Data: <   T    > B8 B1 DA 54 00 00 00 00 
{285} normal block at 0x012A2390, 8 bytes long.
 Data: <   T    > 9C B1 DA 54 00 00 00 00 
{284} normal block at 0x012A2320, 48 bytes long.
 Data: <a u t h o r i z > 61 00 75 00 74 00 68 00 6F 00 72 00 69 00 7A 00 
{283} normal block at 0x012A22D8, 8 bytes long.
 Data: <   T    > 80 B1 DA 54 00 00 00 00 
{282} normal block at 0x012A2278, 32 bytes long.
 Data: <a c c e s s _ t > 61 00 63 00 63 00 65 00 73 00 73 00 5F 00 74 00 
{281} normal block at 0x012A2230, 8 bytes long.
 Data: <d  T    > 64 B1 DA 54 00 00 00 00 
{280} normal block at 0x012A21D0, 32 bytes long.
 Data: <u t f - 1 6 b e > 75 00 74 00 66 00 2D 00 31 00 36 00 62 00 65 00 
{279} normal block at 0x012A2188, 8 bytes long.
 Data: <t  T    > 74 AF DA 54 00 00 00 00 
{278} normal block at 0x012A2128, 32 bytes long.
 Data: <u t f - 1 6 l e > 75 00 74 00 66 00 2D 00 31 00 36 00 6C 00 65 00 
{277} normal block at 0x012A20E0, 8 bytes long.
 Data: <X  T    > 58 AF DA 54 00 00 00 00 
{276} normal block at 0x012A2098, 8 bytes long.
 Data: <<  T    > 3C AF DA 54 00 00 00 00 
{275} normal block at 0x012A2050, 8 bytes long.
 Data: <   T    > 20 AF DA 54 00 00 00 00 
{274} normal block at 0x012A1FF0, 32 bytes long.
 Data: <i s o - 8 8 5 9 > 69 00 73 00 6F 00 2D 00 38 00 38 00 35 00 39 00 
{273} normal block at 0x012A1FA8, 8 bytes long.
 Data: <   T    > 04 AF DA 54 00 00 00 00 
{272} normal block at 0x012A1F48, 32 bytes long.
 Data: <u s - a s c i i > 75 00 73 00 2D 00 61 00 73 00 63 00 69 00 69 00 
{271} normal block at 0x012A1F00, 8 bytes long.
 Data: <   T    > E8 AE DA 54 00 00 00 00 
{270} normal block at 0x012A1EB8, 8 bytes long.
 Data: <   T    > CC AE DA 54 00 00 00 00 
{269} normal block at 0x012A1E58, 32 bytes long.
 Data: <t e x t / x - j > 74 00 65 00 78 00 74 00 2F 00 78 00 2D 00 6A 00 
{268} normal block at 0x012A1E10, 8 bytes long.
 Data: <   T    > B0 AE DA 54 00 00 00 00 
{267} normal block at 0x012A1DA0, 48 bytes long.
 Data: <t e x t / x - j > 74 00 65 00 78 00 74 00 2F 00 78 00 2D 00 6A 00 
{266} normal block at 0x012A1D58, 8 bytes long.
 Data: <   T    > 94 AE DA 54 00 00 00 00 
{265} normal block at 0x012A1CD8, 64 bytes long.
 Data: <t e x t / p l a > 74 00 65 00 78 00 74 00 2F 00 70 00 6C 00 61 00 
{264} normal block at 0x012A1C90, 8 bytes long.
 Data: <x  T    > 78 AE DA 54 00 00 00 00 
{263} normal block at 0x012A1C10, 64 bytes long.
 Data: <t e x t / p l a > 74 00 65 00 78 00 74 00 2F 00 70 00 6C 00 61 00 
{262} normal block at 0x012A1BC8, 8 bytes long.
 Data: <\  T    > 5C AE DA 54 00 00 00 00 
{261} normal block at 0x012A1B48, 64 bytes long.
 Data: <t e x t / p l a > 74 00 65 00 78 00 74 00 2F 00 70 00 6C 00 61 00 
{260} normal block at 0x012A1B00, 8 bytes long.
 Data: <@  T    > 40 AE DA 54 00 00 00 00 
{259} normal block at 0x012A1AA0, 32 bytes long.
 Data: <t e x t / p l a > 74 00 65 00 78 00 74 00 2F 00 70 00 6C 00 61 00 
{258} normal block at 0x012A1A58, 8 bytes long.
 Data: <$  T    > 24 AE DA 54 00 00 00 00 
{257} normal block at 0x012A19F8, 32 bytes long.
 Data: <t e x t / j s o > 74 00 65 00 78 00 74 00 2F 00 6A 00 73 00 6F 00 
{256} normal block at 0x012A19B0, 8 bytes long.
 Data: <   T    > 08 AE DA 54 00 00 00 00 
{255} normal block at 0x012A1950, 32 bytes long.
 Data: <t e x t / j a v > 74 00 65 00 78 00 74 00 2F 00 6A 00 61 00 76 00 
{254} normal block at 0x012A1908, 8 bytes long.
 Data: <   T    > EC AD DA 54 00 00 00 00 
{253} normal block at 0x012A18C0, 8 bytes long.
 Data: <   T    > D0 AD DA 54 00 00 00 00 
{252} normal block at 0x012A1860, 32 bytes long.
 Data: <m e s s a g e / > 6D 00 65 00 73 00 73 00 61 00 67 00 65 00 2F 00 
{251} normal block at 0x012A1818, 8 bytes long.
 Data: <   T    > B4 AD DA 54 00 00 00 00 
{250} normal block at 0x012A17B8, 32 bytes long.
 Data: <a p p l i c a t > 61 00 70 00 70 00 6C 00 69 00 63 00 61 00 74 00 
{249} normal block at 0x012A1770, 8 bytes long.
 Data: <   T    > 98 AD DA 54 00 00 00 00 
{248} normal block at 0x012A16F0, 64 bytes long.
 Data: <a p p l i c a t > 61 00 70 00 70 00 6C 00 69 00 63 00 61 00 74 00 
{247} normal block at 0x012A16A8, 8 bytes long.
 Data: <|  T    > 7C AD DA 54 00 00 00 00 
{246} normal block at 0x012A1618, 80 bytes long.
 Data: <a p p l i c a t > 61 00 70 00 70 00 6C 00 69 00 63 00 61 00 74 00 
{245} normal block at 0x012A15D0, 8 bytes long.
 Data: <`  T    > 60 AD DA 54 00 00 00 00 
{244} normal block at 0x012A1550, 64 bytes long.
 Data: <a p p l i c a t > 61 00 70 00 70 00 6C 00 69 00 63 00 61 00 74 00 
{243} normal block at 0x012A1508, 8 bytes long.
 Data: <D  T    > 44 AD DA 54 00 00 00 00 
{242} normal block at 0x012A1498, 48 bytes long.
 Data: <a p p l i c a t > 61 00 70 00 70 00 6C 00 69 00 63 00 61 00 74 00 
{241} normal block at 0x012A1450, 8 bytes long.
 Data: <(  T    > 28 AD DA 54 00 00 00 00 
{240} normal block at 0x012A13E0, 48 bytes long.
 Data: <a p p l i c a t > 61 00 70 00 70 00 6C 00 69 00 63 00 61 00 74 00 
{239} normal block at 0x012A0228, 8 bytes long.
 Data: <   T    > 0C AD DA 54 00 00 00 00 
{238} normal block at 0x012A01B8, 48 bytes long.
 Data: <a p p l i c a t > 61 00 70 00 70 00 6C 00 69 00 63 00 61 00 74 00 
{237} normal block at 0x012A0170, 8 bytes long.
 Data: <   T    > F0 AC DA 54 00 00 00 00 
{235} normal block at 0x012A1130, 48 bytes long.
 Data: <a p p l i c a t > 61 00 70 00 70 00 6C 00 69 00 63 00 61 00 74 00 
{234} normal block at 0x012A10E8, 8 bytes long.
 Data: <   T    > D4 AC DA 54 00 00 00 00 
{233} normal block at 0x012A1078, 48 bytes long.
 Data: <a p p l i c a t > 61 00 70 00 70 00 6C 00 69 00 63 00 61 00 74 00 
{232} normal block at 0x012A1030, 8 bytes long.
 Data: <   T    > B8 AC DA 54 00 00 00 00 
{231} normal block at 0x012A0FC0, 48 bytes long.
 Data: <W W W - A u t h > 57 00 57 00 57 00 2D 00 41 00 75 00 74 00 68 00 
{230} normal block at 0x012A0F78, 8 bytes long.
 Data: <   T    > 9C AC DA 54 00 00 00 00 
{229} normal block at 0x012A0F30, 8 bytes long.
 Data: <   T    > 80 AC DA 54 00 00 00 00 
{228} normal block at 0x012A0EE8, 8 bytes long.
 Data: <d  T    > 64 AC DA 54 00 00 00 00 
{227} normal block at 0x012A0EA0, 8 bytes long.
 Data: <H  T    > 48 AC DA 54 00 00 00 00 
{226} normal block at 0x012A0E40, 32 bytes long.
 Data: <U s e r - A g e > 55 00 73 00 65 00 72 00 2D 00 41 00 67 00 65 00 
{225} normal block at 0x012A0DF8, 8 bytes long.
 Data: <,  T    > 2C AC DA 54 00 00 00 00 
{224} normal block at 0x012A0DB0, 8 bytes long.
 Data: <   T    > 10 AC DA 54 00 00 00 00 
{223} normal block at 0x012A0D40, 48 bytes long.
 Data: <T r a n s f e r > 54 00 72 00 61 00 6E 00 73 00 66 00 65 00 72 00 
{222} normal block at 0x012A0CF8, 8 bytes long.
 Data: <   T    > F4 AB DA 54 00 00 00 00 
{221} normal block at 0x012A0CB0, 8 bytes long.
 Data: <   T    > D8 AB DA 54 00 00 00 00 
{220} normal block at 0x012A0C68, 8 bytes long.
 Data: <   T    > BC AB DA 54 00 00 00 00 
{219} normal block at 0x012A0C20, 8 bytes long.
 Data: <   T    > A0 AB DA 54 00 00 00 00 
{218} normal block at 0x012A0BC0, 32 bytes long.
 Data: <R e t r y - A f > 52 00 65 00 74 00 72 00 79 00 2D 00 41 00 66 00 
{217} normal block at 0x012A0B78, 8 bytes long.
 Data: <   T    > 84 AB DA 54 00 00 00 00 
{216} normal block at 0x012A0B30, 8 bytes long.
 Data: <h  T    > 68 AB DA 54 00 00 00 00 
{215} normal block at 0x012A0AE8, 8 bytes long.
 Data: <L  T    > 4C AB DA 54 00 00 00 00 
{214} normal block at 0x012A0A78, 48 bytes long.
 Data: <P r o x y - A u > 50 00 72 00 6F 00 78 00 79 00 2D 00 41 00 75 00 
{213} normal block at 0x012A0A30, 8 bytes long.
 Data: <0  T    > 30 AB DA 54 00 00 00 00 
{212} normal block at 0x012A09C0, 48 bytes long.
 Data: <P r o x y - A u > 50 00 72 00 6F 00 78 00 79 00 2D 00 41 00 75 00 
{211} normal block at 0x012A0978, 8 bytes long.
 Data: <   T    > 14 AB DA 54 00 00 00 00 
{210} normal block at 0x012A0930, 8 bytes long.
 Data: <   T    > F8 AA DA 54 00 00 00 00 
{209} normal block at 0x012A08D0, 32 bytes long.
 Data: <M a x - F o r w > 4D 00 61 00 78 00 2D 00 46 00 6F 00 72 00 77 00 
{208} normal block at 0x012A0888, 8 bytes long.
 Data: <   T    > DC AA DA 54 00 00 00 00 
{207} normal block at 0x012A0828, 32 bytes long.
 Data: <L o c a t i o n > 4C 00 6F 00 63 00 61 00 74 00 69 00 6F 00 6E 00 
{206} normal block at 0x012A07E0, 8 bytes long.
 Data: <   T    > C0 AA DA 54 00 00 00 00 
{205} normal block at 0x012A0780, 32 bytes long.
 Data: <L a s t - M o d > 4C 00 61 00 73 00 74 00 2D 00 4D 00 6F 00 64 00 
{204} normal block at 0x012A0738, 8 bytes long.
 Data: <   T    > A4 AA DA 54 00 00 00 00 
{203} normal block at 0x012A06C8, 48 bytes long.
 Data: <I f - U n m o d > 49 00 66 00 2D 00 55 00 6E 00 6D 00 6F 00 64 00 
{202} normal block at 0x012A0680, 8 bytes long.
 Data: <   T    > 88 AA DA 54 00 00 00 00 
{201} normal block at 0x012A0620, 32 bytes long.
 Data: <I f - R a n g e > 49 00 66 00 2D 00 52 00 61 00 6E 00 67 00 65 00 
{200} normal block at 0x012A05D8, 8 bytes long.
 Data: <l  T    > 6C AA DA 54 00 00 00 00 
{199} normal block at 0x012A0578, 32 bytes long.
 Data: <I f - N o n e - > 49 00 66 00 2D 00 4E 00 6F 00 6E 00 65 00 2D 00 
{198} normal block at 0x012A0530, 8 bytes long.
 Data: <P  T    > 50 AA DA 54 00 00 00 00 
{197} normal block at 0x012A04C0, 48 bytes long.
 Data: <I f - M o d i f > 49 00 66 00 2D 00 4D 00 6F 00 64 00 69 00 66 00 
{196} normal block at 0x012A0478, 8 bytes long.
 Data: <4  T    > 34 AA DA 54 00 00 00 00 
{195} normal block at 0x012A0418, 32 bytes long.
 Data: <I f - M a t c h > 49 00 66 00 2D 00 4D 00 61 00 74 00 63 00 68 00 
{194} normal block at 0x012A03D0, 8 bytes long.
 Data: <   T    > 18 AA DA 54 00 00 00 00 
{193} normal block at 0x012A0388, 8 bytes long.
 Data: <   T    > FC A9 DA 54 00 00 00 00 
{192} normal block at 0x012A0340, 8 bytes long.
 Data: <   T    > E0 A9 DA 54 00 00 00 00 
{191} normal block at 0x012A02F8, 8 bytes long.
 Data: <   T    > C4 A9 DA 54 00 00 00 00 
{190} normal block at 0x012A02B0, 8 bytes long.
 Data: <   T    > A8 A9 DA 54 00 00 00 00 
{189} normal block at 0x012991D8, 8 bytes long.
 Data: <   T    > 8C A9 DA 54 00 00 00 00 
{188} normal block at 0x01299190, 8 bytes long.
 Data: <p  T    > 70 A9 DA 54 00 00 00 00 
{186} normal block at 0x012A0110, 32 bytes long.
 Data: <C o n t e n t - > 43 00 6F 00 6E 00 74 00 65 00 6E 00 74 00 2D 00 
{185} normal block at 0x012A00C8, 8 bytes long.
 Data: <T  T    > 54 A9 DA 54 00 00 00 00 
{184} normal block at 0x012A0068, 32 bytes long.
 Data: <C o n t e n t - > 43 00 6F 00 6E 00 74 00 65 00 6E 00 74 00 2D 00 
{183} normal block at 0x012A0020, 8 bytes long.
 Data: <8  T    > 38 A9 DA 54 00 00 00 00 
{182} normal block at 0x0129FFC0, 32 bytes long.
 Data: <C o n t e n t - > 43 00 6F 00 6E 00 74 00 65 00 6E 00 74 00 2D 00 
{181} normal block at 0x0129FF78, 8 bytes long.
 Data: <   T    > 1C A9 DA 54 00 00 00 00 
{180} normal block at 0x0129FF08, 48 bytes long.
 Data: <C o n t e n t - > 43 00 6F 00 6E 00 74 00 65 00 6E 00 74 00 2D 00 
{179} normal block at 0x0129FEC0, 8 bytes long.
 Data: <   T    > 00 A9 DA 54 00 00 00 00 
{178} normal block at 0x0129FE60, 32 bytes long.
 Data: <C o n t e n t - > 43 00 6F 00 6E 00 74 00 65 00 6E 00 74 00 2D 00 
{177} normal block at 0x0129FE18, 8 bytes long.
 Data: <   T    > E4 A8 DA 54 00 00 00 00 
{176} normal block at 0x0129FDA8, 48 bytes long.
 Data: <C o n t e n t - > 43 00 6F 00 6E 00 74 00 65 00 6E 00 74 00 2D 00 
{175} normal block at 0x0129FD60, 8 bytes long.
 Data: <   T    > C8 A8 DA 54 00 00 00 00 
{174} normal block at 0x0129FCF0, 48 bytes long.
 Data: <C o n t e n t - > 43 00 6F 00 6E 00 74 00 65 00 6E 00 74 00 2D 00 
{173} normal block at 0x0129FCA8, 8 bytes long.
 Data: <   T    > AC A8 DA 54 00 00 00 00 
{172} normal block at 0x0129FC48, 32 bytes long.
 Data: <C o n n e c t i > 43 00 6F 00 6E 00 6E 00 65 00 63 00 74 00 69 00 
{171} normal block at 0x0129FC00, 8 bytes long.
 Data: <   T    > 90 A8 DA 54 00 00 00 00 
{170} normal block at 0x0129FBA0, 32 bytes long.
 Data: <C a c h e - C o > 43 00 61 00 63 00 68 00 65 00 2D 00 43 00 6F 00 
{169} normal block at 0x0129FB58, 8 bytes long.
 Data: <t  T    > 74 A8 DA 54 00 00 00 00 
{168} normal block at 0x0129FAF8, 32 bytes long.
 Data: <A u t h o r i z > 41 00 75 00 74 00 68 00 6F 00 72 00 69 00 7A 00 
{167} normal block at 0x0129FAB0, 8 bytes long.
 Data: <X  T    > 58 A8 DA 54 00 00 00 00 
{166} normal block at 0x0129FA68, 8 bytes long.
 Data: <<  T    > 3C A8 DA 54 00 00 00 00 
{165} normal block at 0x0129FA20, 8 bytes long.
 Data: <   T    > 20 A8 DA 54 00 00 00 00 
{164} normal block at 0x0129F9C0, 32 bytes long.
 Data: <A c c e p t - R > 41 00 63 00 63 00 65 00 70 00 74 00 2D 00 52 00 
{163} normal block at 0x0129F978, 8 bytes long.
 Data: <   T    > 04 A8 DA 54 00 00 00 00 
{162} normal block at 0x0129F918, 32 bytes long.
 Data: <A c c e p t - L > 41 00 63 00 63 00 65 00 70 00 74 00 2D 00 4C 00 
{161} normal block at 0x0129F8D0, 8 bytes long.
 Data: <   T    > E8 A7 DA 54 00 00 00 00 
{160} normal block at 0x0129F870, 32 bytes long.
 Data: <A c c e p t - E > 41 00 63 00 63 00 65 00 70 00 74 00 2D 00 45 00 
{159} normal block at 0x0129F828, 8 bytes long.
 Data: <   T    > CC A7 DA 54 00 00 00 00 
{158} normal block at 0x0129F7C8, 32 bytes long.
 Data: <A c c e p t - C > 41 00 63 00 63 00 65 00 70 00 74 00 2D 00 43 00 
{157} normal block at 0x0129F780, 8 bytes long.
 Data: <   T    > B0 A7 DA 54 00 00 00 00 
{156} normal block at 0x0129F738, 8 bytes long.
 Data: <   T    > 94 A7 DA 54 00 00 00 00 
{155} normal block at 0x0129F6F0, 8 bytes long.
 Data: <x  T    > 78 A7 DA 54 00 00 00 00 
{154} normal block at 0x0129F6A8, 8 bytes long.
 Data: <\  T    > 5C A7 DA 54 00 00 00 00 
{153} normal block at 0x0129F660, 8 bytes long.
 Data: <@  T    > 40 A7 DA 54 00 00 00 00 
{152} normal block at 0x0129F618, 8 bytes long.
 Data: <$  T    > 24 A7 DA 54 00 00 00 00 
{151} normal block at 0x0129F5D0, 8 bytes long.
 Data: <   T    > 08 A7 DA 54 00 00 00 00 
{150} normal block at 0x0129F588, 8 bytes long.
 Data: <   T    > EC A6 DA 54 00 00 00 00 
{149} normal block at 0x0129F540, 8 bytes long.
 Data: <   T    > D0 A6 DA 54 00 00 00 00 
{148} normal block at 0x0129F150, 8 bytes long.
 Data: <   T    > B4 A6 DA 54 00 00 00 00 
{147} normal block at 0x0129F108, 8 bytes long.
 Data: <   T    > 98 A6 DA 54 00 00 00 00 
{146} normal block at 0x01295EB0, 8 bytes long.
 Data: <|  T    > 7C A6 DA 54 00 00 00 00 
Object dump complete.

Can't use WAS C++ SDK in a C++ UWP Application

I can't build an UWP Application with WAS for C++.
I can't build WAS with Vcpkg with the uwp triplet: https://github.com/Microsoft/vcpkg/blob/master/ports/azure-storage-cpp/portfile.cmake

vcpkg install azure-storage-cpp failed with these errors:
4>C:\temp\vcpkg\buildtrees\azure-storage-cpp\src\azure-storage-cpp-3.0.0\Microsoft.WindowsAzure.Storage\src\basic_types.cpp(31): error C3861: 'UuidCreate': identifier not found [C:\temp\vcpkg\buildtrees\azure-storage-cpp\x86-uwp-rel\src\azurestorage.vcxproj]
4>C:\temp\vcpkg\buildtrees\azure-storage-cpp\src\azure-storage-cpp-3.0.0\Microsoft.WindowsAzure.Storage\src\basic_types.cpp(32): error C2065: 'RPC_S_OK': undeclared identifier [C:\temp\vcpkg\buildtrees\azure-storage-cpp\x86-uwp-rel\src\azurestorage.vcxproj]
4>C:\temp\vcpkg\buildtrees\azure-storage-cpp\src\azure-storage-cpp-3.0.0\Microsoft.WindowsAzure.Storage\src\basic_types.cpp(49): error C3861: 'UuidToStringW': identifier not found [C:\temp\vcpkg\buildtrees\azure-storage-cpp\x86-uwp-rel\src\azurestorage.vcxproj]
4>C:\temp\vcpkg\buildtrees\azure-storage-cpp\src\azure-storage-cpp-3.0.0\Microsoft.WindowsAzure.Storage\src\basic_types.cpp(50): error C2065: 'RPC_S_OK': undeclared identifier [C:\temp\vcpkg\buildtrees\azure-storage-cpp\x86-uwp-rel\src\azurestorage.vcxproj]
4>C:\temp\vcpkg\buildtrees\azure-storage-cpp\src\azure-storage-cpp-3.0.0\Microsoft.WindowsAzure.Storage\src\basic_types.cpp(57): error C3861: 'RpcStringFree': identifier not found [C:\temp\vcpkg\buildtrees\azure-storage-cpp\x86-uwp-rel\src\azurestorage.vcxproj]
4>C:\temp\vcpkg\buildtrees\azure-storage-cpp\src\azure-storage-cpp-3.0.0\Microsoft.WindowsAzure.Storage\src\basic_types.cpp(58): error C2065: 'RPC_S_OK': undeclared identifier [C:\temp\vcpkg\buildtrees\azure-storage-cpp\x86-uwp-rel\src\azurestorage.vcxproj]
4>C:\temp\vcpkg\buildtrees\azure-storage-cpp\src\azure-storage-cpp-3.0.0\Microsoft.WindowsAzure.Storage\src\basic_types.cpp(81): error C3861: 'UuidFromStringW': identifier not found [C:\temp\vcpkg\buildtrees\azure-storage-cpp\x86-uwp-rel\src\azurestorage.vcxproj]
4>C:\temp\vcpkg\buildtrees\azure-storage-cpp\src\azure-storage-cpp-3.0.0\Microsoft.WindowsAzure.Storage\src\basic_types.cpp(82): error C2065: 'RPC_S_OK': undeclared identifier [C:\temp\vcpkg\buildtrees\azure-storage-cpp\x86-uwp-rel\src\azurestorage.vcxproj]

Readme.md needs updates

Was trying the unit tests procedure given there on the latest Debian distribution. I found that cmake did not like this:

CASABLANCA_DIR=<path to Casablanca> CXX=g++-4.8 cmake
     .. -DCMAKE_BUILD_TYPE=Release -DBUILD_TESTS

But it was happy when I changed to -DBUILD_TESTS=1

To actually run the unit tests the document says to use azurestoragetest, which does not exist. I couldn't even determine another file that might be its replacement.

Missing hash_linux.h header

Hi,
We are missing the has_linux.h header. Would you please check it in. It doesn't compile under Linux without this header.

https://github.com/Azure/azure-storage-cpp/tree/master/Microsoft.WindowsAzure.Storage/includes/wascore

The code that uses this is in:

https://github.com/Azure/azure-storage-cpp/blob/master/Microsoft.WindowsAzure.Storage/includes/wascore/streams.h

include "wascore/basic_types.h"

include "streambuf.h"

ifdef WIN32

include "hash_windows.h"

else

include "hash_linux.h"

endif

Thanks!

  • Sameer

Exception in azure storage version 2.1.0

Hi,

while testing our code, we encountered the following exception:

2016-11-03 13:57:49.862,Error,3384,XXXXXXXXXXX,,EXCEPTION: code=2147483651 flags=0 addr=00007FFFAEE5C2FCSymInit: Symbol-SearchPath: '.;XXXXXXXXXXXXXX;C:\Windows;C:\Windows\system32;SRVC:\websymbolshttp://msdl.microsoft.com/download/symbols;', symOptions: 530, UserName: 'SYSTEM'
OS-Version: 6.2.9200 () 0x190-0x3
XXXXXXX.exe:XXXXXX.exe (00007FF675BC0000), size: 6377472 (result: 0), SymType: 'PDB', PDB: 'XXXXXXXX.exe'
C:\Windows\SYSTEM32\ntdll.dll:ntdll.dll (00007FFFBFE40000), size: 1757184 (result: 0), SymType: '-exported-', PDB: 'C:\Windows\SYSTEM32\ntdll.dll', fileVersion: 6.3.9600.18438
C:\Windows\system32\KERNEL32.DLL:KERNEL32.DLL (00007FFFBFD00000), size: 1302528 (result: 0), SymType: '-exported-', PDB: 'C:\Windows\system32\KERNEL32.DLL', fileVersion: 6.3.9600.17415
C:\Windows\system32\KERNELBASE.dll:KERNELBASE.dll (00007FFFBD260000), size: 1134592 (result: 0), SymType: '-exported-', PDB: 'C:\Windows\system32\KERNELBASE.dll', fileVersion: 6.3.9600.18340
C:\Windows\system32\PSAPI.DLL:PSAPI.DLL (00007FFFBE0B0000), size: 28672 (result: 0), SymType: '-exported-', PDB: 'C:\Windows\system32\PSAPI.DLL', fileVersion: 6.3.9600.17415
C:\Windows\system32\ADVAPI32.dll:ADVAPI32.dll (00007FFFBE000000), size: 696320 (result: 0), SymType: '-exported-', PDB: 'C:\Windows\system32\ADVAPI32.dll', fileVersion: 6.3.9600.18155
XXXXXXX\MSVCP120.dll:MSVCP120.dll (00007FFFAFA20000), size: 679936 (result: 0), SymType: '-exported-', PDB: 'XXXXXXX\MSVCP120.dll', fileVersion: 12.0.21005.1
XXXXXXX\MSVCR120.dll:MSVCR120.dll (00007FFFAF930000), size: 978944 (result: 0), SymType: '-exported-', PDB: 'XXXXXX\MSVCR120.dll', fileVersion: 12.0.21005.1
C:\Windows\SYSTEM32\VERSION.dll:VERSION.dll (00007FFFB6FC0000), size: 40960 (result: 0), SymType: '-nosymbols-', PDB: 'C:\Windows\SYSTEM32\VERSION.dll', fileVersion: 6.3.9600.17415
C:\Windows\SYSTEM32\pdh.dll:pdh.dll (00007FFFAF8E0000), size: 323584 (result: 0), SymType: '-nosymbols-', PDB: 'C:\Windows\SYSTEM32\pdh.dll', fileVersion: 6.3.9600.17415
C:\Windows\system32\WS2_32.dll:WS2_32.dll (00007FFFBFA90000), size: 368640 (result: 0), SymType: '-nosymbols-', PDB: 'C:\Windows\system32\WS2_32.dll', fileVersion: 6.3.9600.18340
C:\Windows\SYSTEM32\WINHTTP.dll:WINHTTP.dll (00007FFFB7630000), size: 815104 (result: 0), SymType: '-nosymbols-', PDB: 'C:\Windows\SYSTEM32\WINHTTP.dll', fileVersion: 6.3.9600.18378
C:\Windows\SYSTEM32\bcrypt.dll:bcrypt.dll (00007FFFBCA50000), size: 155648 (result: 0), SymType: '-nosymbols-', PDB: 'C:\Windows\SYSTEM32\bcrypt.dll', fileVersion: 6.3.9600.17415
C:\Windows\SYSTEM32\XmlLite.dll:XmlLite.dll (00007FFFB92D0000), size: 233472 (result: 0), SymType: '-nosymbols-', PDB: 'C:\Windows\SYSTEM32\XmlLite.dll', fileVersion: 6.3.9600.17415
XXXXXXX\cpprest120_2_6.dll:cpprest120_2_6.dll (00007FFFAF380000), size: 5627904 (result: 0), SymType: '-nosymbols-', PDB: 'C:\Program Files\Zerto\Zerto Virtual Replication\cpprest120_2_6.dll', fileVersion: 2.6.0.0
XXXXXX\wastorage.dll:wastorage.dll (00007FFFAED70000), size: 6344704 (result: 0), SymType: '-nosymbols-', PDB: 'XXXXX\wastorage.dll', fileVersion: 2.1.0.0
C:\Windows\SYSTEM32\IPHLPAPI.DLL:IPHLPAPI.DLL (00007FFFB8BF0000), size: 172032 (result: 0), SymType: '-nosymbols-', PDB: 'C:\Windows\SYSTEM32\IPHLPAPI.DLL', fileVersion: 6.3.9600.18264
C:\Windows\system32\msvcrt.dll:msvcrt.dll (00007FFFBDE90000), size: 696320 (result: 0), SymType: '-nosymbols-', PDB: 'C:\Windows\system32\msvcrt.dll', fileVersion: 7.0.9600.17415
C:\Windows\SYSTEM32\sechost.dll:sechost.dll (00007FFFBD6D0000), size: 364544 (result: 0), SymType: '-nosymbols-', PDB: 'C:\Windows\SYSTEM32\sechost.dll', fileVersion: 6.3.9600.17734
C:\Windows\system32\RPCRT4.dll:RPCRT4.dll (00007FFFBF950000), size: 1310720 (result: 0), SymType: '-nosymbols-', PDB: 'C:\Windows\system32\RPCRT4.dll', fileVersion: 6.3.9600.18292
C:\Windows\system32\NSI.dll:NSI.dll (00007FFFBFCF0000), size: 36864 (result: 0), SymType: '-nosymbols-', PDB: 'C:\Windows\system32\NSI.dll', fileVersion: 6.3.9600.17415
C:\Windows\SYSTEM32\combase.dll:combase.dll (00007FFFBDC70000), size: 2166784 (result: 0), SymType: '-nosymbols-', PDB: 'C:\Windows\SYSTEM32\combase.dll', fileVersion: 6.3.9600.18202
C:\Windows\SYSTEM32\HTTPAPI.dll:HTTPAPI.dll (00007FFFB2600000), size: 57344 (result: 0), SymType: '-nosymbols-', PDB: 'C:\Windows\SYSTEM32\HTTPAPI.dll', fileVersion: 6.3.9600.17415
C:\Windows\system32\CRYPT32.dll:CRYPT32.dll (00007FFFBD080000), size: 1961984 (result: 0), SymType: '-nosymbols-', PDB: 'C:\Windows\system32\CRYPT32.dll', fileVersion: 6.3.9600.18372
C:\Windows\system32\USER32.dll:USER32.dll (00007FFFBF7D0000), size: 1536000 (result: 0), SymType: '-nosymbols-', PDB: 'C:\Windows\system32\USER32.dll', fileVersion: 6.3.9600.18439
C:\Windows\system32\GDI32.dll:GDI32.dll (00007FFFBD8C0000), size: 1372160 (result: 0), SymType: '-nosymbols-', PDB: 'C:\Windows\system32\GDI32.dll', fileVersion: 6.3.9600.18344
C:\Windows\SYSTEM32\WINNSI.DLL:WINNSI.DLL (00007FFFB8E20000), size: 40960 (result: 0), SymType: '-nosymbols-', PDB: 'C:\Windows\SYSTEM32\WINNSI.DLL', fileVersion: 6.3.9600.17415
C:\Windows\system32\SspiCli.dll:SspiCli.dll (00007FFFBD380000), size: 188416 (result: 0), SymType: '-nosymbols-', PDB: 'C:\Windows\system32\SspiCli.dll', fileVersion: 6.3.9600.17415
C:\Windows\system32\MSASN1.dll:MSASN1.dll (00007FFFBD010000), size: 69632 (result: 8), SymType: '-unknown-', PDB: '', fileVersion: 6.3.9600.17415
C:\Windows\SYSTEM32\DPAPI.DLL:DPAPI.DLL (00007FFFBBC30000), size: 40960 (result: 8), SymType: '-unknown-', PDB: '', fileVersion: 6.3.9600.17415
C:\Windows\SYSTEM32\CRYPTBASE.dll:CRYPTBASE.dll (00007FFFBCED0000), size: 45056 (result: 8), SymType: '-unknown-', PDB: '', fileVersion: 6.3.9600.17415
C:\Windows\SYSTEM32\bcryptPrimitives.dll:bcryptPrimitives.dll (00007FFFBCD60000), size: 405504 (result: 8), SymType: '-unknown-', PDB: '', fileVersion: 6.3.9600.18344
C:\Windows\System32\perfos.dll:perfos.dll (00007FFFAE280000), size: 53248 (result: 8), SymType: '-unknown-', PDB: '', fileVersion: 6.3.9600.17415
C:\Windows\system32\mswsock.dll:mswsock.dll (00007FFFBC6A0000), size: 364544 (result: 8), SymType: '-unknown-', PDB: '', fileVersion: 6.3.9600.18340
C:\Windows\system32\napinsp.dll:napinsp.dll (00007FFFB5070000), size: 86016 (result: 8), SymType: '-unknown-', PDB: '', fileVersion: 6.3.9600.17415
C:\Windows\system32\NLAapi.dll:NLAapi.dll (00007FFFBAAA0000), size: 110592 (result: 8), SymType: '-unknown-', PDB: '', fileVersion: 6.3.9600.17415
C:\Windows\SYSTEM32\DNSAPI.dll:DNSAPI.dll (00007FFFBC420000), size: 671744 (result: 8), SymType: '-unknown-', PDB: '', fileVersion: 6.3.9600.18402
C:\Windows\System32\winrnr.dll:winrnr.dll (00007FFFB50B0000), size: 53248 (result: 8), SymType: '-unknown-', PDB: '', fileVersion: 6.3.9600.17415
C:\Windows\System32\fwpuclnt.dll:fwpuclnt.dll (00007FFFB8A20000), size: 438272 (result: 8), SymType: '-unknown-', PDB: '', fileVersion: 6.3.9600.18229
C:\Windows\System32\rasadhlp.dll:rasadhlp.dll (00007FFFB7B10000), size: 40960 (result: 8), SymType: '-unknown-', PDB: '', fileVersion: 6.3.9600.17415
C:\Windows\SYSTEM32\kernel.appcore.dll:kernel.appcore.dll (00007FFFBBC20000), size: 45056 (result: 8), SymType: '-unknown-', PDB: '', fileVersion: 6.3.9600.17415
C:\Windows\SYSTEM32\webio.dll:webio.dll (00007FFFB2F90000), size: 528384 (result: 8), SymType: '-unknown-', PDB: '', fileVersion: 6.3.9600.18378
C:\Windows\system32\schannel.DLL:schannel.DLL (00007FFFBC3B0000), size: 450560 (result: 8), SymType: '-unknown-', PDB: '', fileVersion: 6.3.9600.18454
C:\Windows\SYSTEM32\ncrypt.dll:ncrypt.dll (00007FFFBCA20000), size: 151552 (result: 8), SymType: '-unknown-', PDB: '', fileVersion: 6.3.9600.18298
C:\Windows\SYSTEM32\NTASN1.dll:NTASN1.dll (00007FFFBC9E0000), size: 225280 (result: 8), SymType: '-unknown-', PDB: '', fileVersion: 6.3.9600.17415
C:\Windows\system32\ncryptsslp.dll:ncryptsslp.dll (00007FFFB26B0000), size: 118784 (result: 8), SymType: '-unknown-', PDB: '', fileVersion: 6.3.9600.18377
C:\Windows\SYSTEM32\CRYPTSP.dll:CRYPTSP.dll (00007FFFBC7F0000), size: 131072 (result: 8), SymType: '-unknown-', PDB: '', fileVersion: 6.3.9600.17415
C:\Windows\system32\rsaenh.dll:rsaenh.dll (00007FFFBC2A0000), size: 221184 (result: 8), SymType: '-unknown-', PDB: '', fileVersion: 6.3.9600.18191
C:\Windows\SYSTEM32\gpapi.dll:gpapi.dll (00007FFFBC180000), size: 147456 (result: 8), SymType: '-unknown-', PDB: '', fileVersion: 6.3.9600.18339
C:\Windows\SYSTEM32\dhcpcsvc6.DLL:dhcpcsvc6.DLL (00007FFFB8BA0000), size: 90112 (result: 8), SymType: '-unknown-', PDB: '', fileVersion: 6.3.9600.17415
C:\Windows\SYSTEM32\dhcpcsvc.DLL:dhcpcsvc.DLL (00007FFFB8900000), size: 106496 (result: 8), SymType: '-unknown-', PDB: '', fileVersion: 6.3.9600.17415
C:\Windows\SYSTEM32\dbghelp.dll:dbghelp.dll (00007FFFBA620000), size: 1609728 (result: 8), SymType: '-unknown-', PDB: '', fileVersion: 6.3.9600.17787
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00007FFFAEE5C2FC)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00007FFFAEE5C2FC)
00007FFFAEE5C2FC (wastorage): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00007FFFAEE5A5C1)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00007FFFAEE5A5C1)
00007FFFAEE5A5C1 (wastorage): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00007FFFAEE561F9)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00007FFFAEE561F9)
00007FFFAEE561F9 (wastorage): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00007FFFAEE26097)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00007FFFAEE26097)
00007FFFAEE26097 (wastorage): (filename not available): (function-name not available)
ERROR: SymGetSymFromAddr64, GetLastError: 487 (Address: 00007FFFAEE29EE4)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00007FFFAEE29EE4)
00007FFFAEE29EE4 (wastorage): (filename not available): (function-name not available)
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00007FFFAF94CACC)
00007FFFAF94CACC (MSVCR120): (filename not available): Concurrency::details::_TaskCollection::~_TaskCollection
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00007FFFAF932287)
00007FFFAF932287 (MSVCR120): (filename not available): Concurrency::details::_UnrealizedChore::_CheckTaskCollection
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00007FFFAF939497)
00007FFFAF939497 (MSVCR120): (filename not available): CRT_RTC_INITW
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00007FFFAF938025)
00007FFFAF938025 (MSVCR120): (filename not available): CRT_RTC_INITW
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00007FFFAF94E15B)
00007FFFAF94E15B (MSVCR120): (filename not available): Concurrency::details::_SetUnobservedExceptionHandler
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00007FFFBFD013D2)
00007FFFBFD013D2 (KERNEL32): (filename not available): BaseThreadInitThunk
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00007FFFBFE554E4)
00007FFFBFE554E4 (ntdll): (filename not available): RtlUserThreadStart

and our system rebooted.

After the reboot, i started getting errors with the string "bad allocation" when trying to write to blob storage and followed by another exception:

2016-11-03 14:00:35.329,Error,5180,XXXXX,,EXCEPTION: code=2147483651 flags=0 addr=00007FFF8F33C2FCSymInit: Symbol-SearchPath: '.;XXXXXXXX;C:\Windows;C:\Windows\system32;SRVC:\websymbolshttp://msdl.microsoft.com/download/symbols;', symOptions: 530, UserName: 'SYSTEM'
OS-Version: 6.2.9200 () 0x190-0x3
XXXXXXXXX.exe:VraMain.exe (00007FF675BC0000), size: 6377472 (result: 0), SymType: 'PDB', PDB: 'XXXXXXXXXX.exe'
C:\Windows\SYSTEM32\ntdll.dll:ntdll.dll (00007FFFBFE40000), size: 1757184 (result: 0), SymType: '-exported-', PDB: 'C:\Windows\SYSTEM32\ntdll.dll', fileVersion: 6.3.9600.18438
C:\Windows\system32\KERNEL32.DLL:KERNEL32.DLL (00007FFFBFD00000), size: 1302528 (result: 0), SymType: '-exported-', PDB: 'C:\Windows\system32\KERNEL32.DLL', fileVersion: 6.3.9600.17415
C:\Windows\system32\KERNELBASE.dll:KERNELBASE.dll (00007FFFBD260000), size: 1134592 (result: 0), SymType: '-exported-', PDB: 'C:\Windows\system32\KERNELBASE.dll', fileVersion: 6.3.9600.18340
C:\Windows\system32\PSAPI.DLL:PSAPI.DLL (00007FFFBE0B0000), size: 28672 (result: 0), SymType: '-exported-', PDB: 'C:\Windows\system32\PSAPI.DLL', fileVersion: 6.3.9600.17415
C:\Windows\system32\ADVAPI32.dll:ADVAPI32.dll (00007FFFBE000000), size: 696320 (result: 0), SymType: '-exported-', PDB: 'C:\Windows\system32\ADVAPI32.dll', fileVersion: 6.3.9600.18155
XXXXXXXX\MSVCP120.dll:MSVCP120.dll (00007FFFAFA20000), size: 679936 (result: 0), SymType: '-exported-', PDB: 'XXXXXXXX\MSVCP120.dll', fileVersion: 12.0.21005.1
XXXXXXXX\MSVCR120.dll:MSVCR120.dll (00007FFFAF930000), size: 978944 (result: 0), SymType: '-exported-', PDB: 'XXXXXXXX\MSVCR120.dll', fileVersion: 12.0.21005.1
C:\Windows\SYSTEM32\VERSION.dll:VERSION.dll (00007FFFB6FC0000), size: 40960 (result: 0), SymType: '-exported-', PDB: 'C:\Windows\SYSTEM32\VERSION.dll', fileVersion: 6.3.9600.17415
C:\Windows\SYSTEM32\pdh.dll:pdh.dll (00007FFFAF8E0000), size: 323584 (result: 0), SymType: '-exported-', PDB: 'C:\Windows\SYSTEM32\pdh.dll', fileVersion: 6.3.9600.17415
C:\Windows\system32\WS2_32.dll:WS2_32.dll (00007FFFBFA90000), size: 368640 (result: 0), SymType: '-exported-', PDB: 'C:\Windows\system32\WS2_32.dll', fileVersion: 6.3.9600.18340
C:\Windows\SYSTEM32\WINHTTP.dll:WINHTTP.dll (00007FFFB7630000), size: 815104 (result: 0), SymType: '-exported-', PDB: 'C:\Windows\SYSTEM32\WINHTTP.dll', fileVersion: 6.3.9600.18378
C:\Windows\SYSTEM32\bcrypt.dll:bcrypt.dll (00007FFFBCA50000), size: 155648 (result: 0), SymType: '-exported-', PDB: 'C:\Windows\SYSTEM32\bcrypt.dll', fileVersion: 6.3.9600.17415
C:\Windows\SYSTEM32\XmlLite.dll:XmlLite.dll (00007FFFB92D0000), size: 233472 (result: 0), SymType: '-exported-', PDB: 'C:\Windows\SYSTEM32\XmlLite.dll', fileVersion: 6.3.9600.17415
XXXXXXXXXXXXXX\cpprest120_2_6.dll:cpprest120_2_6.dll (00007FFF8F860000), size: 5627904 (result: 0), SymType: '-exported-', PDB: 'XXXXXXXXX\cpprest120_2_6.dll', fileVersion: 2.6.0.0
XXXXXXXXXXXXXX\wastorage.dll:wastorage.dll (00007FFF8F250000), size: 6344704 (result: 0), SymType: '-exported-', PDB: 'XXXXXXXXXXXXXX\wastorage.dll', fileVersion: 2.1.0.0
C:\Windows\SYSTEM32\IPHLPAPI.DLL:IPHLPAPI.DLL (00007FFFB8BF0000), size: 172032 (result: 0), SymType: '-exported-', PDB: 'C:\Windows\SYSTEM32\IPHLPAPI.DLL', fileVersion: 6.3.9600.18264
C:\Windows\system32\msvcrt.dll:msvcrt.dll (00007FFFBDE90000), size: 696320 (result: 0), SymType: '-exported-', PDB: 'C:\Windows\system32\msvcrt.dll', fileVersion: 7.0.9600.17415
C:\Windows\SYSTEM32\sechost.dll:sechost.dll (00007FFFBD6D0000), size: 364544 (result: 0), SymType: '-exported-', PDB: 'C:\Windows\SYSTEM32\sechost.dll', fileVersion: 6.3.9600.17734
C:\Windows\system32\RPCRT4.dll:RPCRT4.dll (00007FFFBF950000), size: 1310720 (result: 0), SymType: '-exported-', PDB: 'C:\Windows\system32\RPCRT4.dll', fileVersion: 6.3.9600.18292
C:\Windows\system32\NSI.dll:NSI.dll (00007FFFBFCF0000), size: 36864 (result: 0), SymType: '-exported-', PDB: 'C:\Windows\system32\NSI.dll', fileVersion: 6.3.9600.17415
C:\Windows\SYSTEM32\combase.dll:combase.dll (00007FFFBDC70000), size: 2166784 (result: 0), SymType: '-nosymbols-', PDB: 'C:\Windows\SYSTEM32\combase.dll', fileVersion: 6.3.9600.18202
C:\Windows\SYSTEM32\HTTPAPI.dll:HTTPAPI.dll (00007FFFB2600000), size: 57344 (result: 0), SymType: '-nosymbols-', PDB: 'C:\Windows\SYSTEM32\HTTPAPI.dll', fileVersion: 6.3.9600.17415
C:\Windows\system32\CRYPT32.dll:CRYPT32.dll (00007FFFBD080000), size: 1961984 (result: 0), SymType: '-nosymbols-', PDB: 'C:\Windows\system32\CRYPT32.dll', fileVersion: 6.3.9600.18372
C:\Windows\system32\USER32.dll:USER32.dll (00007FFFBF7D0000), size: 1536000 (result: 0), SymType: '-nosymbols-', PDB: 'C:\Windows\system32\USER32.dll', fileVersion: 6.3.9600.18439
C:\Windows\system32\GDI32.dll:GDI32.dll (00007FFFBD8C0000), size: 1372160 (result: 0), SymType: '-nosymbols-', PDB: 'C:\Windows\system32\GDI32.dll', fileVersion: 6.3.9600.18344
C:\Windows\SYSTEM32\WINNSI.DLL:WINNSI.DLL (00007FFFB8E20000), size: 40960 (result: 0), SymType: '-nosymbols-', PDB: 'C:\Windows\SYSTEM32\WINNSI.DLL', fileVersion: 6.3.9600.17415
C:\Windows\system32\SspiCli.dll:SspiCli.dll (00007FFFBD380000), size: 188416 (result: 8), SymType: '-unknown-', PDB: '', fileVersion: 6.3.9600.17415
C:\Windows\system32\MSASN1.dll:MSASN1.dll (00007FFFBD010000), size: 69632 (result: 8), SymType: '-unknown-', PDB: '', fileVersion: 6.3.9600.17415
C:\Windows\SYSTEM32\DPAPI.DLL:DPAPI.DLL (00007FFFBBC30000), size: 40960 (result: 8), SymType: '-unknown-', PDB: '', fileVersion: 6.3.9600.17415
C:\Windows\SYSTEM32\CRYPTBASE.dll:CRYPTBASE.dll (00007FFFBCED0000), size: 45056 (result: 8), SymType: '-unknown-', PDB: '', fileVersion: 6.3.9600.17415
C:\Windows\SYSTEM32\bcryptPrimitives.dll:bcryptPrimitives.dll (00007FFFBCD60000), size: 405504 (result: 8), SymType: '-unknown-', PDB: '', fileVersion: 6.3.9600.18344
C:\Windows\System32\perfos.dll:perfos.dll (00007FFFAE280000), size: 53248 (result: 8), SymType: '-unknown-', PDB: '', fileVersion: 6.3.9600.17415
C:\Windows\system32\mswsock.dll:mswsock.dll (00007FFFBC6A0000), size: 364544 (result: 8), SymType: '-unknown-', PDB: '', fileVersion: 6.3.9600.18340
C:\Windows\system32\napinsp.dll:napinsp.dll (00007FFFB5070000), size: 86016 (result: 8), SymType: '-unknown-', PDB: '', fileVersion: 6.3.9600.17415
C:\Windows\system32\NLAapi.dll:NLAapi.dll (00007FFFBAAA0000), size: 110592 (result: 8), SymType: '-unknown-', PDB: '', fileVersion: 6.3.9600.17415
C:\Windows\SYSTEM32\DNSAPI.dll:DNSAPI.dll (00007FFFBC420000), size: 671744 (result: 8), SymType: '-unknown-', PDB: '', fileVersion: 6.3.9600.18402
C:\Windows\System32\winrnr.dll:winrnr.dll (00007FFFB50B0000), size: 53248 (result: 8), SymType: '-unknown-', PDB: '', fileVersion: 6.3.9600.17415
C:\Windows\System32\fwpuclnt.dll:fwpuclnt.dll (00007FFFB8A20000), size: 438272 (result: 8), SymType: '-unknown-', PDB: '', fileVersion: 6.3.9600.18229
C:\Windows\System32\rasadhlp.dll:rasadhlp.dll (00007FFFB7B10000), size: 40960 (result: 8), SymType: '-unknown-', PDB: '', fileVersion: 6.3.9600.17415
C:\Windows\SYSTEM32\kernel.appcore.dll:kernel.appcore.dll (00007FFFBBC20000), size: 45056 (result: 8), SymType: '-unknown-', PDB: '', fileVersion: 6.3.9600.17415
C:\Windows\SYSTEM32\webio.dll:webio.dll (00007FFFB2F90000), size: 528384 (result: 8), SymType: '-unknown-', PDB: '', fileVersion: 6.3.9600.18378
C:\Windows\system32\schannel.DLL:schannel.DLL (00007FFFBC3B0000), size: 450560 (result: 8), SymType: '-unknown-', PDB: '', fileVersion: 6.3.9600.18454
C:\Windows\SYSTEM32\ncrypt.dll:ncrypt.dll (00007FFFBCA20000), size: 151552 (result: 8), SymType: '-unknown-', PDB: '', fileVersion: 6.3.9600.18298
C:\Windows\SYSTEM32\NTASN1.dll:NTASN1.dll (00007FFFBC9E0000), size: 225280 (result: 8), SymType: '-unknown-', PDB: '', fileVersion: 6.3.9600.17415
C:\Windows\system32\ncryptsslp.dll:ncryptsslp.dll (00007FFFB26B0000), size: 118784 (result: 8), SymType: '-unknown-', PDB: '', fileVersion: 6.3.9600.18377
C:\Windows\SYSTEM32\CRYPTSP.dll:CRYPTSP.dll (00007FFFBC7F0000), size: 131072 (result: 8), SymType: '-unknown-', PDB: '', fileVersion: 6.3.9600.17415
C:\Windows\system32\rsaenh.dll:rsaenh.dll (00007FFFBC2A0000), size: 221184 (result: 8), SymType: '-unknown-', PDB: '', fileVersion: 6.3.9600.18191
C:\Windows\SYSTEM32\gpapi.dll:gpapi.dll (00007FFFBC180000), size: 147456 (result: 8), SymType: '-unknown-', PDB: '', fileVersion: 6.3.9600.18339
C:\Windows\SYSTEM32\dhcpcsvc6.DLL:dhcpcsvc6.DLL (00007FFFB8BA0000), size: 90112 (result: 8), SymType: '-unknown-', PDB: '', fileVersion: 6.3.9600.17415
C:\Windows\SYSTEM32\dhcpcsvc.DLL:dhcpcsvc.DLL (00007FFFB8900000), size: 106496 (result: 8), SymType: '-unknown-', PDB: '', fileVersion: 6.3.9600.17415
C:\Windows\SYSTEM32\dbghelp.dll:dbghelp.dll (00007FFFBA620000), size: 1609728 (result: 8), SymType: '-unknown-', PDB: '', fileVersion: 6.3.9600.17787
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00007FFF8F33C2FC)
00007FFF8F33C2FC (wastorage): (filename not available): azure::storage::cloud_append_blob::append_text_async
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00007FFF8F33A5C1)
00007FFF8F33A5C1 (wastorage): (filename not available): azure::storage::cloud_append_blob::append_text_async
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00007FFF8F3361F9)
00007FFF8F3361F9 (wastorage): (filename not available): azure::storage::cloud_append_blob::append_text_async
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00007FFF8F306097)
00007FFF8F306097 (wastorage): (filename not available): azure::storage::cloud_append_blob::append_text_async
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00007FFF8F309EE4)
00007FFF8F309EE4 (wastorage): (filename not available): azure::storage::cloud_append_blob::append_text_async
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00007FFFAF94CACC)
00007FFFAF94CACC (MSVCR120): (filename not available): Concurrency::details::_TaskCollection::~_TaskCollection
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00007FFFAF932287)
00007FFFAF932287 (MSVCR120): (filename not available): Concurrency::details::_UnrealizedChore::_CheckTaskCollection
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00007FFFAF939497)
00007FFFAF939497 (MSVCR120): (filename not available): CRT_RTC_INITW
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00007FFFAF938025)
00007FFFAF938025 (MSVCR120): (filename not available): CRT_RTC_INITW
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00007FFFAF94E15B)
00007FFFAF94E15B (MSVCR120): (filename not available): Concurrency::details::_SetUnobservedExceptionHandler
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00007FFFBFD013D2)
00007FFFBFD013D2 (KERNEL32): (filename not available): BaseThreadInitThunk
ERROR: SymGetLineFromAddr64, GetLastError: 487 (Address: 00007FFFBFE554E4)
00007FFFBFE554E4 (ntdll): (filename not available): RtlUserThreadStart

OS is windows server 2008 R2.

MFC/ATL projects unable to build with Azure Storage SDK (wastorage)

MFC/ATL projects use Windows.h which defines max/min macros. std::max and std::min are used in d Azure SDK leading to a conflict that breaks build. Robert Schumacher has suggested we solve this in conflict using one of the following solutions
i. Push/pop macros [preferable]
ii. Using std::max [more of a hack but works]

A current workaround is to #undef max and #undef min in these projects so they can build and consume Azure SDK. We tested this in an MFC project and it built fine.

Linker error with ARM

Good morning,
I have write a UWP with C++ VS2015 Enterprise for Raspberry Pi 3 and I have download the azure-storage-cpp with git command (no NuGet), but when I try to insert the line:

azure::storage::cloud_storage_account storage_account = azure::storage::cloud_storage_account::parse(storage_connection_string);

The linker fails with this message:

Error LNK2019 unresolved external symbol "__declspec(dllimport) public: static class
azure::storage::cloud_storage_account __cdecl azure::storage::cloud_storage_account::parse(
class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > const &)"
(_imp?parse@cloud_storage_account@storage@azure@@sa?AV123@ABV?$basic_string@_WU?$char_traits@_W@std@@v?$allocator@_W@2@@std@@@z)
referenced in function "public: void __cdecl <lambda_f0c8c916f15e15321e8345699e133b6e>::operator()(void)const "
(??R<lambda_f0c8c916f15e15321e8345699e133b6e>@@QBAXXZ)

I would like to know if this API works with ARM.

Thanking in advance and sorry for my english.

Giuliano

Linker error compiling for ARM

Compiling for ARM architecture produces the following linker errors:

error LNK2019: unresolved external symbol "__declspec(dllimport) public: __cdecl azure::storage::operation_context::operation_context(void)" (__imp_??0operation_context@storage@azure@@QAA@XZ) referenced in function "public: class Concurrency::task<void> __cdecl azure::storage::cloud_blob::download_to_stream_async(class Concurrency::streams::basic_ostream<unsigned char>)" (?download_to_stream_async@cloud_blob@storage@azure@@QAA?AV?$task@X@Concurrency@@V?$basic_ostream@E@streams@5@@Z)
error LNK2019: unresolved external symbol "__declspec(dllimport) protected: __cdecl azure::storage::request_options::request_options(void)" (__imp_??0request_options@storage@azure@@IAA@XZ) referenced in function "public: __cdecl azure::storage::blob_request_options::blob_request_options(void)" (??0blob_request_options@storage@azure@@QAA@XZ)
error LNK2019: unresolved external symbol "__declspec(dllimport) public: static class azure::storage::cloud_storage_account __cdecl azure::storage::cloud_storage_account::parse(class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > const &)" (__imp_?parse@cloud_storage_account@storage@azure@@SA?AV123@ABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@Z) referenced in function "void __cdecl Download(class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > const &,class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > const &,class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > const &,class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > const &)" (?Download@@YAXABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@000@Z)
error LNK2019: unresolved external symbol "__declspec(dllimport) public: class azure::storage::cloud_blob_client __cdecl azure::storage::cloud_storage_account::create_cloud_blob_client(void)const " (__imp_?create_cloud_blob_client@cloud_storage_account@storage@azure@@QBA?AVcloud_blob_client@23@XZ) referenced in function "void __cdecl Download(class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > const &,class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > const &,class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > const &,class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > const &)" (?Download@@YAXABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@000@Z)
error LNK2019: unresolved external symbol "__declspec(dllimport) public: class azure::storage::cloud_blob_container __cdecl azure::storage::cloud_blob_client::get_container_reference(class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> >)const " (__imp_?get_container_reference@cloud_blob_client@storage@azure@@QBA?AVcloud_blob_container@23@V?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@Z) referenced in function "void __cdecl Download(class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > const &,class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > const &,class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > const &,class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > const &)" (?Download@@YAXABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@000@Z)
error LNK2019: unresolved external symbol "__declspec(dllimport) public: class azure::storage::cloud_block_blob __cdecl azure::storage::cloud_blob_container::get_block_blob_reference(class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> >)const " (__imp_?get_block_blob_reference@cloud_blob_container@storage@azure@@QBA?AVcloud_block_blob@23@V?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@@Z) referenced in function "void __cdecl Download(class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > const &,class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > const &,class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > const &,class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> > const &)" (?Download@@YAXABV?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@000@Z)
error LNK2019: unresolved external symbol "__declspec(dllimport) public: class Concurrency::task<void> __cdecl azure::storage::cloud_blob::download_range_to_stream_async(class Concurrency::streams::basic_ostream<unsigned char>,unsigned __int64,unsigned __int64,class azure::storage::access_condition const &,class azure::storage::blob_request_options const &,class azure::storage::operation_context)" (__imp_?download_range_to_stream_async@cloud_blob@storage@azure@@QAA?AV?$task@X@Concurrency@@V?$basic_ostream@E@streams@5@_K1ABVaccess_condition@23@ABVblob_request_options@23@Voperation_context@23@@Z) referenced in function "public: class Concurrency::task<void> __cdecl azure::storage::cloud_blob::download_to_stream_async(class Concurrency::streams::basic_ostream<unsigned char>,class azure::storage::access_condition const &,class azure::storage::blob_request_options const &,class azure::storage::operation_context)" (?download_to_stream_async@cloud_blob@storage@azure@@QAA?AV?$task@X@Concurrency@@V?$basic_ostream@E@streams@5@ABVaccess_condition@23@ABVblob_request_options@23@Voperation_context@23@@Z)

Is ARM officially supported?

Errors while integrating to Android NDK

Many dependencies are not resolved even after adding CPPREST SDK , android studio is giving errors while trying to run the native c++ codes. Examples -

uuid/uuid.h not found.

undefined reference to `azure::storage::cloud_blob_container::cloud_blob_container(azure::storage::storage_uri)

And more such undefined reference problem.

http proxy issue

I didn't see this in the interface, but is there a way to set this up to have this open connections through an http proxy server?

Azure storage exception does not contain enough details when a timeout occurs

We use Azure storage APIs on cloud_block_blob such as cloud_block_blob::download_range_to_stream(). We’re trying to determine the specific exception details when an operation fails due to exceeding the value in set_maximum_execution_time(). It seems like the only detail populated in the exception is a message string, which isn’t a good thing to examine from our code. On timeouts, the exception string is set as "The client could not finish the operation within specified timeout." None of the other details such as http status code, IsRetryable flag, inner exception are set.

We really don’t want to take a dependency on examining the exception message string. Since such timeout errors are transient in nature, we think it would be better if the exception that is thrown has more detail in it (specifically it includes a numeric value for an error code indicating that a timeout occurred).

We also need to make sure that other similar APIs on cloud_block_blob also give us sufficient details in the storage_exception that is thrown.

problem listing blobs with reserved url characters

i am trying to work with the following blob name:
ef8c1986-326c-464d-9ddb-7b9a6832740a/vm-4060/aG59()*&^#@$
i am experiencing problems creating it correctly and finding it using list.

my blob referencing code is:
azure::storage::cloud_blob(azure::storage::storage_uri(web::uri::encode_uri(blobName)), azure::storage::storage_credentials(accountName,key));

in this case, the result uri is (omitting all the beginning up to the container):
ef8c1986-326c-464d-9ddb-7b9a6832740a/vm-4060/aG59()*&%5E

for some reason, the characters "#@$" were dropped.

when listing, i am using the following in a loop according to the continuation token.
azure::storage::list_blob_item_segment seg = container.list_blobs_segmented(web::uri::encode_uri(blobName)), true, azure::storage::blob_listing_details::none, 0, token, azure::storage::blob_request_options(), azure::storage::operation_context());

Here I receive an exception due to authentication mismatch which is caused by the '&' character.
if i use encode_data_string, there is no exception but of course the blob is not found.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.