4 * Copyright 2005 Eric Kohl
6 * This library is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU Lesser General Public
8 * License as published by the Free Software Foundation; either
9 * version 2.1 of the License, or (at your option) any later version.
11 * This library is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * Lesser General Public License for more details.
16 * You should have received a copy of the GNU Lesser General Public
17 * License along with this library; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
21 #include "setupapi_private.h"
23 WINE_DEFAULT_DEBUG_CHANNEL(setupapi
);
25 static RPC_BINDING_HANDLE LocalBindingHandle
= NULL
;
26 static HSTRING_TABLE LocalStringTable
= NULL
;
30 PnpBindRpc(LPCWSTR pszMachine
,
31 RPC_BINDING_HANDLE
* BindingHandle
)
33 PWSTR pszStringBinding
= NULL
;
36 Status
= RpcStringBindingComposeW(NULL
,
42 if (Status
!= RPC_S_OK
)
45 Status
= RpcBindingFromStringBindingW(pszStringBinding
,
48 RpcStringFreeW(&pszStringBinding
);
55 PnpUnbindRpc(RPC_BINDING_HANDLE
*BindingHandle
)
57 if (BindingHandle
!= NULL
)
59 RpcBindingFree(*BindingHandle
);
60 *BindingHandle
= NULL
;
68 PnpGetLocalHandles(RPC_BINDING_HANDLE
*BindingHandle
,
69 HSTRING_TABLE
*StringTable
)
71 if (LocalBindingHandle
!= NULL
)
73 if (BindingHandle
!= NULL
)
74 *BindingHandle
= LocalBindingHandle
;
76 if (StringTable
!= NULL
)
77 *StringTable
= LocalStringTable
;
82 LocalStringTable
= StringTableInitialize();
83 if (LocalStringTable
== NULL
)
86 if (PnpBindRpc(NULL
, &LocalBindingHandle
) != RPC_S_OK
)
88 StringTableDestroy(LocalStringTable
);
92 StringTableAddString(LocalStringTable
, L
"PLT", 1);
94 if (BindingHandle
!= NULL
)
95 *BindingHandle
= LocalBindingHandle
;
97 if (StringTable
!= NULL
)
98 *StringTable
= LocalStringTable
;
105 PnpUnbindLocalBindingHandle(VOID
)
107 StringTableDestroy(LocalStringTable
);
108 LocalStringTable
= NULL
;
109 return PnpUnbindRpc(&LocalBindingHandle
);
113 void __RPC_FAR
* __RPC_USER
114 midl_user_allocate(SIZE_T len
)
116 return HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY
, len
);
121 midl_user_free(void __RPC_FAR
* ptr
)
123 HeapFree(GetProcessHeap(), 0, ptr
);