386{
389 DWORD i, dwReturnCount, dwReturnLength;
394
395 DPRINT(
"Server_RequestParams(%S %p %p %p %p)\n",
396 AdapterName, ClassId, SendParams, RecdParams, RecdResults);
397
398#if 0
399 if (SendParams !=
NULL)
400 {
401 DPRINT1(
"SendParams nParams %lu Params %p\n", SendParams->nParams, SendParams->Params);
402 for (
i = 0;
i < SendParams->nParams;
i++)
403 {
404 DPRINT1(
"SendParam %lu: Option %lu Vendor %u\n",
i, SendParams->Params[
i].OptionId, SendParams->Params[
i].IsVendor);
405 }
406 }
407
408 if (RecdParams !=
NULL)
409 {
410 DPRINT1(
"RecdParams nParams %lu Params %p\n", RecdParams->nParams, RecdParams->Params);
411 for (
i = 0;
i < RecdParams->nParams;
i++)
412 {
413 DPRINT1(
"RecdParam %lu: Option %lu Vendor %u\n",
i, RecdParams->Params[
i].OptionId, RecdParams->Params[
i].IsVendor);
414 }
415 }
416#endif
417
419
422 {
423 DPRINT1(
"Adapter not found\n");
425 goto done;
426 }
427
428 DPRINT(
"Adapter: %p\n", Adapter);
429
431 {
432 DPRINT1(
"Adapter is not in S_BOUND state!\n");
434 goto done;
435 }
436
437 dwReturnCount = 0;
438 dwReturnLength = 0;
439
442 {
444 for (
i = 0;
i < RecdParams->nParams;
i++)
445 {
446 OptionId = RecdParams->Params[
i].OptionId;
447 if (RecdParams->Params[
i].IsVendor ==
FALSE)
448 {
451 {
452 dwReturnLength +=
Options[OptionId].len;
453 dwReturnCount++;
454 }
455 }
456 else
457 {
459 {
460 DPRINT(
"Have vendor options!\n");
463 OptionId);
464 if (OptionPtr)
465 {
466 DPRINT(
"Vendor option %lu: Length %lu\n", OptionId, (
DWORD)*(OptionPtr + 1));
467 dwReturnLength += (
DWORD)*(OptionPtr + 1);
468 dwReturnCount++;
469 }
470 }
471 }
472 }
473
474 DPRINT(
"Return count: %lu Return length: %lu\n", dwReturnCount, dwReturnLength);
475
478 {
479 DPRINT1(
"Result allocation failed!\n");
481 goto done;
482 }
483
484 Results->ResultsCount = dwReturnCount;
487 {
488 DPRINT1(
"Results allocation failed!\n");
490 goto done;
491 }
492
493 Results->DataSize = dwReturnLength;
496 {
497 DPRINT1(
"Data allocation failed!\n");
499 goto done;
500 }
501
504 for (
i = 0;
i < RecdParams->nParams;
i++)
505 {
506 OptionId = RecdParams->Params[
i].OptionId;
507
508 if (RecdParams->Params[
i].IsVendor ==
FALSE)
509 {
512
514
516 {
521
523
526 }
527 }
528 else
529 {
531 {
532 DPRINT1(
"Have vendor options!\n");
535 OptionId);
536 if (OptionPtr)
537 {
539 Data = (OptionPtr + 2);
540
542
547
549
552 }
553 }
554 }
555 }
556
558 }
559
560done:
562
564}
static PBYTE GetVendorOption(_In_ PBYTE Data, _In_ ULONG Length, _In_ ULONG OptionId)
#define DHO_VENDOR_ENCAPSULATED_OPTIONS
#define ERROR_NOT_ENOUGH_MEMORY
void __RPC_FAR *__RPC_USER MIDL_user_allocate(SIZE_T len)
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
macro TEXTAREA section xr p2align endm macro DATAAREA section dw endm macro RODATAAREA section dr endm macro EXPORT Attribute global Name endm macro IMPORT Target ifc WEAK weak Name set Target endif endm set macro SET_COMDAT_ALIGNMENT Alignment set Alignment endm macro NESTED_ENTRY Name global Name p2align xr p2align __ComdatAlignment NESTED_ENTRY Name endm macro ALTERNATE_ENTRY Name global Name Results
_In_ NDIS_STATUS _In_ ULONG _In_ USHORT _In_opt_ PVOID _In_ ULONG DataSize
_In_ WDFCOLLECTION _In_ ULONG Index
_In_ PWDFDEVICE_INIT _In_ PWDF_REMOVE_LOCK_OPTIONS Options