Click here to Skip to main content
15,348,375 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
GeneralRe: How To Use Macro In dsp file(VC6.0 *.dsp file) Pin
Albert Holguin29-Nov-12 4:55
professionalAlbert Holguin29-Nov-12 4:55 
QuestionA class for operations with Large Integer Numbers Pin
Pahanuch27-Nov-12 12:39
MemberPahanuch27-Nov-12 12:39 
AnswerRe: A class for operations with Large Integer Numbers Pin
Albert Holguin27-Nov-12 16:34
professionalAlbert Holguin27-Nov-12 16:34 
AnswerRe: A class for operations with Large Integer Numbers Pin
Stefan_Lang28-Nov-12 3:01
mveStefan_Lang28-Nov-12 3:01 
QuestionSetupDiGetDeviceRegistryProperty - buffer size? Pin
Vaclav_27-Nov-12 6:39
MemberVaclav_27-Nov-12 6:39 
AnswerRe: SetupDiGetDeviceRegistryProperty - buffer size? Pin
Richard MacCutchan27-Nov-12 6:50
mveRichard MacCutchan27-Nov-12 6:50 
AnswerRe: SetupDiGetDeviceRegistryProperty - buffer size? Pin
Jochen Arndt27-Nov-12 22:54
professionalJochen Arndt27-Nov-12 22:54 
GeneralRe: SetupDiGetDeviceRegistryProperty - buffer size? Pin
Vaclav_28-Nov-12 4:50
MemberVaclav_28-Nov-12 4:50 
Here is some of the "calling code", still in test development.( I know it is a mess. sorry)
If I just use this property DWORD Property = SPDRP_DEVICEDESC;
I still get error when looking for the buffewr size only,
but get the size OK.

Than I get another error - something "the parameter passed to the system is too small". I am trying to find some explanation for this error just for the SetupDiGetDeviceRegistryProperty.There are tons of posts about this error , but nothing specific for this function I found so far.

What bugs me is that ewerybody is copying the original MS device iteration sample code and set the buffer to value and when it fails ( allegedly for Win2000 only ) they increase it. That tells me that the setting for finding the buffer size may not really work, hence all these errors.

Thanks for all you help, appreciate it.




