Я искал последние 12 часов или около того и не думаю, что на этом этапе я даже на правильном пути или правильно формулирую свои поиски.Я надеюсь, что кто-то может указать мне правильное направление здесь.
Я пытаюсь получить доступ к функции в неуправляемой библиотеке, которая принимает в качестве одного из своих параметров массив DWORD фиксированного размера, и я не уверенкак это указать в декларации или звонить.Я также не уверен, что документация для этой функции верна (или если я ее понимаю).
int EloGetScreenInfo(DWORD dwMonNum[32], int iScrCnt)
Параметры: dwMonNum [in]
: Массив DWORD дляполучить номер монитора Windows, связанный с сенсорными экранами.
iScrCnt [out]
: он возвращает общее количество найденных сенсорных экранов Elo.
Возвращаемые значения: Возвращает EloSuccess, если вызов завершается успешно, он возвращает ошибкукод в противном случае.Список значений ошибок см. В разделе «Коды ошибок».
Примечания:
Возвращает список номеров мониторов Windows, связанных с сенсорными экранами, где индекс - это номер сенсорного экрана, а значение - Windows.номер монитора.
Сенсорные экраны основаны на 0, а номера мониторов Windows - на основе 1.
Если сенсорный экран не откалиброван, монитор Windows возвращается как -1.
Максимумиз 32 сенсорных экранов поддерживаются.
Обратите внимание, что в описании говорится, что он возвращает список номеров мониторов, который предполагает, что это будет заполненное значение, но в описании параметров он показывает, что как[in]
и параметр count как [out]
, если только я неправильно интерпретирую описания.В ссылке «См. Также пример» приведен пример использования, при котором оба варианта, похоже, заполнены
DWORD dwEnumMon[MAX_SUPPORTED_SCR] ;
int iScrCnt, iRet ;
ZeroMemory( dwEnumMon, MAX_SUPPORTED_SCR ) ;
ZeroMemory( dwMonParam, MAX_SUPPORTED_SCR ) ;
// Get the list of all Elo Serial & USB screen and monitor association
iRet = EloGetScreenInfo(dwEnumMon,iScrCnt) ;
if(iRet != EloSuccess ){
printf( "Error Code = %d \n", iRet ) ;
return EloFailure;
}
else
if(iScrCnt<0){
printf( "No Elo touchscreens found\n" ) ;
return EloFailure;
}
// Process Commandline
ProcessCmdLine( argc, argv ) ;
// For all screens of matching monitor number enable / disable touch
for( int i=0; i<dwMonParamCnt; i++ ){
// where j is the screen number associated with the monitor number
for( int j=0; j<iScrCnt; j++ ){
if( dwMonParam[i] == dwEnumMon[j] ){
// Enables / Disables touch depending on the bFlag
// where j is the screen number
if( (iRet = EloSetTouchReportingState( bEnable , j )) == EloSuccess )
printf( "EloSetTouchReportingState Returned success\n" );
else
printf( "EloSetTouchReportingState Returned failed. Error \ Code=%d\n", iRet );
}
}
}
return EloSuccess;
TIA для любого направления или помощи, которую вы можете предоставить