Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

482 lines
13 KiB

/*******************************************************************************
*
* (C) COPYRIGHT MICROSOFT CORP., 1999
*
* TITLE: WiaEnum.cpp
*
* VERSION: 1.0
*
* AUTHOR: ByronC
*
* DATE: 24 Aug, 1999
*
* DESCRIPTION:
* Implements the [local]-to-[call_as] and [call_as]-to-[local] methods for
* the WIA enumerators.
*
*******************************************************************************/
#include <objbase.h>
#include "wia.h"
/**************************************************************************\
* IEnumWiaItem_Next_Proxy
*
* [local]-to-[call_as] function for the Next method of IEnumWiaItem.
* It ensures correct parameter semantics and always provides a
* non-NULL last argument for it's sibling function, RemoteNext.
*
* Arguments:
*
* This - The this pointer of the calling object.
* celt - Requested number of elements.
* ppIWiaItem - Array of IWiaItem pointers.
* pceltFetched - Address of ULONG to store the number of elements
* actually returned.
*
* Return Value:
*
* Status
*
* History:
*
* 08/24/1999 Original Version
*
\**************************************************************************/
HRESULT _stdcall IEnumWiaItem_Next_Proxy(
IEnumWiaItem __RPC_FAR *This,
ULONG celt,
IWiaItem **ppIWiaItem,
ULONG *pceltFetched)
{
//
// Ensure that celt is 1 if pceltFetched = 0
//
if ((pceltFetched == NULL) && (celt != 1)) {
#ifdef DEBUG
OutputDebugString(TEXT("Error: IEnumWiaItem_Next_Proxy, celt must be 1 if pceltFetched is zero"));
#endif
return E_INVALIDARG;
}
//
// Make sure last parameter to Next is not NULL by passing in our own local
// variable if needed.
//
ULONG cFetched;
if (pceltFetched == 0) {
pceltFetched = &cFetched;
}
//
// Call remote method with a non-null last parameter
//
return IEnumWiaItem_RemoteNext_Proxy(This,
celt,
ppIWiaItem,
pceltFetched);
}
/**************************************************************************\
* IEnumWiaItem_Next_Stub
*
* [call_as]-to-[local] function for the Next method of IEnumWiaItem.
*
* Arguments:
*
* This - The this pointer of the calling object.
* celt - Requested number of elements.
* ppIWiaItem - Array of IWiaItem pointers.
* pceltFetched - Address of ULONG to store the number of elements
* actually returned.
*
* Return Value:
*
* Status
*
* History:
*
* 08/24/1999 Original Version
*
\**************************************************************************/
HRESULT _stdcall IEnumWiaItem_Next_Stub(
IEnumWiaItem __RPC_FAR *This,
ULONG celt,
IWiaItem **ppIWiaItem,
ULONG *pceltFetched)
{
HRESULT hr;
//
// Call the actual method off the object pointed to by This
//
hr = This->Next(celt,
ppIWiaItem,
pceltFetched);
//
// Make to set the value of pceltFetched if S_OK (used by Marshaller
// for "length_is")
//
if (hr == S_OK) {
*pceltFetched = celt;
}
return hr;
}
/**************************************************************************\
* IEnumWIA_DEV_CAPS_Next_Proxy
*
* [local]-to-[call_as] function for the Next method of IEnumWIA_DEV_CAPS.
* It ensures correct parameter semantics and always provides a
* non-NULL last argument for it's sibling function, RemoteNext.
*
* Arguments:
*
* This - The this pointer of the calling object.
* celt - Requested number of elements.
* rgelt - Array of WIA_DEV_CAPs.
* pceltFetched - Address of ULONG to store the number of elements
* actually returned.
*
* Return Value:
*
* Status
*
* History:
*
* 08/24/1999 Original Version
*
\**************************************************************************/
HRESULT _stdcall IEnumWIA_DEV_CAPS_Next_Proxy(
IEnumWIA_DEV_CAPS __RPC_FAR *This,
ULONG celt,
WIA_DEV_CAP *rgelt,
ULONG *pceltFetched)
{
//
// Ensure that celt is 1 if pceltFetched = 0
//
if ((pceltFetched == NULL) && (celt != 1)) {
#ifdef DEBUG
OutputDebugString(TEXT("Error: IEnumWIA_DEV_CAPS_Next_Proxy, celt must be 1 if pceltFetched is zero"));
#endif
return E_INVALIDARG;
}
//
// Make sure last parameter to Next is not NULL by passing in our own local
// variable if needed.
//
ULONG cFetched;
if (pceltFetched == 0) {
pceltFetched = &cFetched;
}
//
// Call remote method with a non-null last parameter
//
return IEnumWIA_DEV_CAPS_RemoteNext_Proxy(This,
celt,
rgelt,
pceltFetched);
}
/**************************************************************************\
* IEnumWIA_DEV_CAPS_Next_Stub
*
* [call_as]-to-[local] function for the Next method of IEnumWIA_DEV_CAPS.
*
* Arguments:
*
* This - The this pointer of the calling object.
* celt - Requested number of elements.
* rgelt - Array of WIA_DEV_CAPs.
* pceltFetched - Address of ULONG to store the number of elements
* actually returned.
*
* Return Value:
*
* Status
*
* History:
*
* 08/24/1999 Original Version
*
\**************************************************************************/
HRESULT _stdcall IEnumWIA_DEV_CAPS_Next_Stub(
IEnumWIA_DEV_CAPS __RPC_FAR *This,
ULONG celt,
WIA_DEV_CAP *rgelt,
ULONG *pceltFetched)
{
HRESULT hr;
//
// Call the actual method off the object pointed to by This
//
hr = This->Next(celt,
rgelt,
pceltFetched);
//
// Make to set the value of pceltFetched if S_OK (used by Marshaller
// for "length_is")
//
if (hr == S_OK) {
*pceltFetched = celt;
}
return hr;
}
/**************************************************************************\
* IEnumWIA_DEV_INFO_Next_Proxy
*
* [local]-to-[call_as] function for the Next method of IEnumWIA_DEV_INFO.
* It ensures correct parameter semantics and always provides a
* non-NULL last argument for it's sibling function, RemoteNext.
*
* Arguments:
*
* This - The this pointer of the calling object.
* celt - Requested number of elements.
* rgelt - Array of IWiaPropertyStorage pointers.
* pceltFetched - Address of ULONG to store the number of elements
* actually returned.
*
* Return Value:
*
* Status
*
* History:
*
* 08/24/1999 Original Version
*
\**************************************************************************/
HRESULT _stdcall IEnumWIA_DEV_INFO_Next_Proxy(
IEnumWIA_DEV_INFO __RPC_FAR *This,
ULONG celt,
IWiaPropertyStorage **rgelt,
ULONG *pceltFetched)
{
//
// Ensure that celt is 1 if pceltFetched = 0
//
if ((pceltFetched == NULL) && (celt != 1)) {
#ifdef DEBUG
OutputDebugString(TEXT("Error: IEnumWIA_DEV_INFO_Next_Proxy, celt must be 1 if pceltFetched is zero"));
#endif
return E_INVALIDARG;
}
//
// Make sure last parameter to Next is not NULL by passing in our own local
// variable if needed.
//
ULONG cFetched = 0;
if (pceltFetched == NULL) {
pceltFetched = &cFetched;
}
//
// Call remote method with a non-null last parameter
//
return IEnumWIA_DEV_INFO_RemoteNext_Proxy(This,
celt,
rgelt,
pceltFetched);
}
/**************************************************************************\
* IEnumWIA_DEV_INFO_Next_Stub
*
* [call_as]-to-[local] function for the Next method of IEnumWIA_DEV_INFO.
*
* Arguments:
*
* This - The this pointer of the calling object.
* celt - Requested number of elements.
* rgelt - Array of IWiaPropertyStorage pointers.
* pceltFetched - Address of ULONG to store the number of elements
* actually returned.
*
* Return Value:
*
* Status
*
* History:
*
* 08/24/1999 Original Version
*
\**************************************************************************/
HRESULT _stdcall IEnumWIA_DEV_INFO_Next_Stub(
IEnumWIA_DEV_INFO __RPC_FAR *This,
ULONG celt,
IWiaPropertyStorage **rgelt,
ULONG *pceltFetched)
{
HRESULT hr;
//
// Call the actual method off the object pointed to by This
//
ULONG cFetched = 0;
if (pceltFetched == NULL) {
pceltFetched = &cFetched;
}
hr = This->Next(celt,
rgelt,
pceltFetched);
//
// Make to set the value of pceltFetched if S_OK (used by Marshaller
// for "length_is")
//
if (hr == S_OK) {
*pceltFetched = celt;
}
return hr;
}
/**************************************************************************\
* IEnumWIA_FORMAT_INFO_Next_Proxy
*
* [local]-to-[call_as] function for the Next method of IEnumWIA_FORMAT_INFO.
* It ensures correct parameter semantics and always provides a
* non-NULL last argument for it's sibling function, RemoteNext.
*
* Arguments:
*
* This - The this pointer of the calling object.
* celt - Requested number of elements.
* rgelt - Array of WIA_FORMAT_INFO.
* pceltFetched - Address of ULONG to store the number of elements
* actually returned.
*
* Return Value:
*
* Status
*
* History:
*
* 08/24/1999 Original Version
*
\**************************************************************************/
HRESULT _stdcall IEnumWIA_FORMAT_INFO_Next_Proxy(
IEnumWIA_FORMAT_INFO __RPC_FAR *This,
ULONG celt,
WIA_FORMAT_INFO *rgelt,
ULONG *pceltFetched)
{
//
// Ensure that celt is 1 if pceltFetched = 0
//
if ((pceltFetched == NULL) && (celt != 1)) {
#ifdef DEBUG
OutputDebugString(TEXT("Error: IEnumWIA_FORMAT_INFO_Next_Proxy, celt must be 1 if pceltFetched is zero"));
#endif
return E_INVALIDARG;
}
//
// Make sure last parameter to Next is not NULL by passing in our own local
// variable if needed.
//
ULONG cFetched;
if (pceltFetched == 0) {
pceltFetched = &cFetched;
}
//
// Call remote method with a non-null last parameter
//
return IEnumWIA_FORMAT_INFO_RemoteNext_Proxy(This,
celt,
rgelt,
pceltFetched);
}
/**************************************************************************\
* IEnumWIA_FORMAT_INFO_Next_Stub
*
* [call_as]-to-[local] function for the Next method of IEnumWIA_FORMAT_INFO.
*
* Arguments:
*
* This - The this pointer of the calling object.
* celt - Requested number of elements.
* rgelt - Array of WIA_FORMAT_INFO.
* pceltFetched - Address of ULONG to store the number of elements
* actually returned.
*
* Return Value:
*
* Status
*
* History:
*
* 08/24/1999 Original Version
*
\**************************************************************************/
HRESULT _stdcall IEnumWIA_FORMAT_INFO_Next_Stub(
IEnumWIA_FORMAT_INFO __RPC_FAR *This,
ULONG celt,
WIA_FORMAT_INFO *rgelt,
ULONG *pceltFetched)
{
HRESULT hr;
//
// Call the actual method off the object pointed to by This
//
hr = This->Next(celt,
rgelt,
pceltFetched);
//
// Make to set the value of pceltFetched if S_OK (used by Marshaller
// for "length_is")
//
if (hr == S_OK) {
*pceltFetched = celt;
}
return hr;
}