Click here to Skip to main content
       

C / C++ / MFC

 
QuestionA class for operations with Large Integer Numbers PinmemberPahanuch27-Nov-12 13:39 
AnswerRe: A class for operations with Large Integer Numbers PinmemberAlbert Holguin27-Nov-12 17:34 
AnswerRe: A class for operations with Large Integer Numbers PinmemberStefan_Lang28-Nov-12 4:01 
QuestionSetupDiGetDeviceRegistryProperty - buffer size? PinmemberVaclav_Sal27-Nov-12 7:39 
SetupDiGetDeviceRegistryProperty API suppose returns required buffer size for "Property" beeing inquired about.
It does but it also returns variety of errors.
( invalid data, data "too short" - whatever that means )
 
The function never returns true when with parameters are set to return buffer size.
Is that normal?
 
For example if I inqiure about SPDRP_FRIENDLYNAME   the buffer size returned is 0.
 
Here is my code, keep in mind it is a test code!
I have aslo included partial MS function desription.
 
Many thanks for your help.
Cheers Vaclav
 

     DWORD   DataT;  
     LPTSTR buffer      = NULL;     
     DWORD   buffersize = 0; // 2048; // 0;           
     int iCounter = 0;
     buffer = (LPTSTR)LocalAlloc(LPTR, buffersize * 2);
    
     TRACE("\nSetupDiGetDeviceRegistryProperty...");
     TRACE("\nReturn required buffer size only ");
     Property = SPDRP_FRIENDLYNAME; // SPDRP_DEVTYPE; // SPDRP_COMPATIBLEIDS; // SPDRP_CLASS;
     do
     {
         
     bool bResult = false;
    
     do
     {  
          bResult = SetupDiGetDeviceRegistryProperty(
          hDevInfo,         //      _In_         HDEVINFO DeviceInfoSet,
          &DeviceInfoData,   //   _In_         PSP_DEVINFO_DATA DeviceInfoData
          Property,         //   _In_         DWORD Property,
          &DataT,         //   _Out_opt_   PDWORD PropertyRegDataType,
          NULL,            // get size with NULL (PBYTE)buffer, //      _Out_opt_   PBYTE PropertyBuffer,
          0,                  // get size with 0      buffersize,  
          &buffersize); // fills buffer size
         
            if(buffersize)
          {
               TRACE("\n");
               bResult = SetupDiGetDeviceRegistryProperty(
                    hDevInfo,         //      _In_         HDEVINFO DeviceInfoSet,
                    &DeviceInfoData,   //   _In_         PSP_DEVINFO_DATA DeviceInfoData
                    Property,         //   _In_         DWORD Property,
                    &DataT,         //   _Out_opt_   PDWORD PropertyRegDataType,
                    (PBYTE)buffer, //      _Out_opt_   PBYTE PropertyBuffer,
                    buffersize,  
                    &buffersize); // fills buffer size
                   
          }
 
          TRACE("\nProperty %i ",Property);
          Property++;
          TRACE("\nProperty %i ",Property);
     }
     while (!bResult & Property <= SPDRP_UPPERFILTERS);
 

 

 
PropertyBuffer [out, optional]
A pointer to a buffer that receives the property that is being retrieved. If this parameter is set to NULL, and PropertyBufferSize is also set to zero, the function returns the required size for the buffer in RequiredSize.
PropertyBufferSize [in]
The size, in bytes, of the PropertyBuffer buffer.
RequiredSize [out, optional]
A pointer to a variable of type DWORD that receives the required size, in bytes, of the PropertyBuffer buffer that is required to hold the data for the requested property. This parameter is optional and can be NULL.
Return value
SetupDiGetDeviceRegistryProperty returns TRUE if the call was successful. Otherwise, it returns FALSE and the logged error can be retrieved by making a call to GetLastError. SetupDiGetDeviceRegistryProperty returns the ERROR_INVALID_DATA error code if the requested property does not exist for a device or if the property data is not valid.
AnswerRe: SetupDiGetDeviceRegistryProperty - buffer size? PinmvpRichard MacCutchan27-Nov-12 7:50 
AnswerRe: SetupDiGetDeviceRegistryProperty - buffer size? PinmemberJochen Arndt27-Nov-12 23:54 
GeneralRe: SetupDiGetDeviceRegistryProperty - buffer size? PinmemberVaclav_Sal28-Nov-12 5:50 
GeneralRe: SetupDiGetDeviceRegistryProperty - buffer size? PinmemberJochen Arndt28-Nov-12 6:35 
GeneralRe: SetupDiGetDeviceRegistryProperty - buffer size? PinmemberVaclav_Sal28-Nov-12 8:03 
GeneralRe: SetupDiGetDeviceRegistryProperty - buffer size? PinmemberJochen Arndt28-Nov-12 9:19 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.


Advertise | Privacy | Mobile
Web04 | 2.8.141223.1 | Last Updated 29 Dec 2014
Copyright © CodeProject, 1999-2014
All Rights Reserved. Terms of Service
Layout: fixed | fluid