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.
|
|
/*++
Copyright (c) 1997 Microsoft Corporation
Module Name:
enum.cxx
Abstract:
General metadata utility functions.
Author:
Keith Moore (keithmo) 05-Feb-1997
Revision History:
--*/
#include "precomp.hxx"
#pragma hdrstop
//
// Private constants.
//
#define INITIAL_BUFFER_SIZE 64
//
// Private types.
//
//
// Private globals.
//
//
// Private prototypes.
//
//
// Public functions.
//
HRESULT MdGetAllMetaData( IN IMSAdminBase * AdmCom, IN METADATA_HANDLE Handle, IN LPWSTR Path, IN DWORD Attributes, OUT METADATA_GETALL_RECORD ** Data, OUT DWORD * NumEntries ) {
HRESULT result; DWORD dataSet; DWORD bytesRequired; DWORD bufferLength; LPVOID buffer;
bufferLength = INITIAL_BUFFER_SIZE; buffer = NULL;
while( TRUE ) {
if( buffer != NULL ) { MdpFreeMem( buffer ); }
buffer = MdpAllocMem( bufferLength );
if( buffer == NULL ) { result = HRESULT_FROM_WIN32( ERROR_NOT_ENOUGH_MEMORY ); break; }
result = AdmCom->GetAllData( Handle, Path, Attributes, ALL_METADATA, ALL_METADATA, NumEntries, &dataSet, bufferLength, (BYTE *)buffer, &bytesRequired );
if( SUCCEEDED(result) ) { break; }
if( result != RETURNCODETOHRESULT( ERROR_INSUFFICIENT_BUFFER ) ) { break; }
bufferLength = bytesRequired;
}
if( SUCCEEDED(result) ) { *Data = (METADATA_GETALL_RECORD *)buffer; } else if( buffer != NULL ) { MdpFreeMem( buffer ); }
return result;
} // MdGetAllMetaData
HRESULT MdFreeMetaDataBuffer( IN VOID * Data ) {
MdpFreeMem( Data ); return NO_ERROR;
} // MdFreeMetaDataBuffer
//
// Private functions.
//
|