#include <windows.h>
#include <stdio.h>
#include <assert.h>
+#include <sddl.h>
void print_devmode(DEVMODE *pDevModeIn)
{
return;
}
-void print_sid(const char* str, SID *sid)
+void PrintLastError();
+
+void print_sid(LPSTR str, PSID sid)
{
- DWORD i = 0;
+ LPSTR sid_string;
printf("%s\n", str);
- printf("0x%x\n", sid);
- if (sid == NULL)
+
+ if (sid == NULL) {
+ printf("(null sid)\n");
+ return;
+ }
+
+ if (!ConvertSidToStringSid(sid, &sid_string)) {
+ PrintLastError();
return;
- printf("\t\tRevision\t\t0x%x\n", sid->Revision);
- printf("\t\tSubAuthorityCount\t0x%x\n", sid->SubAuthorityCount);
- printf("\t\tSubAuthority\n\t");
- while (i < sid->SubAuthorityCount) {
- printf("\t0x%x", sid->SubAuthority[i]);
- if (i%4 == 3)
- printf("\n\t");
- i++;
}
+ printf("%s\n", sid_string);
+ LocalFree(sid_string);
+
return;
}
printf("\tRevision\t= 0x%x\n", secdesc->Revision);
printf("\tSbz1\t\t= 0x%x\n", secdesc->Sbz1);
+ printf("\tControl\t\t= 0x%x\n", secdesc->Control);
#if 0
print_sid("\tOwner\t\t= ", secdesc->Owner);
print_sid("\tGroup\t\t= ",secdesc->Group);
printf("\tDevice Mode Information\n");
printf("\t-----------------------\n");
print_devmode(info->pDevMode);
-#if 0
printf("\tSecurity Descriptor Information\n");
printf("\t-------------------------------\n");
print_secdesc(info->pSecurityDescriptor);
-#endif
+ return;
+}
+
+void print_printer_info_3(PPRINTER_INFO_3 info)
+{
+ printf("\tSecurity Descriptor Information\n");
+ printf("\t-------------------------------\n");
+ print_secdesc(info->pSecurityDescriptor);
+ return;
+}
+
+void print_printer_info_4(PPRINTER_INFO_4 info)
+{
+ printf("\tServer Name\t\t= %s\n", info->pServerName);
+ printf("\tPrinter Name\t\t= %s\n", info->pPrinterName);
+ printf("\tAttributes\t\t= 0x%x\n", info->Attributes);
return;
}
PPRINTER_INFO_6 buffer6 = NULL;
PPRINTER_INFO_7 buffer7 = NULL;
PPRINTER_INFO_8 buffer8 = NULL;
+ PPRINTER_INFO_9 buffer9 = NULL;
if (!buffer) {
return;
case 8:
buffer8 = (PPRINTER_INFO_8)buffer;
break;
+ case 9:
+ buffer9 = (PPRINTER_INFO_9)buffer;
+ break;
default:
break;
}
printf("\n");
}
break;
-#if 0
case 3:
for (i=0; i<count; i++) {
print_printer_info_3(&buffer3[i]);
printf("\n");
}
break;
-#endif
case 5:
for (i=0; i<count; i++) {
print_printer_info_5(&buffer5[i]);
printf("\n");
}
break;
+ case 9:
+ for (i=0; i<count; i++) {
+ print_printer_info_9(&buffer9[i]);
+ printf("\n");
+ }
+ break;
default:
break;
}