--- /dev/null
+TARGETNAME=winverb\r
+TARGETPATH=..\..\..\bin\user\obj$(BUILD_ALT_DIR)\r
+TARGETTYPE=PROGRAM\r
+UMTYPE=console\r
+UMENTRY=main\r
+USE_MSVCRT=1\r
+USE_STL=1\r
+\r
+SOURCES=\\r
+ wv_main.cpp\r
+ \r
+INCLUDES=..\..\..\inc;..\..\..\inc\user;\r
+\r
+TARGETLIBS= \\r
+ $(SDK_LIB_PATH)\kernel32.lib \\r
+ $(SDK_LIB_PATH)\advapi32.lib \\r
+ $(SDK_LIB_PATH)\user32.lib \\r
+ $(SDK_LIB_PATH)\ole32.lib \\r
+!if $(FREEBUILD)\r
+ $(TARGETPATH)\*\winverbs.lib\r
+!else\r
+ $(TARGETPATH)\*\winverbsd.lib\r
+!endif\r
+\r
+USER_C_FLAGS=$(USER_C_FLAGS) /EHsc\r
+MSC_WARNING_LEVEL= /W3\r
--- /dev/null
+/*\r
+ * Copyright (c) 2008 Intel Corporation. All rights reserved.\r
+ *\r
+ * This software is available to you under the OpenIB.org BSD license\r
+ * below:\r
+ *\r
+ * Redistribution and use in source and binary forms, with or\r
+ * without modification, are permitted provided that the following\r
+ * conditions are met:\r
+ *\r
+ * - Redistributions of source code must retain the above\r
+ * copyright notice, this list of conditions and the following\r
+ * disclaimer.\r
+ *\r
+ * - Redistributions in binary form must reproduce the above\r
+ * copyright notice, this list of conditions and the following\r
+ * disclaimer in the documentation and/or other materials\r
+ * provided with the distribution.\r
+ *\r
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,\r
+ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AWV\r
+ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS\r
+ * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\r
+ * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN\r
+ * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\r
+ * SOFTWARE.\r
+ */\r
+\r
+#include <iostream>\r
+\r
+#include <rdma\winverbs.h>\r
+\r
+static void ShowProviderOptions()\r
+{\r
+ std::cout << "provider options" << std::endl;\r
+ std::cout << "\t" << "--help" << std::endl;\r
+ std::cout << "\t\t" << "display this message" << std::endl;\r
+}\r
+\r
+static int ProviderTest(int argc, char *argv[])\r
+{\r
+ IWVProvider *prov;\r
+ HRESULT hr;\r
+ ULONG ref;\r
+\r
+ if (argc > 2)\r
+ {\r
+ ShowProviderOptions();\r
+ return 0;\r
+ }\r
+\r
+ std::cout << "Validating IWVProvider interface" << std::endl;\r
+\r
+ hr = WvGetObject(IID_IWVProvider, (LPVOID*) &prov);\r
+ if (hr != NOERROR)\r
+ {\r
+ std::cout << "Error WvGetObject: " << hr << std::endl;\r
+ return hr;\r
+ }\r
+\r
+ ref = prov->AddRef();\r
+ if (ref != 2)\r
+ std::cout << "Error AddRef: " << ref << std::endl;\r
+\r
+ prov->Release();\r
+ prov->Release();\r
+\r
+ std::cout << "Success" << std::endl;\r
+ return hr;\r
+}\r
+\r
+static void ShowUsage()\r
+{\r
+ std::cout << "winverb <interface> [options]" << std::endl;\r
+ std::cout << "<interface> is one of the following:" << std::endl;\r
+ std::cout << "\t" << "provider" << std::endl;\r
+ std::cout << std::endl;\r
+ std::cout << "Type 'winverb <interface> --help' for option details" << std::endl;\r
+}\r
+\r
+int __cdecl main(int argc, char *argv[])\r
+{\r
+ if (argc < 2)\r
+ {\r
+ ShowUsage();\r
+ return E_INVALIDARG;\r
+ }\r
+\r
+ if (!strcmp("provider", argv[1]))\r
+ {\r
+ return ProviderTest(argc, argv);\r
+ }\r
+ else\r
+ {\r
+ ShowUsage();\r
+ return E_INVALIDARG;\r
+ }\r
+\r
+ return 0;\r
+}\r