bool C_USB::C_Enumerate_All()
{
TRACE("\nbool C_USB::C_Enumerate_All()");
HDEVINFO hDevInfo;
SP_DEVINFO_DATA DeviceInfoData;
CString strLabel = "Friendly name ";
DWORD i;
TRACE("\nCreate a HDEVINFO with all present devices");
TRACE("\nSetupDiGetClassDevs... Create a HDEVINFO with all present devices");
hDevInfo = SetupDiGetClassDevs(
NULL,
0, // Enumerator
0,
DIGCF_PRESENT | DIGCF_ALLCLASSES);

if (INVALID_HANDLE_VALUE == hDevInfo)
{
TRACE("\nINVALID_HANDLE_VALUE == hDevInfo");
// Insert error handling here.
return 1;
}

// Enumerate through all devices in Set.
DeviceInfoData.cbSize = sizeof(SP_DEVINFO_DATA);
TRACE("\nSetupDiEnumDeviceInfo...Enumerate through all devices in Set");
/*
DeviceInfoSet [in]
A handle to the device information set for which to return an SP_DEVINFO_DATA
structure that represents a device information element.
MemberIndex [in]
A zero-based index of the device information element to retrieve.
DeviceInfoData [out]
A pointer to an SP_DEVINFO_DATA structure to receive information about
an enumerated device information element. The caller must
set DeviceInfoData.cbSize to sizeof(SP_DEVINFO_DATA).

*/
for (i = 0; SetupDiEnumDeviceInfo(hDevInfo, i, &DeviceInfoData); i++)
{
//LPTSTR buffer = NULL;
//DWORD buffersize = 0;
//TRACE("\nShow property using friendly name flag");
TRACE("\nTest show device description ");
DWORD Property = SPDRP_DEVICEDESC;

C_TestPrintProperty(
hDevInfo,
DeviceInfoData,
strLabel,
Property);
/* enumerate all properties test
do
{
C_TestPrintProperty(
hDevInfo,
DeviceInfoData,
strLabel,
Property);

// Property++;
TRACE("\nEnumerate property counter %i", Property);
}while (Property++ != SPDRP_MAXIMUM_PROPERTY);
*/

TRACE("\nEnumerate progress counter %i", i);
}



void C_USB::C_TestPrintProperty(
HDEVINFO hDevInfo,
SP_DEVINFO_DATA DeviceInfoData,
CString strLabel,
DWORD Property)
{
TRACE("\n void C_USB::C_TestPrintProperty(CString strLabel)");
DWORD DataT;
LPTSTR buffer = NULL;
DWORD buffersize = 2048; // 0;
int iCounter = 0;
bool bResult = false;


//buffer = (LPTSTR)LocalAlloc(LPTR, buffersize * 2);

TRACE("\nSetupDiGetDeviceRegistryProperty...");
TRACE("\nReturn required buffer size only ");
// Property = 0; //SPDRP_FRIENDLYNAME; // SPDRP_DEVTYPE; // SPDRP_COMPATIBLEIDS; // SPDRP_CLASS;

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

// check result
if(!bResult)
{
TRACE("\nMFC Error dialog ");
LPVOID lpMsgBuf;
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
GetLastError(),
0, // Default language
(LPTSTR) &lpMsgBuf,
0,
NULL
);
// Process any inserts in lpMsgBuf.
// ...
// Display the string.
MessageBox( (LPCTSTR)lpMsgBuf, "Error", MB_OK | MB_ICONINFORMATION );
// Free the buffer.
LocalFree( lpMsgBuf );
goto TEMP;

}
if(buffersize)
{
TRACE("\nFill buffer with property data ");
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
// check result
if(!bResult)
{
TRACE("\nMFC Error dialog ");
LPVOID lpMsgBuf;
FormatMessage(
FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
GetLastError(),
0, // Default language
(LPTSTR) &lpMsgBuf,
0,
NULL
);
// Process any inserts in lpMsgBuf.
// ...
// Display the string.
MessageBox( (LPCTSTR)lpMsgBuf, "Error", MB_OK | MB_ICONINFORMATION );
// Free the buffer.
LocalFree( lpMsgBuf );

}

}
TEMP:
TRACE("\nBuffer %s ",buffer);
TRACE("\nProperty %i ",Property);
return;
GeneralRe: SetupDiGetDeviceRegistryProperty - buffer size? Pin
Jochen Arndt28-Nov-12 5:35
professionalJochen Arndt28-Nov-12 5:35 
GeneralRe: SetupDiGetDeviceRegistryProperty - buffer size? Pin
Vaclav_28-Nov-12 7:03
MemberVaclav_28-Nov-12 7:03 
GeneralRe: SetupDiGetDeviceRegistryProperty - buffer size? Pin
Jochen Arndt28-Nov-12 8:19
professionalJochen Arndt28-Nov-12 8:19 
GeneralRe: SetupDiGetDeviceRegistryProperty - buffer size? Pin
Vaclav_29-Nov-12 5:52
MemberVaclav_29-Nov-12 5:52 
GeneralRe: SetupDiGetDeviceRegistryProperty - buffer size? Pin
Jochen Arndt29-Nov-12 6:49
professionalJochen Arndt29-Nov-12 6:49 
GeneralRe: SetupDiGetDeviceRegistryProperty - buffer size? Pin
Vaclav_29-Nov-12 8:23
MemberVaclav_29-Nov-12 8:23 
GeneralRe: SetupDiGetDeviceRegistryProperty - buffer size? Pin
Jochen Arndt29-Nov-12 21:16
professionalJochen Arndt29-Nov-12 21:16 
GeneralRe: SetupDiGetDeviceRegistryProperty - buffer size? Pin
Vaclav_30-Nov-12 2:43
MemberVaclav_30-Nov-12 2:43 
AnswerRe: SetupDiGetDeviceRegistryProperty - buffer size? Pin
Cristian Amarie3-Dec-12 8:58
MemberCristian Amarie3-Dec-12 8:58 
GeneralRe: SetupDiGetDeviceRegistryProperty - buffer size? Pin
Vaclav_3-Dec-12 12:39
MemberVaclav_3-Dec-12 12:39 
GeneralRe: SetupDiGetDeviceRegistryProperty - buffer size? Pin
Cristian Amarie3-Dec-12 17:37
MemberCristian Amarie3-Dec-12 17:37 
GeneralRe: SetupDiGetDeviceRegistryProperty - buffer size? Pin
Cristian Amarie3-Dec-12 18:52
MemberCristian Amarie3-Dec-12 18:52 
GeneralRe: SetupDiGetDeviceRegistryProperty - buffer size? Pin
Vaclav_4-Dec-12 5:58
MemberVaclav_4-Dec-12 5:58 
GeneralRe: SetupDiGetDeviceRegistryProperty - buffer size? Pin
Cristian Amarie4-Dec-12 7:11
MemberCristian Amarie4-Dec-12 7:11 
QuestionShred a folder Pin
MehdiHazrati26-Nov-12 20:52
MemberMehdiHazrati26-Nov-12 20:52 
QuestionRe: Shred a folder Pin
David Crow27-Nov-12 3:57
MemberDavid Crow27-Nov-12 3:57 
AnswerRe: Shred a folder Pin
MehdiHazrati27-Nov-12 4:26
MemberMehdiHazrati27-Nov-12 4:26 

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

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