// Copyright (c) 2013 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#include <windows.h>

// PsDllMain is the entry point of the proxy/stub code generated by MIDL.
extern "C" BOOL WINAPI PsDllMain(HINSTANCE instance,
                                 DWORD reason,
                                 void* reserved);

BOOL WINAPI DllMain(HINSTANCE instance, DWORD reason, void* reserved) {
  if (reason == DLL_PROCESS_ATTACH)
    DisableThreadLibraryCalls(instance);

  // Initialize the proxy/stub code as well.
  return PsDllMain(instance, reason, reserved);
}
